Java的界面及事件的监听
创建界面
如上图所示,这就是一个在Java环境下实现的简单界面。此界面包括标题、图片、账号密码输入框、记住密码和自动登录自选框以及登录按钮。要实现这样一个界面,首先要导入一个用于界面开发的类别:
`import javax.swing.JFrame;`
这样,我们才可以定义一个JFrame变量:
JFrame jf = new JFrame();
定义界面变量之后我们就可以对这个界面进行一定的修饰:
jf.setTitle("欢迎登录");
jf.setSize(400,370);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
这几行代码分别设定了界面的标题、大小尺寸、关闭按钮和组件排布方式以及设定不能改变界面大小,其中组件排布方式为局中。
这样我们就实现了一个指定大小的界面。需要注意的是,记得给程序添加关闭按钮,即用jf.setDefaultCloseOperation( );
来实现,括号内填写 JFrame.EXIT_ON_CLOSE 或 3 ,这两个式子是等价的。
修饰界面
创建了界面之后,我们就可以就可以对其进行修饰。首先我们定义组件的排列方式为流式排列:
FlowLayout fl=new FlowLayout();
jf.setLayout(fl);
其次,我们创建一系列组件:
ImageIcon image=new ImageIcon("C:\\Users\\15593\\Pictures\\Saved Pictures\\bg1.jpg");
JLabel imagela=new JLabel(image);
JLabel name=new JLabel("账号");
JLabel password =new JLabel("密码");
JTextField namein=new JTextField();
JPasswordField passin=new JPasswordField();
JButton btn=new JButton("登录");
JCheckBox check1=new JCheckBox("记住密码");
JCheckBox check2=new JCheckBox("自动登录");
而要创建这些组件,我们也要事先导入这些组件的包:
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
其中,引用的图片可以是储存在电脑中时的路径名,也可以是放在Project中的图像名。让我们对按钮进行一定的修饰:
Dimension dim=new Dimension(330,30);
btn.setBackground(Color.WHITE);
namein.setPreferredSize(dim);
passin.setPreferredSize(dim);
这几行代码分别规定了按钮的背景颜色和两个输入文本框的大小。但要记得,创建完组件后要将组件添加到界面里:
jf.add(imagela);
jf.add(name);
jf.add(namein);
jf.add(password);
jf.add(passin);
jf.add(check1);
jf.add(check2);
jf.add(btn);
jf.setVisible(true);
记得一定要记得写最后一行代码,不然界面会一闪而过!
一个界面就这样成功实现了。
事件监听
实现了界面之后,我们就要实现一定界面的功能。于是我们创建监听器,代码如下:
package 界面;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
import javax.swing.JFrame;
public class LoginListener implements ActionListener{
JTextField nametx;
JTextField passtx;
JFrame jf;
Pad3DBall pad3dball;
public void actionPerformed(ActionEvent e) {
String nameString = nametx.getText();
String passString = passtx.getText();
if (passString.equals("")) {
System.out.println("请输入密码");
}else {
if (nameString.equals("123456")&&passString.equals("456789")) {
System.out.println("账号正确");
jf.setVisible(false);
Pad3DBall pad3dball = new Pad3DBall();
pad3dball.intUI();
}else {
System.out.println("账号输入错误");
}
}
}
}
我们用一个类去实现接口,即 implements
其格式:public class 类名 implements 接口名{ } ,其中不能创建带有具体方法体的方法,因此我们需要将方法后的大括号改为分号,化具体为抽象:
JTextField nametx;
JTextField passtx;
JFrame jf;
Pad3DBall pad3dball;
之后我们重载监听器接口的抽象方法
public void actionPerformed(ActionEvent e) {
String nameString = nametx.getText();
String passString = passtx.getText();
if (passString.equals("")) {
System.out.println("请输入密码");
}else {
if (nameString.equals("123456")&&passString.equals("456789")) {
System.out.println("账号正确");
jf.setVisible(false);
Pad3DBall pad3dball = new Pad3DBall();
pad3dball.intUI();
}else {
System.out.println("账号输入错误");
}
}
}
在这些方法中,我们首先提取了账户密码输入框中用户输入的字符串,将其跟我们既定的数据进行比较,用equals("......")
来实现,输入正确后,按下登录按钮就可以执行我们既定的程序了。 其中,jf.setVisible(false);
关闭了登录界面,而Pad3DBall pad3dball = new Pad3DBall(); pad3dball.intUI();
则执行绘制了一个图像,这里代码从略。
最后,我们将监听器应用到我们的主程序中,在按下按钮(btn)后执行:
LoginListener nll = new LoginListener();
btn.addActionListener(nll);
nll.passtx=passin;
nll.nametx=namein;
nll.jf=jf;
我们正确输入账户密码后按下“登录”,执行结果如下:
以上就是简单的界面实现及事件的监听方法了。
感谢观看!