一、窗体
窗体实现用到两个包:javax.swing和java.awt
先创建类JFrame的一个对象,运用JFrame的方法,设置窗体像素大小,标题,在电脑界面的位置
javax.swing.JFrame jf = new javax.swing.JFrame();
//像素 > 分辨率
jf.setSize(450,550);
jf.setTitle("登录界面");
//居中显示
jf.setLocationRelativeTo(null);
窗体关闭后不会直接停止作用,它会在后台继续作用,要想关闭它就要在编程软件里强制关闭, 因此就要使用关闭窗体后就停止作用的方法来退出进程
jf.setDefaultCloseOperation(3);
给窗体添加布局管理器,否则在窗体上添加组件时,该组件会占满整个窗体。
//流式布局管理器
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);
在最后要设置可见,所有组件放在可见之前添加
jf.setVisible(true); //这个方法必不可少
二、窗体组件
将组件加入窗体的方法
jf.add();
(一)图片
先创建ImageIcon的对象,传入图片地址;接着创建标签,JLabel的对象,将ImageIcon的对象传入,就完成图片组件;
设置该图片组件的大小:用Dimension类创造对象,然后对图片组件调用setPerferrrdSize()方法传入Dimension对象。
除了JFrame,其它组件设置大小都是用该方法
javax.swing.ImageIcon image = new javax.swing.ImageIcon("1.jpg");
//标签
javax.swing.JLabel jla = new javax.swing.JLabel(image);
//组件设置大小的方法
java.awt.Dimension dm = new java.awt.Dimension(450,300);
jla.setPreferredSize(dm);
jf.add(jla);
(二)用户提示和输入框
用户提示就是上面图片组件中创建的标签,JLabel.
先创建JLabel对象,并传入提示 的内容,就完成用户提示组件的创建
创建JTextField对象,其大小设置和以上图片组件的大小设置相同
获取输入框上的内容:getText();
javax.swing.JLabel user = new javax.swing.JLabel("账号");
jf.add(user);
javax.swing.JTextField jtf = new javax.swing.JTextField();
java.awt.Dimension dm = new java.awt.Dimension(400,30);
jtf.setPreferredSize(dm);
jf.add(jtf);
(三)按钮
按钮组件是创建JButton对象,传入对象为按钮上的内容
javax.swing.JButton jbu = new javax.swing.JButton("登录");
jf.add(jbu);
按钮组件有一个常用方法为getActionCommand();
其作用是获取按钮上的内容
按钮起作用需添加监视器
(四)滑块
滑块起作用需添加监视器
常用的构造方法:
JSlider() //创建一个范围在 0~100 且初始值为 50 的水平滑块
JSlider(int min,int max) //使用指定的最小值和最大值来创建一个水平滑块,初始值为平均值
JSlider(int min,int max,int value) //用指定的最小值、最大值和初始值创建一个水平滑块
常用方法:
getMaj orTickSpacing() //返回主刻度标记的间隔
getMinorTickSpacing() //返回次刻度标记的间隔
getValue() //返回滑块的当前值
setLabelTable(Dictionary labels) //用于指定将在给定值处绘制哪个标签
setMaj orTickSpacing(int n) //此方法设置主刻度标记的间隔
setMinorTickSpacing(int n) //设置次刻度标记的间隔
setMaximum(int maximum) //将滑块的最大值设置为 maximum
setMinimum(int minimum) //将滑块的最小值设置为 minimum
setPaintLabels(boolean b) //确定是否在滑块上绘制标签
setPaintTicks(boolean b) //确定是否在滑块上绘制刻度标记
setPaintTrack(boolean b) //确定是否在滑块上绘制滑道
setValue(int n) //将滑块的当前值设置为 n
以下代码为创建如图所示的滑块
JSlider js = new JSlider(0,255,125);
js.setMajorTickSpacing(50);
js.setMinorTickSpacing(25);
js.setPaintLabels(true);
js.setPaintTicks(true);
jf.add(js);
三、登录窗体例子
public class Login {
public void showUI() {
javax.swing.JFrame jf = new javax.swing.JFrame();
jf.setSize(450, 550);
jf.setTitle("登录界面");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);
javax.swing.ImageIcon image = new javax.swing.ImageIcon("C:\\Users\\asus\\Pictures\\Saved Pictures\\1.jpg");
javax.swing.JLabel jla = new javax.swing.JLabel(image);
java.awt.Dimension dm1 = new java.awt.Dimension(450,300);
jla.setPreferredSize(dm1);
jf.add(jla);
javax.swing.JLabel user1 = new javax.swing.JLabel("账号");
jf.add(user1);
javax.swing.JTextField jtf1 = new javax.swing.JTextField();
java.awt.Dimension dm2 = new java.awt.Dimension(400,30);
jtf1.setPreferredSize(dm2);
jf.add(jtf1);
javax.swing.JLabel user2 = new javax.swing.JLabel("密码");
jf.add(user2);
javax.swing.JTextField jtf2 = new javax.swing.JTextField();
jtf2.setPreferredSize(dm2);
jf.add(jtf2);
javax.swing.JButton jbu1 = new javax.swing.JButton("登录");
jf.add(jbu1);
javax.swing.JButton jbu2 = new javax.swing.JButton("注册");
jf.add(jbu2);
javax.swing.JButton jbu3 = new javax.swing.JButton("找回密码");
jf.add(jbu3);
jf.setVisible(true);
//监视器
ButtonListener listener1 = new ButtonListener();
jbu1.addActionListener(listener1);
listener1.setUserText1(jtf1);
listener1.setUserText2(jtf2);
jbu2.addActionListener(listener1);
listener1.setUserText1(jtf1);
listener1.setUserText2(jtf2);
}
public void showNext() {
javax.swing.JFrame jf = new javax.swing.JFrame();
jf.setSize(450, 550);
jf.setTitle("登录界面");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);
javax.swing.JLabel user1 = new javax.swing.JLabel("登录成功");
jf.add(user1);
jf.setVisible(true);
}
public static void main(String[] args) {
Login lo = new Login();
lo.showUI();
}
}
//监视器是接口,需要类来实现
public class ButtonListener implements ActionListener{
private static String user = "123";
private static String pass = "123";
private JTextField userText1;
private JTextField userText2;
public void setUserText1(JTextField jtf) {
userText1 = jtf;
}
public void setUserText2(JTextField jtf) {
userText2 = jtf;
}
Login lo = new Login();
public void actionPerformed(ActionEvent e) {
//获取按钮上的内容
String name = e.getActionCommand();
String userName1 = userText1.getText();
String userName2 = userText2.getText();
if(name.equals("登录")) {
if(user.equals(userName1)&&pass.equals(userName2)) {
System.out.println("yes");
lo.showNext();
}
}
}
}