簡體   English   中英

如何在Java中驗證文本字段

[英]How do I validate a textfield in java

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();
    }
}

當我按下按鈕時,該按鈕將不起作用

當我按下按鈕時,該按鈕將不起作用

您需要將ActionListener添加到按鈕:

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

使您的班級名稱更具描述性。 “ b”不是描述性的。 同樣,類名應以大寫字母開頭。

不要使用null布局和setBounds(...)。 Swing被設計為與布局管理器一起使用。 保留指向該手冊的鏈接,以獲取Swing基礎知識。

看一下如何編寫動作偵聽器以及如何使用按鈕,復選框和單選按鈕

基本上,您永遠不會向JButton注冊ActionListener

b.addActionListener(new b());

如果使用有意義的變量名並遵循該語言的既定編碼約定,則代碼將更易於閱讀。 查看Java TM編程語言的代碼約定 ,以了解更多詳細信息,它將使人們更容易閱讀您的代碼,並使您閱讀其他代碼更容易

您可能還想讀一讀您可能想了解一讀我應該避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法嗎? ,但是由於您放棄了布局管理器,因此setPreferredSize的使用是完全沒有意義的。

避免使用null布局,像素完美布局是現代ui設計中的一種幻覺。 有太多因素會影響組件的單個大小,您無法控制。 Swing旨在與布局經理為核心一起工作,舍棄這些問題不會導致問題和問題的終結,您將花費越來越多的時間來嘗試糾正

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM