java GUI入门(虽然用的不多,但仍然可以学习里面的思想)

1.awt:java中的组件,包含GUI的很多类和接口:在java.awt.*中

frame:窗口:

public class myFrame extends Frame {
    public static int id = 0;
    public myFrame(int x,int y,int w,int h,Color color){//这里的color是个类
        super("这是我第" + (++id) + "个frame");//title,frame的构造函数
        setLayout(null);//布局要默认为null,否则面板的背景会全部覆盖窗口
        setBounds(x,y,w,h);//设置起始位置坐标(x,y),窗口大小(w,h);
        setVisible(true);//可视化
        setBackground(color);//背景颜色
        setResizable(false);//固定窗口大小
        addWindowListener(new WindowAdapter() {//监听事件,在点叉的时候退出程序,适配器模式,只用重写需要的方法
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

panel:面板(嵌套在窗口里)操作与窗口相同

import java.awt.*;
public class mypanel extends Panel{
    public mypanel(int x,int y,int w,int h,Color color){
        setBounds(x,y,w,h);
        setBackground(color);
    }
}

布局:setLayout()

有三种:流式布局,东西南北中,表格布局

流式结构 FlowLayout()

        Button bt1 = new Button("bt1");
        Button bt2 = new Button("bt2");
        Button bt3 = new Button("bt3");
        myframe1.setLayout(new FlowLayout());//居中,靠左为new FlowLayout(FlowLayout.left),靠右为right
        myframe1.add(bt1);
        myframe1.add(bt2);
        myframe1.add(bt3);

东西南北中BorderLayout()

        Button bt1 = new Button("east");
        Button bt2 = new Button("west");
        Button bt3 = new Button("south");
        Button bt4 = new Button("north");
        Button bt5 = new Button("center");
        myframe1.setLayout(new BorderLayout());
        myframe1.add(bt1,BorderLayout.EAST);
        myframe1.add(bt2,BorderLayout.WEST);
        myframe1.add(bt3,BorderLayout.SOUTH);
        myframe1.add(bt4,BorderLayout.NORTH);
        myframe1.add(bt5,BorderLayout.CENTER);

表格结构Gridlayout()

        Button bt1 = new Button("bt1");
        Button bt2 = new Button("bt2");
        Button bt3 = new Button("bt3");
        Button bt4 = new Button("bt4");
        Button bt5 = new Button("bt5");
        Button bt6 = new Button("bt6");
        myframe1.setLayout(new GridLayout(3,2));//三行两列
        myframe1.add(bt1);
        myframe1.add(bt2);
        myframe1.add(bt3);
        myframe1.add(bt4);
        myframe1.add(bt5);
        myframe1.add(bt6);

事件监听:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class myActionlistener implements ActionListener {
    @Override//重写方法,因为Actionlistener是个接口
    public void actionPerformed(ActionEvent e) {
        System.out.println(e.getModifiers());//e是一个对象,所以可以用.来调用方法
    }
}

文本框:TextField()//TextArea()是文本域

通过事件获取文本框输入内容:

public class myActionlistener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        TextField wenben = (TextField) e.getSource();
        System.out.println(wenben.getText());
    }
}

画笔:重写方法paint()

@Override
    public void paint(Graphics g) {
        g.setColor(Color.red);//设置颜色
        g.draw3DRect(100,100,200,200,true);//画一个图形
    }

三大监听:窗口,鼠标,键盘

//用适配器模式可以减少代码量---》Adapater()
        this.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                myFrame frame = (myFrame) e.getSource();//把object类的对象强制转换成myFrame
                frame.addPoint(new Point(e.getX(),e.getY()));//获得的是当前鼠标的坐标
            }
        });
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                int key = e.getKeyCode();//
                if(e.getKeyCode() == KeyEvent.VK_UP){//都是编码类型,所以用getKeyCode()获取
                    System.out.println("VK_UP");
                }
            }
        });
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

3.swing

操作和awt差不多,只是把一些东西封装起来,可以更方便的调用

引入了容器的概念,改变颜色需要通过改变容器的颜色去实现。

其关闭窗口的事件被简化成了

this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

需要使用某一特定组件,上网查询即可实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值