テキストフィールドの横にJavaチェックボックスがあります。
チェックボックスがオンになっている場合はテキストボックスを有効にし、有効になっていない場合は選択しないようにします。if
メソッドを使用してステートメントを試しましたisSelected()
が、何も実行されませんでした。
JCheckBoxの状態変化にどのように対応できますか?
テキストフィールドの横にJavaチェックボックスがあります。
チェックボックスがオンになっている場合はテキストボックスを有効にし、有効になっていない場合は選択しないようにします。if
メソッドを使用してステートメントを試しましたisSelected()
が、何も実行されませんでした。
JCheckBoxの状態変化にどのように対応できますか?
提案:
ItemListener
に を登録するJCheckBox
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();
}
}
}
メソッドを使用しisSelected
ます。
次に、を使用して、ItemListener
チェックされているかチェックされていないかを通知します。
また、isSelectedメソッドの状態に応じて、を有効または無効にできますJTextBox
。