だから、これはよくある質問であり、すでに解決策を見つけていることを知りました。しかし、これを試してみると、正しく動作しません。
私のJTextFieldは空で、ボタンは有効になっていません。テキストフィールドに何かを書いても、ボタンが有効になりません。
したがって、私のプログラムは、このフィールドが空であるかどうかを毎秒チェックする必要があります。誰かがテキストフィールドに何かを書き込むとすぐに、ボタンが有効になります。^^
loginbt = new JButton("Login");
loginbt.addActionListener(new loginHandler());
add(loginbt);
if(name.getText().equals("")) {
loginbt.setEnabled(false);
}else {
loginbt.setEnabled(true);
}
そのためには、DocumentListener
の変更リスナー(テキストの変更に反応するJTextField
)を追加する必要があります。また、actionPerformed()
内で、loginButton
を更新して、JTextfield
が空かどうか。
以下は、これから見つけたものです thread 。
yourJTextField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
changed();
}
public void removeUpdate(DocumentEvent e) {
changed();
}
public void insertUpdate(DocumentEvent e) {
changed();
}
public void changed() {
if (yourJTextField.getText().equals("")){
loginButton.setEnabled(false);
}
else {
loginButton.setEnabled(true);
}
}
});
JTextFieldの「名前」にテキストが含まれていない場合、以下はtrueを返します。
name.getText().isEmpty
必要なのは、ドキュメントリスナーと呼ばれるものです。 ドキュメントリスナの作成方法 を参照してください。
さて、ボタンを有効/無効にするコード:
if(name.getText().equals("")) {
loginbt.setEnabled(false);
}else {
loginbt.setEnabled(true);
}
javax.swing.event.ChangeListener
で記述し、フィールドに添付する必要があります( here を参照)。フィールドの値を変更すると、リスナーがトリガーされてオブジェクトの状態が再評価されます。何を期待していましたか?
次のコードを使用します。
if(name.getText().equals(""))
{
loginbt.disable();
}
JTextFiledが空であるかどうかを確認するには:
if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))
これを試して
if(name.getText() != null && name.getText().equals(""))
{
loginbt.setEnabled(false);
}
else
{
loginbt.setEnabled(true);
}
if(name.getText().hashCode() != 0){
JOptionPane.showMessageDialog(null, "not empty");
}
else{
JOptionPane.showMessageDialog(null, "empty");
}