首页 > 编程语言 >GUI编程

GUI编程

时间:2022-11-12 12:13:46浏览次数:70  
标签:BorderLayout GUI 编程 JButton add new frame Panel

学习文档:https://www.cnblogs.com/programthinking/p/13845265.html

学习视频:https://www.bilibili.com/video/BV1DJ411B75F/

 

2.1 AWT介绍

AWT Abstract Windows Tools 抽象窗口工具

GUI Graphical User Interface 图形用户接口

Frame

//GUI的第一个界面
public class TestFrame {
    public static void main(String[] args) {
        //使用时要学会点进去看源码
        Frame frame = new Frame("我的第一个Java图像界面");

        //需要设置可见性
        frame.setVisible(true);

        //设置窗口大小
        frame.setSize(400,400);

        //设置背景颜色
        //new Color(1,1,1);//自定义颜色
        frame.setBackground(Color.BLACK);

        //弹出的初始位置,(0,0)在左上角,为null居中
        frame.setLocation(200,200);
         //设置x叉可以关闭窗口
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //不允许放大缩小窗口
frame.setResizable(false); } }

布局

1.边界布局(BorderLayout)

          setLayout(new BorderLayout());   //边界布局
           JButton btn1 = new JButton("上");
           add(btn1,BorderLayout.NORTH);
           JButton btn2 = new JButton("下");
           add(btn2,BorderLayout.SOUTH);
           JButton btn3 = new JButton("左");
           add(btn3,BorderLayout.WEST);
           JButton btn4 = new JButton("右");
           add(btn4,BorderLayout.EAST);
           JButton btn5 = new JButton("中");
           add(btn5,BorderLayout.CENTER);

2.流式布局(FlowLayout)---占满一行后换行---居中

        setLayout(new FlowLayout());   //流式布局
        JButton btn[] = new JButton[10];
        for (int i = 0; i < btn.length; i++) {
            btn[i] = new JButton("第"+i+"个");
            add(btn[i]);
        }

3.网格布局(GridLayout)

        setLayout(new GridLayout(3,4,10,10));   //网格布局
        JButton btn[] = new JButton[10];
        for (int i = 0; i < btn.length; i++) {
            btn[i] = new JButton("第"+i+"个");
            add(btn[i]);
        }

Panel 

//Panel可以看成是一个空间,但不能单独存在
public class TestPanel {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //布局的概念
        Panel panel = new Panel();

        //设置布局
        frame.setLayout(null);

        //坐标
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(96, 255, 29, 255));

        //Panel设置坐标,相对于frame
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(0, 82, 255));

       //放进frame
        frame.add(panel);
        frame.setVisible(true);

        //监听事件,监听窗口关闭事件 System.exit(0);
        //适配器模式 不去new WindowListener 实现太全部的接口
        //而是去继承它的一个子类,子类有默认的实现,我们只写我们需要的那个功能

        //这是AWT的解决方式,后面还有swing的解决方式
        frame.addWindowListener(new WindowAdapter() {
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });

    }
}

public class Demo {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setSize(400,300);
        frame.setLocation(300,400);
        frame.setBackground(Color.BLACK);
        frame.setVisible(true);
        frame.setLayout(new GridLayout(2,1));

        //4个面板
        Panel panel1 = new Panel(new BorderLayout());
        Panel panel2 = new Panel(new GridLayout(2,1));
        Panel panel3 = new Panel(new BorderLayout());
        Panel panel4 = new Panel(new GridLayout(2,2));

        //上面
        panel1.add(new Button("East-1"),BorderLayout.EAST);
        panel1.add(new Button("East-2"),BorderLayout.WEST);
        panel2.add(new Button("p2-btn-1"));
        panel2.add(new Button("p2-btn-2"));
        panel1.add(panel2,BorderLayout.CENTER);

        //下面
        panel3.add(new Button("East-1"),BorderLayout.EAST);
        panel3.add(new Button("East-2"),BorderLayout.WEST);
        //中间的四个
        for (int i = 0; i < 4; i++) {
            panel4.add(new Button("btn"+i));
        }
        panel3.add(panel4,BorderLayout.CENTER);

        frame.add(panel1);
        frame.add(panel3);
    }
}

 

标签:BorderLayout,GUI,编程,JButton,add,new,frame,Panel
From: https://www.cnblogs.com/xinyu-yudian/p/16882961.html

相关文章

  • 编写C程序,实现顺序栈的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现顺序栈的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、栈的基本功能有:创......
  • 不同编程语言的“Hello World”
    当我们学习一门编程语言时,都是从“Hello,World!”开始。所有程序员在其职业生涯中,都至少接触过一个经典的“Hello,World!”程序。通常程序员会使用多种编程语言,多的甚至......
  • Spring —— AOP(面向切面编程)
    AOP(AspectOrientedProgramming)简介面向切面编程,一种编程范式,指导开发者如何组织程序结构作用:在不惊动原始设计的基础上为其进行功能增强Spring理念:无入侵式/无侵入式......
  • 结对编程 电梯调度
    任务要求:现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示,其使用规定如下:①楼层号为0~20,其中0号为地下一层②有楼层限制的电梯不在相应楼层停靠,......
  • windows socket网络编程--事件选择模型
    目录事件选择模型概述API详解工作原理代码实现事件选择模型概述Winsock提供了另一种有用的异步事件通知I/O模型——WSAEventSelect模型。这个模型与WSAAsyncSelect模型类......
  • 结对编程
    题目我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:能够自动生成四则运算练习题可以定制题目数量用户可以选择运算符用户设置最大数(......
  • UGUI 3D粒子特效裁剪,层级,适配
    Unity里默认的粒子特效是3D渲染方式的,而UGUI又是特殊的渲染方式。如果想在UI里直接放入粒子特效,会导致:分层问题,粒子特效的层级排序由Z轴以及sortlayer决定,而UI的层级排......
  • 盘点 | 2022值得学习的编程语言 TOP 7
     CDA数据分析师出品编译:Mika如果我们把人类文明想象成汽车的话,那么软件开发行业就相当于汽车的引擎,编程语言就像引擎的燃料。2021年很快就要结束了。如今,软件开发行......
  • vue中组件化编程
    组件化编程什么是组件化编程传统方式的编写模式组件化编程的模式组件是实现应用中局部功能代码和资源的集合vue中非单文件组件的基本使用点击查看代码<!--Vue......
  • 编程自测
      2017级《JAVA语言程序设计》  上机考试试题                 2019.01.10  考试要求 一、本试卷为2017级《JAVA......