Я минимизировал свою программу, чтобы включить только проблему, и я попытался закодировать точно так, как я понял из многих примеров. Когда я использовал ActionListener
, я решил проблему. Но мне интересно, почему использование ItemListener
, флажок не работает правильно. Если я запускаю свою программу без ItemListener
, она работает правильно. При этом ItemListener
, checkBox не изменяет состояние.Java JCheckBox ItemListener заставляет программу работать некорректно
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class omaJFrame extends JFrame{
private JCheckBox checkBox1;
public omaJFrame() {
super("Window Title");
TheHandler handler = new TheHandler();
setLayout(new FlowLayout());
checkBox1 = new JCheckBox("Checkbox 1");
add(checkBox1);
checkBox1.addItemListener(handler);
}
private class TheHandler implements ItemListener {
String output = "";
public void itemStateChanged(ItemEvent event) {
if (event.getItem()==checkBox1)
output = String.format("%s", checkBox1.isSelected());
JOptionPane.showMessageDialog(null, output);
}
}
}
import javax.swing.JFrame;
public class EventHandlerMain {
public static void main(String[] args) {
omaJFrame window = new omaJFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(350,200);
window.setVisible(true);
}
}
Я думаю, что это та же самая проблема: http://stackoverflow.com/a/8291984/655249 –
возможно дубликат [JOptionPane появляться на выбранном JCheckBox] (http://stackoverflow.com/questions/ 2532941/joptionpane-to-seem-on-selected-jcheckbox) – trashgod