[英]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.