Java Swing界面 示例代码+效果

1.Swing

轻量级组件,由java编写

2.常用窗口

2.1 JFrame

JFrame是一个容器,是一个顶层窗口

常用方法:

setSize(int width, int height);
setLocation(int x, int y);//窗口距离屏幕左上角位置,默认(0,0)
setBounds(int x,int y,int width,int height) //设置窗⼝的初始位置是(a,b),窗⼝的宽是width,⾼是height。
setVisible(boolean b);//窗口是否可见,默认不可见
setResizable(boolean b);//窗口能否调整大小,默认可调整

JFrame的关闭方式

setDefaultCloseOperation(int op)

设置单击窗口右上角的×号后程序会如何处理,有以下四种:

DO_NOTHING_ON_CLOSE //什么也不做
HIDE_ON_CLOSE //隐藏当前窗⼝
DISPOSE_ON_CLOSE //隐藏当前窗⼝,并释放窗体占有的其他资源
EXIT_ON_CLOSE //结束窗⼝所在的应⽤程序

示例:

public class JFrameTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("JFrame");//创建窗口标题为JFrame的窗口框架
        jf.setSize(400, 300);//设置窗口大小,setSize(x, y)
        jf.setLocationRelativeTo(null);//设置窗口默认居中显示
        jf.setVisible(true);//设置窗口可见
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
}

2.2 JDialog

是从一个窗口弹出的另外一个窗口

构造函数:

JDialog();
JDialog(Frame f); // 指定⽗窗⼝
JDialog(Frame f, String title); // 指定⽗窗⼝ + 标题

常用来配合事件监听器,如点击注册按钮后,主窗口旁边弹出一个注册窗口。

常用方法:与JFrame类似。

3.常用面板

面板,一种容器,可以向容器中添加其他组件,但是它本身需已经被加入一个容器中。

3.1 JPanel

类:JPanel

构造方法:

JPanel();//默认布局管理,FlowLayout
JPanel(LayoutManagerLayout layout);//创建指定布局管理的面板

示例:

public class JFrameTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("JFrame");
        jf.setSize(400, 300);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel jp = new JPanel();
        JButton jb1 = new JButton("button1");
        JButton jb2 = new JButton("button2");

        jp.add(jb1); jp.add(jb2);//将按钮添加进面板中
        jf.add(jp);//再将面板添加进窗口这个容器
    }
}

在这里插入图片描述

4.常用组件

4.4单选按钮组件

类:JRadioButton ButtonGroup

说明:单选按钮,需要将按钮加入到按钮组中,否则无法单选

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new FlowLayout());
        jf.setSize(600, 400);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JRadioButton jrb = new JRadioButton("男");
        JRadioButton jrb2 = new JRadioButton("女");
        ButtonGroup group = new ButtonGroup();
        group.add(jrb);
        group.add(jrb2);

        jf.add(jrb);
        jf.add(jrb2);

在这里插入图片描述

4.5复选按钮

类:JCheckBox

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new FlowLayout());
        jf.setSize(600, 400);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JCheckBox jcb = new JCheckBox("编程");
        JCheckBox jcb2 = new JCheckBox("睡觉");
        JCheckBox jcb3 = new JCheckBox("上课");

        jf.add(jcb);
        jf.add(jcb2);
        jf.add(jcb3);

在这里插入图片描述

4.6下拉列表组件

类:JComboBox

方法:addItem

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new FlowLayout());
        jf.setSize(600, 400);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JComboBox box = new JComboBox();
        box.addItem("--请选择学历--");
        box.addItem("高中");
        box.addItem("大学");
        box.addItem("研究生");
        jf.add(box);

在这里插入图片描述

4.7菜单栏

创建菜单条:JMenuBar

创建菜单:JMenu

创建菜单项:JMenuItem

总结:菜单项添加到菜单中,菜单添加到菜单条中。

示例:

        JMenuBar bar = new JMenuBar();
        JMenu menu1 = new JMenu("菜单一");
        JMenu menu2 = new JMenu("菜单二");
        JMenu menu3 = new JMenu("菜单三");
        JMenuItem item1 = new JMenuItem("选项一");
        JMenuItem item2 = new JMenuItem("选项二");
        JMenuItem item3 = new JMenuItem("选项三");
        JMenuItem item4 = new JMenuItem("选项三");
        JMenuItem item5 = new JMenuItem("选项三");
        JMenuItem item6 = new JMenuItem("选项三");

        menu1.add(item1);
        menu1.add(item2);
        menu1.add(item3);
        menu2.add(item4);
        menu2.add(item5);
        menu3.add(item6);
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        jf.add(bar);

在这里插入图片描述

4.8文本组件

类:JTextField

构造方法:

JTextField();
JTextField(String txt); //指定默认文字
JTextField(int fieldWidth); //指定文本框长度
JTextField(String txt, int fieldWidth);

示例:

        JTextField txt = new JTextField(22);
        JLabel lable = new JLabel("账号");
        jf.add(lable);
        jf.add(txt);

在这里插入图片描述

4.9密码框组件

JPasswordField

构造方法:同文本组件

其他方法:setEchoChar(),默认为黑点

示例:

        JPasswordField pswd = new JPasswordField("",20);
        JLabel lable2 = new JLabel("密码");
        jf.add(lable2);
        jf.add(pswd);

在这里插入图片描述

4.10文本域组件

JTextArea

构造方法:

JTextArea();
JTextArea(String txt);
JTextArea(int rows, int cols);//行列

其他方法:

setLineWrap();//设置文本是否自动换行
getText();//获取文本

示例:

        JTextArea area = new JTextArea(10,40);
        area.setLineWrap(true);
        jf.add(area);

在这里插入图片描述

5.常用布局

5.1流布局

所有组件就像流一样,一个个排放,一行放满了放下一行。默认下,组件居中排列的。

构造方法:

FlowLayout();
FlowLayout(int aligment);
//默认为FlowLayout.CENTER,一般设置为FlowLayout.LEFT

aligemnt取值:
FlowLayout.LEFT = 0
FlowLayout.CENTER = 1
FlowLayout.RIGHT = 2

通过setLayout()设置布局,

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setSize(600, 600);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JButton jb1 = new JButton("A");
        JButton jb2 = new JButton("B");
        JButton jb3 = new JButton("C");
        JButton jb4 = new JButton("D");
        JButton jb5 = new JButton("E");

        jf.add(jb1);
        jf.add(jb2);
        jf.add(jb3);
        jf.add(jb4);
        jf.add(jb5);

在这里插入图片描述

5.2边界布局

该布局是默认的布局方式,将容器分成了东西南北中五个区域

1.在new的时候指定内容

2.在给JFrame容器add组件时指定边界。

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new BorderLayout());//这里注意设置为边界布局
        jf.setSize(600, 600);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JButton jb1 = new JButton("北");
        JButton jb2 = new JButton("东");
        JButton jb3 = new JButton("南");
        JButton jb4 = new JButton("西");
        JButton jb5 = new JButton("中");

        jf.add(jb1, BorderLayout.NORTH);
        jf.add(jb2, BorderLayout.EAST);
        jf.add(jb3, BorderLayout.SOUTH);
        jf.add(jb4, BorderLayout.WEST);
        jf.add(jb5, BorderLayout.CENTER);

在这里插入图片描述

5.3网格布局

将容器划分为网络,所有组件按照行和列排列

构造方法:

GridLayout(int rows, int cols);
GridLayout(int rows, int cols, int horizGap, int vertGap);//水平间隔,垂直间隔

示例:

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new GridLayout(3, 3, 10, 10));
        jf.setSize(600, 600);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JButton jb1 = new JButton("A");
        JButton jb2 = new JButton("B");
        JButton jb3 = new JButton("C");
        JButton jb4 = new JButton("D");
        JButton jb5 = new JButton("E");

        jf.add(jb1);
        jf.add(jb2);
        jf.add(jb3);
        jf.add(jb4);
        jf.add(jb5);

在这里插入图片描述

6.常用事件监听器

事件模型的三个对象:事件源,事件,监听程序。

事件源:事件发生的地方,如点击按钮,按钮即为事件源

事件:要发生的事情

事件处理:对发生的事情做出的处理方案

事件监听:把事件源和事件关联起来

动作事件监听:ActionEvent,事件源:JButton,JList,JTextField等,方法:addActionListener();

焦点事件监听:FocusEvent,事件源:Component及其派生,方法:addFocusListener();

示例:点击按钮文本框中出现文字

        JFrame jf = new JFrame("JFrame");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setSize(600, 600);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JTextArea area = new JTextArea(10,20);
        area.setLineWrap(true);
        JButton button = new JButton("点击按钮生成文字");
        button.addActionListener(e->{
            area.append("年轻人好自为之");
        });
        jf.add(area);
        jf.add(button);

在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值