刚学完一些关于接口的简单知识,并且自己制作一个简单的窗口并且能用监听器进行简单的交互,讲一讲自己的心得体会。
接口的定义需要关键字“interface”,如“public interface Person{}”。
接口中的属性必须是公共的静态常量如“public static final int a = 3;”,前三个关键字“public,static,final”不加的话系统也会默认。
接口中的方法必须是抽象方法,如“public abstract void rest();”,用分号结尾,方法体需要具体实现后重写。
login.java
public class login {
public static void main(String[] agrs)
{
login lo = new login();
lo.showUI();
//在主函数中调用对象lo的方法
}
public void showUI()
{
//首先我们先建一个窗体对象,这个类封装在javax.swing.JFrame中,我们也可以在主函数类的开头进行“import javax.swing.JFrame”操作。
javax.swing.JFrame jf = new javax.swing.JFrame();
//调用对象的设置大小方法getSize,其单位为像素,传入的值必须为正,应为窗体的X轴正方向从左上角往右,Y轴正方向从左上角往下。
jf.setSize(300,400);
//设置窗体的标题
jf.setTitle("INDEX");
//设置窗体关闭进程的属性,有四种选择“DO_NOTHING_ON_CLOSE”,“HIDE_ON_CLOSE”,“DISPOSE_ON_CLOSE”,“EXIT_ON_CLOSE”,分别对应参数0,1,2,3.
jf.setDefaultCloseOperation(3);
//设置窗体居中显示
jf.setLocationRelativeTo(null);
//流式设计
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);
//image
//选择图片的路径,注意双斜线,最后的图片要加图片格式
javax.swing.ImageIcon icn = new javax.swing.ImageIcon("C:\\Users\\14188\\Pictures\\500516085.jpg");
//将图片对象放入标签对象当中
javax.swing.JLabel jla = new javax.swing.JLabel(icn);
//设置图片的大小,此时注意图片不是缩放而是裁剪
java.awt.Dimension dm = new java.awt.Dimension(300,200);
//设置标签大小
jla.setPreferredSize(dm);
jf.add(jla);
//text
//设置文本框,与图片的设置类似
javax.swing.JTextField jtf1 = new javax.swing.JTextField();
java.awt.Dimension dmm = new java.awt.Dimension(200,50);
jtf1.setPreferredSize(dmm);
jf.add(jtf1);
javax.swing.JTextField jtf2 = new javax.swing.JTextField();
java.awt.Dimension dmmm = new java.awt.Dimension(200,20);
jtf2.setPreferredSize(dmmm);
jf.add(jtf1);
jf.add(jtf2);
//checkbox
javax.swing.JCheckBox jcb = new javax.swing.JCheckBox("记住密码");
jf.add(jcb);
//botton
javax.swing.JButton jbu = new javax.swing.JButton("Login");
jf.add(jbu);
//setvisible
jf.setVisible(true);
//Actionlistener
//设置一个行动监听器,新创建一个类Butlistener来实现接口类ActionListener
Butlistener but = new Butlistener();
jbu.addActionListener(but);
//因为Butlistener中jtf1,jtf2对象为私有属性,所以这里用but的成员函数进行赋值
but.getjtf1(jtf1);
but.getjtf2(jtf2);
}
}
Butlistener.java
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
//实现接口类要用专门的关键字“implements”,不同于继承的关键字“extends”,ActionListener类在“java.awt.event.*”中.
public class Butlistener implements java.awt.event.ActionListener{
private JTextField jtf1;
private JTextField jtf2;
//设置对jtf1,jtf2的操作函数
public void getjtf1(JTextField j1){
this.jtf1 = j1;
}
public void getjtf2(JTextField j2){
this.jtf2 = j2;
}
//对接口类中的方法进行重写(一定要将接口类中的所有方法重写,否则编译不会通过)
public void actionPerformed(ActionEvent e){
//获取文本框中的内容
String name = jtf1.getText();
String password = jtf2.getText();
//如果输入的内容匹配,则输出正确
if(name.equals( "JiangJun") && password.equals("123456")){
System.out.println("Login sussessfully!");
}
//否则输出错误
else{
System.out.println("Please correct your input!");
}
}
}