用户登录界面(java+swing+mysql)(三)
文章目录
- 1.创建一个界面
- 1.窗口的创立
- 1.JFrame()
- 2.setBackground()
- 3..setBounds()
- 4.setResizable()
- 5. setVisible()
- 2.窗口的关闭方式
- 1.WindowConstants.DO_NOTHING_ON_CLOSE
- 2.WindowConstants.HIDE_ON_CLOSE
- 3.WindowConstants.DISPOSE_ON_CLOSE
- 4.WindowConstants.EXIT_ON_CLOSE
- 2.界面布局方法
- 1.边界布局 BorderLayout()
- 1.说明
- 2.举例
- 2.流式布局 FlowLayout()
- 1.说明
- 2.举例
- 3.卡片布局 CardLayout()
- 1.说明
- 2.举例
- 4.网格布局 GridLayout()
- 1.说明
- 2.举例
- 3.界面操作
- 1.分面板的使用
- 2.多面板的使用
- 4.各种组件的使用
- 1.标签
- 2.单行文本框
- 1.普通文本框
- 2.密码框
- 3.文本域
- 4.按钮
- 5.勾选框
- 6.单选框
- 7.表格
- 5.对事件进行监听
- 1.窗口事件的监听
- 2.鼠标事件的监听
- 3.按键事件的监听
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() {@Overridepublic void windowOpened(WindowEvent e) {System.out.println("windowOpened--窗体打开事件");}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("windowClosing--窗体正在关闭事件");}@Overridepublic void windowClosed(WindowEvent e) {System.out.println("windowClosed--窗体已关闭事件");}@Overridepublic void windowIconified(WindowEvent e) {System.out.println("windowIconified--窗体图标化事件");}@Overridepublic void windowDeiconified(WindowEvent e) {System.out.println("windowDeiconified--窗体取消图标化事件");}@Overridepublic void windowActivated(WindowEvent e) {System.out.println("windowActivated--窗体激活事件");}@Overridepublic 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() {@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("mouseClicked--鼠标完成单击事件");}@Overridepublic void mousePressed(MouseEvent e) {System.out.println("mousePressed--鼠标按下事件");}@Overridepublic void mouseReleased(MouseEvent e) {System.out.println("mouseReleased--鼠标放开事件");}@Overridepublic void mouseEntered(MouseEvent e) {System.out.println("mouseEntered--鼠标进入按钮区域事件");}@Overridepublic 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() {@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {// 获取按键字符char keyChar = e.getKeyChar();// 获取按键字符的键码int keyCode = e.getKeyCode();System.out.println("按键字符:" + keyChar + "\t按键代码:" + keyCode);}@Overridepublic void keyReleased(KeyEvent e) {}});}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
