JPasswordField和用户名字段(登录系统)未显示

时间:2014-03-12 01:41:23

标签: java swing layout jtextfield

我知道我没有框架,但除了我的JPasswordField(密码栏)和我的JTextField(用户名栏)之外,所有内容都显示我只是想添加“用户名”和“密码“页面底部的栏,但栏不会显示。

感谢您的帮助,尽管看起来这里的所有内容都是负片。洛尔。

public class test extends JFrame {

private JLabel jl;
private JLabel paypalLogo;
private JButton money1;
private JButton money2;
private JButton money3;
private JButton money4;
private JButton money5;
private JButton money6;
private JButton custom;
private JTextField user;
private JButton login;
private JPasswordField pass;


public test(){
    super("PayPal Money Generator");
    setLayout(new FlowLayout());

    this.setLayout(null);


    Icon logo1 = new ImageIcon(getClass().getResource("res/paypal.png"));
    paypalLogo = new JLabel(logo1);
    paypalLogo.setBounds(50,-50,200,200);
    add(paypalLogo);


    money1 = new JButton("$5");
    money1.setBounds(85,100,35,35);
    add(money1);

    money2 = new JButton("$10");
    money2.setBounds(200,100,35,35);
    add(money2);

    money3 = new JButton("$25");
    money3.setBounds(67,200,50,35);
    add(money3);

    money4 = new JButton("$50");
    money4.setBounds(200,200,50,35);
    add(money4);

    money5 = new JButton("$200");
    money5.setBounds(50,300,70,40);
    add(money5);

    money6 = new JButton("$500");
    money6.setBounds(200,300,70,40);
    add(money6);

     user = new JTextField(15);
     add(user);
     pass = new JPasswordField(15);
     add(pass);
     login = new JButton("Login");
     add(login);





    /*how to make logo in button test
    Icon b = new ImageIcon(getClass().getResource("res/paypal.png"));
  custom = new JButton("", b);
  custom.setBounds(10,10,100,100);
  add(custom);
  */

 HandlerClass handler = new HandlerClass();
 money1.addActionListener(handler);
 money2.addActionListener(handler);
 money3.addActionListener(handler);
 money4.addActionListener(handler);
 money5.addActionListener(handler);
 money6.addActionListener(handler);





}

public class ButtonListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        if(user.getText().trim().length() == 0 || pass.getText().length() == 0){
            JOptionPane.showMessageDialog(null, "Fill");
        }else{
            if(user.getText().equals("Kleo") || user.getText().equals("Kleo")){
                JOptionPane.showMessageDialog(null, "Welcome");
            }else{
                JOptionPane.showMessageDialog(null, "Denied");
            }
        }
    }
}



private class HandlerClass implements ActionListener{
    public void actionPerformed(ActionEvent e){
          try {
            final ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResource("/res/paypal.png")));
              JOptionPane.showOptionDialog(
                      null,
                      e.getActionCommand() + ".00 USD has successfully been added to your account!",
                      "",
                      JOptionPane.OK_OPTION,
                      JOptionPane.PLAIN_MESSAGE,
                      icon,
                      new Object[]{"OK"},
                      "");
          } catch (IOException exp) {
              exp.printStackTrace();
          }



 }

    }

}

2 个答案:

答案 0 :(得分:4)

当您使用null布局时,程序员完全负责设置添加到容器的组件的所有位置和大小。您不要为JTextField或JPasswordField设置其中任何一个。快速( 和错误的 )解决方案是设置其边界。更好的解决方案是使用布局管理器。

答案 1 :(得分:4)

使用null布局是导致问题的主要原因......

this.setLayout(null);
//...
user = new JTextField(15);
add(user);
pass = new JPasswordField(15);
add(pass);
login = new JButton("Login");
add(login);

基本上,在创建组件时,它的默认大小和位置为0x0,这意味着,基于上面的代码,您的组件不可见,因为它们没有大小。< / p>

Swing旨在与布局管理器一起使用,并且有很多充分的理由使用它们。您无法控制将内容呈现到屏幕的呈现过程,这将影响字体度量等内容,这将改变组件所需的大小并影响组件彼此的放置......

简短回答,使用适当的布局管理器

有关详细信息,请参阅Laying Out Components Within a Container

在处理这种形式的表格时,你很难找到一位有经验的Swing开发人员,他们会主张使用null布局。