我想有Java做一个登录的小界面,可是组件就是不能对齐。我想让他们像QQ登录界面那样紧凑整齐,还请各位高手不吝赐教,谢谢!!!!下面是我的代码:
import java.awt.*;
import javax.swing.*;public class LogonFrame extends JFrame{
public LogonFrame(){
//设置标题
setTitle("UNS用户登录");
//获得屏幕的相关尺寸
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
//设置框架的尺寸,大小不可调
setSize(4*screenWidth / 9, screenHeight / 3);
setResizable(false);
// 设置图标
Image img = tk.getImage("LogOn.JPEG");
setIconImage(img);
Container c = getContentPane();//得到内容窗格 JPanel cpane = new JPanel();//生成面板对象
//创建界面元素
JLabel l1 = new JLabel("用户名");
JLabel l2 = new JLabel("密码");
JLabel l3 = new JLabel("记住我的密码");
JCheckBox cb = new JCheckBox();
JButton btn1 = new JButton("登录");
JButton btn2 = new JButton("退出");
JTextField tf = new JTextField(20);//用户名输入文本框
JPasswordField pw = new JPasswordField(20);//密码输入框
//将界面元素添加到面板中
cpane.add(l1);
cpane.add(tf);
cpane.add(l2);
cpane.add(pw);
cpane.add(cb);
cpane.add(l3);
cpane.add(btn1);
cpane.add(btn2);
//将面板添加到容器中
cpane. setLayout(new GridLayout(4,1));
c.add(cpane);
}
}
我的主函数:
import javax.swing.*;
public class Logon {
public static void main(String args[]){
LogonFrame frame = new LogonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
顺便问一句,为什么我的设置图标的方法不好用呢?
import java.awt.*;
import javax.swing.*;public class LogonFrame extends JFrame{
public LogonFrame(){
//设置标题
setTitle("UNS用户登录");
//获得屏幕的相关尺寸
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
//设置框架的尺寸,大小不可调
setSize(4*screenWidth / 9, screenHeight / 3);
setResizable(false);
// 设置图标
Image img = tk.getImage("LogOn.JPEG");
setIconImage(img);
Container c = getContentPane();//得到内容窗格 JPanel cpane = new JPanel();//生成面板对象
//创建界面元素
JLabel l1 = new JLabel("用户名");
JLabel l2 = new JLabel("密码");
JLabel l3 = new JLabel("记住我的密码");
JCheckBox cb = new JCheckBox();
JButton btn1 = new JButton("登录");
JButton btn2 = new JButton("退出");
JTextField tf = new JTextField(20);//用户名输入文本框
JPasswordField pw = new JPasswordField(20);//密码输入框
//将界面元素添加到面板中
cpane.add(l1);
cpane.add(tf);
cpane.add(l2);
cpane.add(pw);
cpane.add(cb);
cpane.add(l3);
cpane.add(btn1);
cpane.add(btn2);
//将面板添加到容器中
cpane. setLayout(new GridLayout(4,1));
c.add(cpane);
}
}
我的主函数:
import javax.swing.*;
public class Logon {
public static void main(String args[]){
LogonFrame frame = new LogonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
顺便问一句,为什么我的设置图标的方法不好用呢?
//将面板添加到容器中
cpane. setLayout(new GridLayout(4,1));
改为
//将面板添加到容器中
cpane. setLayout(new GridLayout(4,2));
设置图标用可以加再JLabel上
我不是想要把整个Frame布满,只是想让他们紧凑些,就在中间对齐,还有没有更好的办法同志们?