如何在java中验证文本字段

时间:2015-11-12 22:57:38

标签: java swing jframe joptionpane

public class Login extends JFrame{
    JFrame frame; //frame
    JTextField field; //to get username
    JPasswordField p; //password field
    JLabel l; //used for printing on frame
    JButton b;

    Login() {

        frame = new JFrame("Login");
        frame.setSize(350,200);
        frame.setLocationRelativeTo(null);
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        l = new JLabel("Enter Username");
        l.setLocation(10,10);
        l.setSize(l.getPreferredSize());
        frame.add(l);

        field = new JTextField();
        field.setColumns(15);
        field.setSize(field.getPreferredSize());

        field.setLocation(120,10);
        frame.add(field);

        l = new JLabel("Enter Password");
        l.setLocation(10,40);
        l.setSize(l.getPreferredSize());
        frame.add(l);

        p = new JPasswordField();
        p.setColumns(15);
        p.setSize(p.getPreferredSize());
        p.setLocation(120,40);
        frame.add(p);

        b = new JButton("OK");
        b.setSize(b.getPreferredSize());
        b.setLocation(120, 80);
        frame.add(b);

        frame.setVisible(true);
    }


    private class b implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
           String str;
           str = field.getText();
           if(str.equals("")) {
               JOptionPane.showMessageDialog(null,"Please enter username");
               field.requestFocusInWindow();
           } else {

           }
        }

    }

    public static void main (String[] args) {
        new Login();
    }
}

按钮在我点击时无法正常运行

2 个答案:

答案 0 :(得分:4)

  

按下它时按钮不起作用

您需要将ActionListener添加到按钮:

b = new JButton("OK");
b.addActionListener( new b() );

让您的班级名称更具描述性。 “b”不具有描述性。此外,类名应以大写字符开头。

不要使用null布局和setBounds(...)。 Swing旨在与Layout Managers一起使用。为Swing基础知识提供方便的教程链接。

答案 1 :(得分:2)

查看How to Write an Action ListenersHow to Use Buttons, Check Boxes, and Radio Buttons

基本上,您从未使用ActionListener

注册JButton
b.addActionListener(new b());

如果使用有意义的变量名称并遵循语言的建立编码约定,则代码将更容易阅读。看一下Code Conventions for the Java TM Programming Language,了解更多细节,它会让人们更容易阅读您的代码并让您阅读其他代码

您可能还想阅读您可能希望阅读Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?,但由于您被放弃了布局管理器,因此使用setPreferredSize完全没有意义。

避免使用null布局,像素完美布局是现代ui设计中的一种幻觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正