本次学习是在参考北冥有鱼555的JAVA第一课——qq登录界面的开发,后开始学习的。以下是我本次学习的心得,以及笔记,不喜勿喷。
在上次的学习之后,我自己参考Java大学实用教程(第3版)上的一些内容编写了一个以流布局为基础,以BOX为辅助的带有支撑的QQ登录界面。以下是我的学习过程和代码。
第一部分:创建一个窗口并设置各项参数
JFrame frame=new JFrame();
FlowLayout f1=new FlowLayout();
frame.setLayout(f1);
frame.setDefaultCloseOperation(3);//直接关闭窗口
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setTitle("QQ登录");
frame.setResizable(true);
第二部分:将除去图片的组件放进相应的盒子里,便于等会建立支撑
先放账号、密码两个标签进第一个盒子box2
Box box2,box3,box4,box5,basebox1,basebox2,basebox3;
box2=Box.createVerticalBox();//放账号密码标签
box2.add(new JLabel("账号"));
box2.add(Box.createVerticalStrut(8));
box2.add(new JLabel("密码"));
box3=Box.createVerticalBox();//放账号密码的输入部分
JTextField text1=new JTextField("1351504636");
Dimension dim1=new Dimension(325,25);
text1.setSize(dim1);
box3.add(text1);
box3.add(Box.createVerticalStrut(8));
JTextField text2=new JTextField("******");
Dimension dim2=new Dimension(325,25);
text2.setSize(dim2);
box3.add(text2);
box4=Box.createHorizontalBox();//放自动登录和记住密码
box4.add(new JCheckBox("自动登录"));
box4.add(Box.createHorizontalStrut(8));
box4.add(new JCheckBox("记住密码"));
basebox1=Box.createHorizontalBox();//将账号密码的标签和输入部分左右放置
basebox1.add(box2);
basebox1.add(Box.createHorizontalStrut(8));
basebox1.add(box3);
JButton button=new JButton("登录");
button.setSize(90, 50);
box5=Box.createHorizontalBox();
box5.add(button);
basebox2=Box.createVerticalBox();//将账号密码和自动登录记住密码上下放置
basebox2.add(basebox1);
basebox2.add(Box.createVerticalStrut(8));
basebox2.add(box4);
basebox3=Box.createVerticalBox();
basebox3.add(basebox2);
basebox3.add(Box.createVerticalStrut(8));
basebox3.add(box5);
这样就设置好了盒子放的位置和支撑了
下面是整体代码:
import javax.swing.*;
import java.awt.*;
public class newone {
public static void main(String[] args) {
// TODO Auto-generated method stub
newone one=new newone();
one.QQ();
}
public void QQ() {
JFrame frame=new JFrame();
FlowLayout f1=new FlowLayout();
frame.setLayout(f1);
frame.setDefaultCloseOperation(3);//直接关闭窗口
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setTitle("QQ登录");
frame.setResizable(true);
Box box2,box3,box4,box5,basebox1,basebox2,basebox3;
box2=Box.createVerticalBox();//放账号密码标签
box2.add(new JLabel("账号"));
box2.add(Box.createVerticalStrut(8));
box2.add(new JLabel("密码"));
box3=Box.createVerticalBox();//放账号密码的输入部分
JTextField text1=new JTextField("1351504636");
Dimension dim1=new Dimension(325,25);
text1.setSize(dim1);
box3.add(text1);
box3.add(Box.createVerticalStrut(8));
JTextField text2=new JTextField("******");
Dimension dim2=new Dimension(325,25);
text2.setSize(dim2);
box3.add(text2);
box4=Box.createHorizontalBox();//放自动登录和记住密码
box4.add(new JCheckBox("自动登录"));
box4.add(Box.createHorizontalStrut(8));
box4.add(new JCheckBox("记住密码"));
basebox1=Box.createHorizontalBox();//将账号密码的标签和输入部分左右放置
basebox1.add(box2);
basebox1.add(Box.createHorizontalStrut(8));
basebox1.add(box3);
JButton button=new JButton("登录");
button.setSize(90, 50);
box5=Box.createHorizontalBox();
box5.add(button);
basebox2=Box.createVerticalBox();//将账号密码和自动登录记住密码上下放置
basebox2.add(basebox1);
basebox2.add(Box.createVerticalStrut(8));
basebox2.add(box4);
basebox3=Box.createVerticalBox();
basebox3.add(basebox2);
basebox3.add(Box.createVerticalStrut(8));
basebox3.add(box5);
ImageIcon image=new ImageIcon(this.getClass().getResource("2.png"));//加载图片
JLabel labelImage=new JLabel(image);
frame.add(labelImage);
frame.add(basebox3);
frame.setVisible(true);
}
}
运行出来的效果:
即使进行一定的拉伸也不会有变化