用户登录界面(java+swing+mysql)(三)

1.创建一个界面

1.窗口的创立

JFrame frame=new JFrame("界面登录");
//设置颜色
frame.getContentPane().setBackground(Color.DARK_GRAY);
//设置布局为空
frame.setLayout(null);
//设置大小及初始位置
frame.setBounds(500,300,500,200);
//关闭窗口
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//窗口大小是否固定
frame.setResizable(false);
frame.setVisible(true);

1.JFrame()

JFrame frame=new JFrame("界面登录");

JFrame为添加一个界面

2.setBackground()

frame.getContentPane().setBackground(Color.DARK_GRAY);

因为JFrame不能直接添加组件,需要用getContentPane()函数获取内容面板,再在内容面板上进行添加组件。
然后进行背景颜色的设置

3…setBounds()

frame.setBounds(500,300,500,200);

窗口初始大小中四个参数表示窗口的位置与大小。

4.setResizable()

frame.setResizable(false);

当参数设为false时窗口可以调整大小,当参数设为true时,窗口始终保持初始大小

5. setVisible()

frame.setVisible(true);

在最后将显示窗口设为true,否则无法显示窗口

2.窗口的关闭方式

frame.setDefaultCloseOperation(参数);

1.WindowConstants.DO_NOTHING_ON_CLOSE

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

The do-nothing default window close operation
无操作默认窗口关闭操作

2.WindowConstants.HIDE_ON_CLOSE

frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);

The hide-window default window close operation
隐藏窗口默认的窗口关闭操作

3.WindowConstants.DISPOSE_ON_CLOSE

frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

The dispose-window default window close operation.
释放窗口默认窗口关闭操作

4.WindowConstants.EXIT_ON_CLOSE

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

The exit application default window close operation
退出应用程序时默认的窗口关闭操作

2.界面布局方法

frame.setLayout(参数)

1.边界布局 BorderLayout()

1.说明

frame.setLayout(new BorderLayout());

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH 、SOUTH 、EAST 、WEST 、CENTER。当使用边框布局将一个组件添加到容器中时,要使用五个常量之一

2.举例

BorderLayout borderLayout=new BorderLayout();
frame.setLayout(borderLayout);
borderLayout.setHgap(5);
borderLayout.setVgap(10);
//添加按钮
Button button=new Button("间距1");
frame.add(button,BorderLayout.WEST);
Button button1=new Button("间距2");
frame.add(button1,BorderLayout.NORTH);
Button button2=new Button("间距3");
frame.add(button2,BorderLayout.CENTER);

2.流式布局 FlowLayout()

1.说明

//流式布局
FlowLayout flowLayout=new FlowLayout();
//设置对齐方式
flowLayout.setAlignment(FlowLayout.RIGHT);
frame.setLayout(flowLayout);

流式布局用于安排有向流中的组件,流的方向取决于容器的componentOrientation属性,它可能是以下两个值中的一个:
流布局一般用于安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有合适的按钮。

2.举例

 //流式布局
FlowLayout flowLayout=new FlowLayout();
//设置对齐方式
flowLayout.setAlignment(FlowLayout.RIGHT);
frame.setLayout(flowLayout);
//设置按钮
Button button=new Button("按钮1");
Button button1=new Button("按钮2");
Button button2=new Button("按钮3");
frame.add(button);
frame.add(button1);
frame.add(button2);

3.卡片布局 CardLayout()

1.说明

CardLayout layout=new CardLayout();
frame.setLayout(layout);

CardLayout对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout对象的组件为可见组件。
卡片的顺序由组件对象本身在容器内部的顺序决定。CardLayout定义了一组方法,这些方法允许应用程序按顺序地浏览这些卡片,或者显示指定的卡片。

2.举例

//卡片布局
CardLayout layout=new CardLayout();
frame.setLayout(layout);
Button button=new Button("按钮1");
Button button1=new Button("按钮2");
Button button2=new Button("按钮3");
frame.add(button);
frame.add(button1);
frame.add(button2);

4.网格布局 GridLayout()

1.说明

GridLayout gridLayout=new GridLayout();
frame.setLayout(gridLayout);
//将排数设置为两排
gridLayout.setRows(2);

GridLayout类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分为大小相等的矩形,一个矩形中放置一个组件。
通过构造方法或 setRows 和 setColumns 方法将行数和列数都设置为非零值时,指定的列数将被忽略。列数通过指定的行数和布局中的组件总数来确定。

2.举例

//网格布局
GridLayout gridLayout=new GridLayout();
frame.setLayout(gridLayout);
//将排数设置为两排
gridLayout.setRows(2);
frame.setLayout(gridLayout);
for (int i = 0; i < 10; i++) {
frame.add(new Button(i+"号按钮"));
}

3.界面操作

1.分面板的使用

JSplitPane pane= new JSplitPane();
pane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);//横向分割
pane.setLeftComponent(new JScrollPane(tree));
pane.setRightComponent(new JScrollPane(area));
frame.add(pane);

使用分面板时我们可以对页面进行分割
分面板既可以左右分割又可以上下分割

2.多面板的使用

JTabbedPane pane=new JTabbedPane();
pane.addTab("一",new JPanel(){{setBackground(Color.ORANGE);}});
pane.addTab("二",new JPanel(){{setBackground(Color.pink);}});
frame.add(pane);

使用多面板时可以任意切换页面

4.各种组件的使用

1.标签

JLabel lab = new JLabel("标签中字体");

//将图片添加到标签中,"src/2.jpg"是图片的地址
Icon pic1 = new ImageIcon("src/2.jpg");
lab.setIcon(pic1);      

lab.setBounds(35, 35, 45, 45);   //设置标签的大小
lab.setOpaque(true);         //必须设置不透明,否则将不显示颜色
lab.setForeground(Color.ORANGE);   //设置标签中字体颜色
lab.setBackground(new Color(170,224,238));   //设置标签背景颜色

2.单行文本框

1.普通文本框

JTextField field=new JTextField();
field.setBounds(x,y,width,height);//设置位置
field.setFont(new Font("simSon", Font.BOLD,20));//设置字体及大小

2.密码框

JPasswordField passwordField=new JPasswordField();
passwordField.setBounds(x,y,width,height);
passwordField.setEchoChar('*');//文本显示为*号
passwordField.setFont(new Font("simSon", Font.BOLD,20));

3.文本域

JTextArea text = new JTextArea("文本区中文字");
text.setLineWrap(true);              //使文本区中的文字自动换行
text.setWrapStyleWord(true);
text.setEditable(false);          //设置不可编辑
text.setFont(font);
text.setBounds(35,90, 230, 80);

4.按钮

JButton bt=new JButton("按钮中字体");
bt.setBorderPainted(false);          //去掉按钮边界
bt.setForeground(Color.black);       //设置按钮中字体颜色
bt.setFont(font);                    //设置按钮中字体
bt.setOpaque(true);            //必须设置不透明,否则将不显示颜色        
bt.setBackground(new Color(255,236,242));     //设置按钮背景颜色
bt.setBounds(270,635,130,30);                //设置按钮的位置和大小

5.勾选框

JCheckBox checkbox=new JCheckBox("显示密码");
checkbox.setBounds(x,y,width,height);

6.单选框

// 创建单选钮
JRadioButton rdoMan = new JRadioButton("男");
JRadioButton rdoWoman = new JRadioButton("女");
// 创建按钮组
ButtonGroup group = new ButtonGroup();
group.add(rdoMan);
group.add(rdoWoman);
// 设置默认选择
rdoMan.setSelected(true);

7.表格

DefaultTableModel model = new DefaultTableModel();
model.addColumn("周六", new Vector<Integer>());
model.addColumn("周日", new Vector<Integer>());
model.addColumn("周一",new Vector<String>());
model.addColumn("周二",new Vector<String>());
model.addColumn("周三",new Vector<String>());
model.addColumn("周四", new Vector<String>());
model.addColumn("周五",new Vector<String>());
JTable table = new JTable(model);
//将表格放在滚动面板中
JScrollPane jp = new JScrollPane(table);
jp.setBounds(35, 190, 330, 73);
//设置水平和垂直滚动条
jp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
jp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//设置留有空白的表格行数,即30,调用方法addRow,添加列数调用方法addColumn()
for(int k = 0;k < 30 ;k ++) {
model.addRow(new Vector<Integer>());
}
model.setValueAt("123",2,3);
frame.add(jp);

5.对事件进行监听

1.窗口事件的监听

package listen;

import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * 功能:窗口事件演示
 */
public class WindowEventDemo extends JFrame {
    public static void main(String[] args) {
        // 创建窗口对象
        JFrame frame = new JFrame("窗体事件演示");

        // 设置窗口属性
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 给窗口注册监听器
        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                System.out.println("windowOpened--窗体打开事件");
            }

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing--窗体正在关闭事件");
            }

            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("windowClosed--窗体已关闭事件");
            }

            @Override
            public void windowIconified(WindowEvent e) {
                System.out.println("windowIconified--窗体图标化事件");
            }

            @Override
            public void windowDeiconified(WindowEvent e) {
                System.out.println("windowDeiconified--窗体取消图标化事件");
            }

            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated--窗体激活事件");
            }

            @Override
            public void windowDeactivated(WindowEvent e) {
                System.out.println("windowDeactivated--窗体停用事件");
            }
        });
    }
}

2.鼠标事件的监听

package listen;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * 功能:鼠标事件演示
 */
public class MouseEventDemo {
    public static void main(String[] args) {
        // 创建窗口对象
        JFrame frame = new JFrame("鼠标事件演示");
        // 设置窗口边界
        frame.setBounds(200, 200, 300, 200);
        // 设置屏幕居中(采用相对定位方式)
        frame.setLocationRelativeTo(null);
        // 设置窗口布局
        frame.setLayout(new FlowLayout());

        // 创建按钮对象
        JButton btnTest = new JButton("测试按钮");
        // 将按钮添加到窗口
        frame.add(btnTest);

        // 设置窗口可见
        frame.setVisible(true);
        // 设置默认关闭方式(关闭窗口就退出应用程序)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 给按钮注册鼠标监听器
        btnTest.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("mouseClicked--鼠标完成单击事件");
            }

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("mousePressed--鼠标按下事件");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("mouseReleased--鼠标放开事件");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("mouseEntered--鼠标进入按钮区域事件");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("mouseExited--鼠标移出按钮区域事件");
            }
        });
    }
}

3.按键事件的监听

package listen;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * 功能:按键事件演示
 */
public class KeyEventDemo {
    public static void main(String[] args) {
        // 创建窗口对象
        JFrame frame = new JFrame("按键事件演示");
        // 设置窗口边界
        frame.setBounds(200, 200, 300, 200);
        // 设置屏幕居中(采用相对定位方式)
        frame.setLocationRelativeTo(null);
        // 设置窗口布局
        frame.setLayout(new FlowLayout());

        // 创建文本框对象
        JTextField txtTest = new JTextField(15);
        // 将文本框添加到窗口
        frame.add(txtTest);

        // 设置窗口可见
        frame.setVisible(true);
        // 设置默认关闭方式(关闭窗口就退出应用程序)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 给文本框注册按键监听器
        txtTest.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyPressed(KeyEvent e) {
                // 获取按键字符
                char keyChar = e.getKeyChar();
                // 获取按键字符的键码
                int keyCode = e.getKeyCode();
                System.out.println("按键字符:" + keyChar + "\t按键代码:" + keyCode);
            }

            @Override
            public void keyReleased(KeyEvent e) {
            }
        });
    }
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的用户登录窗口的JFrame制作示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class LoginFrame extends JFrame implements ActionListener { private JLabel labelUsername, labelPassword; private JTextField textFieldUsername; private JPasswordField passwordField; private JButton buttonLogin, buttonCancel; public LoginFrame() { setTitle("用户登录"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); labelUsername = new JLabel("用户名:"); textFieldUsername = new JTextField(20); labelPassword = new JLabel("密码:"); passwordField = new JPasswordField(20); buttonLogin = new JButton("登录"); buttonCancel = new JButton("取消"); buttonLogin.addActionListener(this); buttonCancel.addActionListener(this); JPanel panel = new JPanel(new GridLayout(3, 2)); panel.add(labelUsername); panel.add(textFieldUsername); panel.add(labelPassword); panel.add(passwordField); panel.add(buttonLogin); panel.add(buttonCancel); add(panel, BorderLayout.CENTER); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == buttonLogin) { // 处理登录逻辑 String username = textFieldUsername.getText(); String password = new String(passwordField.getPassword()); if (username.equals("admin") && password.equals("123456")) { JOptionPane.showMessageDialog(this, "登录成功"); } else { JOptionPane.showMessageDialog(this, "用户名或密码错误"); } } else if (e.getSource() == buttonCancel) { // 关闭窗口 dispose(); } } public static void main(String[] args) { LoginFrame frame = new LoginFrame(); frame.setVisible(true); } } ``` 该示例中,我们使用JLabel、JTextField、JPasswordField和JButton等Swing组件来构建窗口界面。使用GridLayout布局管理器将这些组件放置到一个JPanel中,再将该面板添加到JFrame中。同时,我们还实现了ActionListener接口来处理登录按钮和取消按钮的点击事件。在登录按钮的事件处理方法中,我们获取用户名和密码,进行简单的判断,如果符合条件则弹出提示框表示登录成功,否则弹出提示框表示用户名或密码错误。在取消按钮的事件处理方法中,我们直接关闭窗口。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值