[英]How can I enable/disable a JTextField with a JCheckBox? or what's wrong with my code?
[英]How can I enable/disable my JTextField depending of the state of a JCheckBox?
我在文本字段旁邊有一個 Java 復選框。
當復選框被選中時,我希望文本框被啟用,當它沒有被選中時,我不希望它被選中。 我用isSelected()
方法嘗試了一個if
語句,但它沒有做任何事情。
我如何對 JCheckBox 的狀態變化做出反應?
建議:
JCheckBox
實例注冊一個ItemListener
getStateChange()
)與ItemEvent.SELECTED
或ItemEvent.DESELECTED
,然后適當地調用foo.setEnabled
,其中foo
是JTextBox
實例。這是一個SSCCE :
public final class JCheckBoxDemo {
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame("JCheckBox Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(JCheckAndTextPane.newInstance());
frame.setSize(new Dimension(250, 75)); // for demonstration purposes only
//frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static final class JCheckAndTextPane extends JPanel{
private JCheckAndTextPane(){
super();
// Create components
final JTextField textField = new JTextField("Enabled");
final JCheckBox checkBox = new JCheckBox("Enable", true);
checkBox.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED){
textField.setEnabled(true);
textField.setText("Enabled");
}
else if(e.getStateChange() == ItemEvent.DESELECTED){
textField.setEnabled(false);
textField.setText("Disabled");
}
validate();
repaint();
}
});
add(checkBox);
add(textField);
}
public static final JCheckAndTextPane newInstance(){
return new JCheckAndTextPane();
}
}
}
// >單擊復選框 > 添加事件處理程序 > 項目 > ItemStateChange > 輸入代碼
// chckBox1 是我的變量名
chckBox2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(chckBox2.isSelected()) {
txtAddCandles.setEnabled(true);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.