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);

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java Swing登录注册界面的设计与代码示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class LoginAndRegister extends JFrame implements ActionListener { // 登录界面组件 JLabel loginLabel = new JLabel("用户名:"); JTextField loginText = new JTextField(20); JLabel passwordLabel = new JLabel("密码:"); JPasswordField passwordText = new JPasswordField(20); JButton loginButton = new JButton("登录"); JButton registerButton = new JButton("注册"); JPanel loginPanel = new JPanel(); // 注册界面组件 JLabel registerLabel = new JLabel("请填写注册信息:"); JLabel registerUserLabel = new JLabel("用户名:"); JTextField registerUserText = new JTextField(20); JLabel registerPasswordLabel = new JLabel("密码:"); JPasswordField registerPasswordText = new JPasswordField(20); JLabel registerConfirmPasswordLabel = new JLabel("确认密码:"); JPasswordField registerConfirmPasswordText = new JPasswordField(20); JButton confirmButton = new JButton("确认"); JButton cancelButton = new JButton("取消"); JPanel registerPanel = new JPanel(); public LoginAndRegister() { super("登录/注册"); // 设置组件大小和布局 setSize(400, 250); loginPanel.setLayout(new GridLayout(3, 2)); registerPanel.setLayout(new GridLayout(5, 2)); // 添加登录界面组件 loginPanel.add(loginLabel); loginPanel.add(loginText); loginPanel.add(passwordLabel); loginPanel.add(passwordText); loginPanel.add(loginButton); loginPanel.add(registerButton); add(loginPanel); // 添加注册界面组件 registerPanel.add(registerLabel); registerPanel.add(new JLabel("")); registerPanel.add(registerUserLabel); registerPanel.add(registerUserText); registerPanel.add(registerPasswordLabel); registerPanel.add(registerPasswordText); registerPanel.add(registerConfirmPasswordLabel); registerPanel.add(registerConfirmPasswordText); registerPanel.add(confirmButton); registerPanel.add(cancelButton); // 监听按钮事件 loginButton.addActionListener(this); registerButton.addActionListener(this); confirmButton.addActionListener(this); cancelButton.addActionListener(this); // 设置窗口居中显示 setLocationRelativeTo(null); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == loginButton) { // 处理登录按钮事件 String username = loginText.getText(); String password = new String(passwordText.getPassword()); // TODO: 处理登录逻辑 } else if (e.getSource() == registerButton) { // 切换到注册界面 getContentPane().remove(loginPanel); getContentPane().add(registerPanel); getContentPane().validate(); } else if (e.getSource() == confirmButton) { // 处理注册按钮事件 String username = registerUserText.getText(); String password = new String(registerPasswordText.getPassword()); String confirmPassword = new String(registerConfirmPasswordText.getPassword()); // TODO: 处理注册逻辑 } else if (e.getSource() == cancelButton) { // 切换到登录界面 getContentPane().remove(registerPanel); getContentPane().add(loginPanel); getContentPane().validate(); } } public static void main(String[] args) { new LoginAndRegister(); } } ``` 以上代码中,`LoginAndRegister` 类继承自 `JFrame`,实现了 `ActionListener` 接口,用于监听按钮事件。登录界面和注册界面都用了 `JPanel` 来布局,然后根据按钮事件来切换界面。登录按钮和注册按钮的事件处理逻辑需要根据实际情况来编写。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值