我在JMenu中有一个JCheckBoxMenuItem。 我的任务很简单:选中它后,它应该会触发一个DialogBox,换句话说就是JFileChooser。如果未选中,则不执行任何操作。 问题:选择它时效果很好,但是当未选择时它仍然保持相同的状态。
这是代码:
JCheckBoxMenuItem checkBox = new JCheckBoxMenuItem("ChebkBox");
checkBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if(checkBox.isSelected())
{
System.out.println("SELECTED!");
checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showSaveDialog(checkBox) == JFileChooser.APPROVE_OPTION) {
//DIALOG BOX CODE....
});
我不确定问题出在哪里,也许与嵌套的动作列表有关。即使未选中该复选框也将被触发。 有办法解决这个问题吗?
答案 0 :(得分:1)
问题是您正在检查isSelected在错误的位置。 您应该检查actionPerformed内部的选择。
checkBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
System.out.println("SELECTED!");
checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (checkBox.isSelected()) {
if (fileChooser.showSaveDialog(checkBox) == JFileChooser.APPROVE_OPTION) {
// DIALOG BOX CODE....
}
}
};
});
}
});