GUI

GUI

在Swing组件中大多数GUI组件都是Component的直接子类或者间接子类

常用的Swing组件的概述
JButton 代表Swing按钮,按钮可以带有一些汉字或者图片
JLabel 代表Swing的标签组件
JTextArea 代表Swing中的文本区域
JOptionPane 代表Swing的对话框
JTextFiled 代表文本框
还有很多

常用的Swing窗体

JFranme窗体
这个窗体是一个容器,他是Swing程序中各个组件的载体,用它来承载这些组件,是一个承载着组件的容器。
在开发的时候,继承JFrame类来创建一个窗体,并且向这个窗体中添加组件,使之完整,同时为这些组件设置必要的事件。
JFrame类拥有最大化最小化以及关闭等按钮,这里的窗体同样继承这些按钮。

具体使用方法

package 作业;

import javax.swing.*;
import java.awt.*;

public class demo6 extends JFrame{
    public static void main(String[] args) {
        new demo6().creatJFranme("一个新的窗体");
    }

    public void creatJFranme(String title) {
        JFrame jf = new JFrame(title);//实例化一个对象
        Container cn = jf.getContentPane();//获取一个容器
        JLabel jl = new JLabel("这是一个标签");//创建一个标签
        //System.out.println(jl.getHorizontalTextPosition());
        //jl.setVisible(true);//设置窗口可视
        //cn.setLocation(200,200);
        jl.setHorizontalAlignment(SwingConstants.CENTER);

        cn.setBackground(Color.cyan);//首先设置你的背景颜色
        cn.add(jl);//添加你的标签
        cn.setSize(200,200);
        //cn.isVisible();
        cn.setVisible(true);
        //cn.add(jf);
        //System.out.println(cn.isVisible());
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }
}

在运用Frame类的时候,遇到一个问题,不能关闭程序
处理时需要监听鼠标点击
当点击关闭的时候,结束程序

frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
        //这段代码就是用来监听窗口关闭的时候需要做的事情

面板Panel

我个人理解
这个面板也是容器中的组件
将它添加到JFranme中
让他可以自己显示
用法如下

public class demo{
    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(Color.cyan);
        frame.setVisible(true);//设置可见性

        
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(193, 15, 60));
        //为这个panel面板设置坐标,这个坐标相对于frame

        frame.add(panel);//然后将面板添加到容器中
       
       }
  }

        
小总结
setBackground(color);//背景颜色的设定
setBounds(x,y,w,h);//容器大小的设置
setVisible(true);//设置可见性
setSize(a,b);//设置大小
setLocation(x,y);//设置弹出的位置
布局
public class demo2 {
    public static void main(String[] args) {
        Frame frame = new Frame();

        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");
        Button button4 = new Button("button4");
        Button button5 = new Button("button5");
        Button button6 = new Button("button6");

        //设置为流式布局
        //frame.setLayout(new FlowLayout());
        //frame.setLayout(new FlowLayout(FlowLayout.LEFT));
        frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//布局影响按钮
        //个人理解为 它位于你定义的位置,集中在一块

        frame.setSize(200,200);

        //把按钮添加上去
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.add(button6);
        frame.add(button5);//添加顺序影响按钮位置
        

        frame.setVisible(true);
        

       //还有东南西北中的格局和表格格局
       //具体操作方法和此格局类似

      //东南西北中的格局
        //frame.add(east,BorderLayout.EAST);
        //frame.add(west,BorderLayout.WEST);
        //frame.add(south,BorderLayout.SOUTH);
        //frame.add(north,BorderLayout.NORTH);
        //frame.add(center,BorderLayout.CENTER);


      //表格
      //frame.setLayout(new GridLayout(3,2));//先行后列。这个表示为3行2列
      //frame.add(button);
    }
}
监听功能

就像上面所述的关闭窗口功能就是一个监听,监听的是X的状态。

public class demo3{
    public static void main(String[] args) {
        Frame frame = new Frame();
        Button button = new Button();
        //因为,addActionListener()需要一个 ActionListener,所以我们需要构造一个 ActionListener
        MyActionListener myActionListener = new MyActionListener();
        button.addActionListener(myActionListener);

        frame.add(button,BorderLayout.CENTER);//位于中间,这个是东南西北中的布局
        frame.pack();//调整窗口的大小,使其适应组件的大小和布局。

        windowClose(frame); //关闭窗口
        frame.setVisible(true);


    }
    //这里定义关闭窗口的方法,作用相同
    private static void windowClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

}

//事件监听,监听的就是这个事件本身
class MyActionListener implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("aaabbb");
    }

}

监听输入框TextField监听

public class demo4 {
    public static void main(String[] args) {
        new MyFrame();
    }
}

class MyFrame extends Frame{
    public MyFrame(){
        TextField textField = new TextField();
        add(textField);

        //监听这个文本框输入的文字
        MyActionListener2 myActionListener2 = new MyActionListener2();
        //按下enter 就会触发这个输入框的事件
        textField.addActionListener(myActionListener2);

        //设置替换编码
        textField.setEchoChar('*');

        setVisible(true);
        pack();

    }
}

class MyActionListener2 implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        TextField field = (TextField) e.getSource();     //获得一些资源,返回的一个对象
        System.out.println(field.getText()); //获得输入框的文本
        field.setText(""); //null  ""
    }
}

还有很多监听方法和按钮之类的组合。

总结

Frame是一个顶级窗口,panel可以存在在它里面
大小定义,背景颜色定义,出现的位置,可见性,监听关闭功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值