JAVA界面
目标:我们需要自己创建一个类似QQ登录的界面,出现类似界面然后实现基本功能。
写一个窗体:
public class Login {
public static void main(String[] args) {
Login lo = new Login();
lo.showUI();
}
public void showUI(){
//窗体类
javax.swing.JFrame jf = new javax.swing.JFrame();
//窗体名称
jf.setTitle("QQ登陆界面");
//窗体大小(具体值跟电脑显示器的像素有关,可调整到合适大小)
jf.setSize(400, 500);
//设置退出进程的方法
jf.setDefaultCloseOperation(3);
//设置居中显示用3
jf.setLocationRelativeTo(null);
//流式布局管理器
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow); //给窗体设置为流式布局——从左到右然后从上到下排列自己写的组件顺序
//图片,冒号里是你存图片的地址
javax.swing.ImageIcon icon = new javax.swing.ImageIcon("D:\\Picture\\01.jpg");
//标签
javax.swing.JLabel jla = new javax.swing.JLabel(icon);
java.awt.Dimension dm0=new java.awt.Dimension(280,200);
//设置大小
jla.setPreferredSize(dm0);//应用大小到相应组件
jf.add(jla);//将组件加到窗体上
//文本框
javax.swing.JTextField jtf = new javax.swing.JTextField();
java.awt.Dimension dm = new java.awt.Dimension(280, 30);
//(除了JFrame)其它所有组件设置大小都是该方法
jtf.setPreferredSize(dm);
jf.add(jtf);
//复选框
javax.swing.JCheckBox jcb = new javax.swing.JCheckBox("记住密码");
jf.add(jcb);
javax.swing.JCheckBox jcb2 = new javax.swing.JCheckBox("忘记密码");
jf.add(jcb2);
//按钮
javax.swing.JButton jbu = new javax.swing.JButton("登陆");
jf.add(jbu); //给窗体添加一个按钮对象
jf.setVisible(true); //设置可见,放在代码最后一句
}
}
窗体如下:
对……有点丑……不过基本功能是实现了,具体图片和大小可以再调节。
添加监听器:
首先我们在上面的基础上进行一些调整,然后写出我们的目标界面:
然后我们给界面添加一些功能:当我们方别在两个文本框输入账号和密码之后点击登录,如果密码正确则显示登陆成功,否则显示登录失败。这里需要我们监听“登录”按钮是否被点击,需要我们写一个监听器,java中按钮监听器的父类是ActionListener。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
//按钮监听器的父类ActionListener里面有函数可以直接检测按钮是否被点击
public class ButListener implements ActionListener {
//定义JTextFieldb变量jt,用来保存传递过来的文本框对象
private JTextField jt;
private JTextField jt2;
//定义set方法,初始化jt
public void setJt(JTextField jt,JTextField jt2){
this.jt = jt;
this.jt2=jt2;
}
public void actionPerformed(ActionEvent e) {
//检测到按钮被点击自动计入到这个函数,这个函数是ActionListener类的方法
//接下来获取文本框里面的字符串
String name = jt.getText();
String password=jt2.getText();
//验证账号和密码,如果正确显示登陆成功的界面
//账号123对应密码789
if("123".equals(name)&&"789".equals(password)){
Sucess sc=new Sucess();//新的界面(跟旧的差不多后面有代码)
sc.showUI();
}else{
//登录失败界面写这里
}
}
}
然后把自己写好的监听器加到我们已有的界面上:
public class Login {
public static void main(String[] args){
Login lo=new Login();
lo.showUI();
}
public void showUI(){
javax.swing.JFrame jf= new javax.swing.JFrame();
jf.setTitle("QQ登录界面");
jf.setSize(300,400);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
java.awt.FlowLayout flow=new java.awt.FlowLayout();
jf.setLayout(flow);
javax.swing.ImageIcon icon = new javax.swing.ImageIcon("D:\\Picture\\01.jpg");
javax.swing.JLabel jla= new javax.swing.JLabel(icon);
java.awt.Dimension dm0=new java.awt.Dimension(280,200);
jla.setPreferredSize(dm0);
jf.add(jla);
javax.swing.JTextField jtf=new javax.swing.JTextField();
java.awt.Dimension dm1=new java.awt.Dimension(280,30);
jtf.setPreferredSize(dm1);
jf.add(jtf);
javax.swing.JTextField jtf2=new javax.swing.JTextField();
java.awt.Dimension dm2=new java.awt.Dimension(280,30);
jtf2.setPreferredSize(dm2);
jf.add(jtf2);
javax.swing.JCheckBox jcb3 = new javax.swing.JCheckBox("忘记密码");
jf.add(jcb3);
javax.swing.JCheckBox jcb4 = new javax.swing.JCheckBox("记住密码");
jf.add(jcb4);
javax.swing.JButton jbu = new javax.swing.JButton("登陆");
java.awt.Dimension dm3=new java.awt.Dimension(80,30);
jbu.setPreferredSize(dm3);
jf.add(jbu);
//给按钮添加动作监听器方法
ButListener but = new ButListener();
//创建一个监听器
jbu.addActionListener(but);
//把监听器加在“登录”按钮上
but.setJt(jtf,jtf2);
jf.setVisible(true);
}
}
这时我们运行结果如下:
原谅这个图片……没有图片找了个表情包暂时用一下,大概意思就是这个。
登陆成功界面代码附录如下:
public class Sucess {
public void showUI(){
javax.swing.JFrame jf= new javax.swing.JFrame();
jf.setTitle("登录成功界面");
jf.setSize(300,400);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
java.awt.FlowLayout flow=new java.awt.FlowLayout();
jf.setLayout(flow);
javax.swing.ImageIcon icon = new javax.swing.ImageIcon("D:\\Picture\\02.jpg");
javax.swing.JLabel jla= new javax.swing.JLabel(icon);
java.awt.Dimension dm0=new java.awt.Dimension(280,200);
jla.setPreferredSize(dm0);
jf.add(jla);
jf.setVisible(true);
}
}