我有幾個文本字段。如果用戶填寫所有文本字段時如何啓用按鈕,如果用戶刪除某些內容則禁用?我正在使用Swing。設置啓用按鈕,如果文本字段填充
1
A
回答
1
由於擺動基於MVC,因此您可以使用模型對象並聆聽變化。
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS));
JTextField textField1 = new JTextField(30);
JTextField textField2 = new JTextField(30);
JTextField textField3 = new JTextField(30);
JButton jButton = new JButton("Button");
ButtonModel model = jButton.getModel();
Document document1 = textField1.getDocument();
Document document2 = textField2.getDocument();
Document document3 = textField3.getDocument();
ButtonEnablement buttonEnablement = new ButtonEnablement(model);
buttonEnablement.addDocument(document1);
buttonEnablement.addDocument(document2);
buttonEnablement.addDocument(document3);
contentPane.add(textField1);
contentPane.add(textField2);
contentPane.add(textField3);
contentPane.add(jButton);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
每當一個Document
改變ButtonEnablement
會看看所有Document
S和啓用ButtonModel
。
public class ButtonEnablement implements DocumentListener {
private ButtonModel buttonModel;
private List<Document> documents = new ArrayList<Document>();
public ButtonEnablement(ButtonModel buttonModel) {
this.buttonModel = buttonModel;
}
public void addDocument(Document document) {
document.addDocumentListener(this);
this.documents.add(document);
documentChanged();
}
public void documentChanged() {
boolean buttonEnabled = false;
for (Document document : documents) {
if (document.getLength() > 0) {
buttonEnabled = true;
break;
}
}
buttonModel.setEnabled(buttonEnabled);
}
@Override
public void insertUpdate(DocumentEvent e) {
documentChanged();
}
@Override
public void removeUpdate(DocumentEvent e) {
documentChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
documentChanged();
}
}
使用ButtonModel
和Document
代替JButton
和JTextField
的好處是,你可以很容易地改變具體實現,你不必擔心你的UI組件是如何被更新的,因爲他們得到更新當他們的模型改變時自動。
0
您可以設置事件偵聽器來查看文本字段何時更改。然後,禁用按鈕,如果一個字段爲空:
field1.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) { //watch for key strokes
if(field1.getText().length() == 0 || field2.getText().length() == 0)
button.setEnabled(false);
else
{
Button.setEnabled(true);
}
}
});
的此策略是:
- 手錶上的字段的任何擊鍵。您需要複製字段2的此事件偵聽器(以及您可能具有的任何其他字段)。
- 默認您的按鈕爲禁用,因爲這些字段爲空
- 如果字段的字符爲零,請禁用該按鈕。否則,啓用它。
相關問題
- 1. 啓用按鈕,如果文本字段快速填充
- 2. 如果用戶填充文本字段,則需要單選按鈕
- 3. 禁用表單提交按鈕,如果文本字段填寫
- 4. 單擊單選按鈕時如何填充文本字段?
- 5. 啓用/禁用基於輸入字段的提交按鈕(填充/未填充)
- 6. Titanium:如果文本字段不爲空,則啓用按鈕
- 7. 啓用按鈕,如果我在文本字段
- 8. 只有在填充兩個字段時才啓用按鈕
- 9. 在所有字段填充後啓用提交按鈕
- 10. 單選按鈕來填充文本字段
- 11. 當選擇單選按鈕時填充文本字段
- 12. CSS填充文本字段
- 13. 如何根據按下的按鈕填充輸入文本字段數據
- 14. 當文本框填充時啓用單選按鈕集
- 15. Javascript - 啓用按鈕當輸入填充
- 16. Symfony2 - 使用ArrayCollection填充文本字段?
- 17. 使用javascript預填充文本字段
- 18. 如果字段不是以ng-repeat填充,如何禁用按鈕?
- 19. 按鈕文本推開填充在Firefox
- 20. 按鈕內部的文本填充
- 21. Javascript - 點擊按鈕填充文本框
- 22. 減少按鈕內的文本填充
- 23. 如何用文本字段中的文本填充textComposer正文
- 24. JS腳本來填充文本字段
- 25. 預填充文本字段的腳本
- 26. 設置浮動動作按鈕圖像以填充按鈕
- 27. 按鈕3D風格文字填充
- 28. 禁用提交按鈕,如果給定的字段在jQuery中沒有填充
- 29. 填充文本字段,並檢查結果是否如預期
- 30. 填充按鈕
我們不能一次使用多個字段嗎? –