我想有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);
}
}
顺便问一句,为什么我的设置图标的方法不好用呢?

解决方案 »

  1.   

    试一下
    //将面板添加到容器中
    cpane.   setLayout(new   GridLayout(4,1));
    改为
    //将面板添加到容器中
    cpane.   setLayout(new   GridLayout(4,2)); 
    设置图标用可以加再JLabel上
      

  2.   

    cpane.setLayout(new GridLayout(4,1));和cpane.setLayout(new GridLayout(4,2));的效果是一样的。
    我不是想要把整个Frame布满,只是想让他们紧凑些,就在中间对齐,还有没有更好的办法同志们?
      

  3.   

    用netbeans 画好界面以后,再到eclipse中去做