GUI编程

GUI是什么?

简介:GUI是一个比较古老的图形化页面,是最早用于JDK1.2来进行窗口绘制的工具,运行这个窗口需要JRE环境,并且相对于现在的窗口来说,是不美观的,但里面包含了事件监听.

Swing的核心:Swing AWT

AWT:

AWT包含了创建用户界面和绘制图形和图像的所有类,同时也提供了GUI编程的核心控件和组件如:窗口按钮文本框,结构如下:

容器与组件

Frame:

Frame是window下的一个窗口组件,可以使用这个组件来完成第一个窗口:

package com.text;

import java.awt.*;

public class test42 {
    public static void main(String[] args) {
        //设置窗口
        MyFrame myFrame1=new MyFrame(200,200,100,100,Color.blue,false);
        MyFrame myFrame2=new MyFrame(200,200,300,100,Color.red,false);
        MyFrame myFrame3=new MyFrame(200,200,100, 300, Color.CYAN,false);
        MyFrame myFrame4=new MyFrame(200,200,300, 300, Color.green,false);
    }
}

//窗口类
class MyFrame extends Frame{
    private static int id=1;

    public MyFrame(int width,int height,int x,int y,Color color,boolean change){
        super("我的第"+(id++)+"个窗口");
        //创建窗口对象
        Frame frame=new Frame();
        //设置可见
        frame.setVisible(true);
        //设置大小
        frame.setSize(width,height);
        //设置背景颜色
        frame.setBackground(color);
        //设置出现位置
        frame.setLocation(x,y);
        //设置是否不可改变窗口
        frame.setResizable(change);
    }

}

Panel:

解决了关闭事件

package com.text;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class test44 {
    public static void main(String[] args) {
        //创建窗口和面板
        Frame frame=new Frame("你好");
        Panel panel=new Panel();
        //设置Frame布局为空
        frame.setLayout(null);
        //设置窗口
        frame.setBounds(100,100,300,300);
        frame.setBackground(Color.BLACK);
        //设置面板相对与frame布局
        panel.setBounds(100,100,100,100);
        panel.setBackground(Color.GREEN);
        frame.add(panel);//添加面板,因为Panel是基继承Component类的所以可以添加
        frame.setVisible(true);//设置可见
        //监听事件点击关闭则关闭窗口
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

    }
}

布局管理

流式布局:awt中提供了FlowLayout()流式布局

package com.text;

import java.awt.*;

public class test45 {
    public static void main(String[] args) {
        Frame frame=new Frame();
        Button button1=new Button("button1");
        Button button2=new Button("button2");
        Button button3=new Button("button2");
        button1.setSize(10,10);
        button2.setSize(10,10);
        button3.setSize(10,10);
        //设置流式布局
        frame.setLayout(new FlowLayout(FlowLayout.TRAILING));//里面的参数FlowLayout.CENTER(居中)FlowLayout.LEADING(左对齐)FlowLayout.RIGHT(右对齐)

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.setVisible(true);
    }
}

东西南北中布局: awt中提供了BorderLayout类进行布局

package com.text;


import java.awt.*;

public class test46 {
    public static void main(String[] args) {
        Frame frame=new Frame();
        Button button1=new Button("CENTER");
        Button button2=new Button("NORTH");
        Button button3=new Button("EAST");
        Button button4=new Button("SOUTH");
        Button button5=new Button("WEST");

        frame.add(button1,BorderLayout.CENTER);//中
        frame.add(button2,BorderLayout.NORTH);//北
        frame.add(button3,BorderLayout.EAST);//东
        frame.add(button4,BorderLayout.SOUTH);//南
        frame.add(button5,BorderLayout.WEST);//西

        frame.setSize(200,200);
        frame.setVisible(true);
    }
}

表格布局:GridLayout

package com.text;

import java.awt.*;

public class test48 {
    public static void main(String[] args) {
        Frame frame=new Frame();
        frame.setLayout(new GridLayout(2,2));//表示两行两列
        Button button1=new Button();
        Button button2=new Button();
        Button button3=new Button();
        Button button4=new Button();

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.setVisible(true);
    }
}

练习:

使用混合布局实现以下布局:

 答案:

package com.text;

import java.awt.*;

public class test47 {
    public static void main(String[] args) {
        //设置窗口
        Frame frame=new Frame();

        Panel panel1=new Panel(new GridLayout(2,1));
        Panel panel2=new Panel(new BorderLayout());
        Panel panel3=new Panel(new GridLayout(2,2));
        Panel panel4=new Panel(new BorderLayout());
        //设置面板1,2
        Button button1=new Button("button");
        Button button2=new Button("button");
        Button button3=new Button("button");
        Button button4=new Button("button");

        panel1.add(button1);
        panel1.add(button2);
        panel2.add(button3,BorderLayout.WEST);//西
        panel2.add(panel1,BorderLayout.CENTER);//中
        panel2.add(button4,BorderLayout.EAST);//东

        //设置面板3,4
        Button button5=new Button("button");
        Button button6=new Button("button");
        Button button7=new Button("button");
        Button button8=new Button("button");
        Button button9=new Button("button");
        Button button10=new Button("button");

        panel3.add(button5);
        panel3.add(button6);
        panel3.add(button7);
        panel3.add(button8);

        panel4.add(button9,BorderLayout.WEST);//西
        panel4.add(panel3,BorderLayout.CENTER);//中
        panel4.add(button10,BorderLayout.EAST);//东

        frame.setLayout(new GridLayout(2,1));
        frame.add(panel2);
        frame.add(panel4);
        frame.pack();
        frame.setVisible(true);
    }
}

事件监听

按钮事件监听:ActionListener接口

package com.text;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class test49 {
    public static void main(String[] args) {
        Frame frame=new Frame();
        Button button1=new Button("static");
        Button button2=new Button("top");
        button1.addActionListener(new test());
        button2.addActionListener(new test());
        
        //添加监听事件
        frame.add(button1,BorderLayout.SOUTH);
        frame.add(button2,BorderLayout.NORTH);
        frame.pack();
        frame.setVisible(true);
    }
}

class test implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {//执行动作表示点击后会发生什么
        if (e.getActionCommand().equals("static")){//这里e.getActionCommand()表示获取的名字
            System.out.println("启动");
        }
        if (e.getActionCommand().equals("top")){
            System.out.println("停止");
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值