检查jCheckBox1,取消选中jCheckBox2

时间:2016-08-04 07:22:08

标签: java swing jcheckbox

我在表单上放了两个复选框。如果用户设置check1复选框而不是复选checkbox2,反之亦然。

public static void main(String[] args)
    {    File file = null;
        WordExtractor extractor = null;
        try
        {  
            file = new File("C:/Users/DSAL454/Desktop/Audit final.doc");
            FileInputStream fis = new FileInputStream(file.getAbsolutePath());
            FileOutputStream os = new  FileOutputStream("C:/Users/DSAL454/Desktop/Audit fin.doc");
            HWPFDocument document = new HWPFDocument(fis);
            extractor = new WordExtractor(document);

            System.out.println("total length ");
            String[] fileData = extractor.getParagraphText();
            for (int i = 0; i < fileData.length; i++)
            {
                if (fileData[i] != null)
                    System.out.println(fileData[i]);
                String str1=fileData[i].replaceAll("[\"#%*:<>?/|]","_");
                String str2=str1.replace("\\","_");
                System.out.println(str2);
                os.write(str2.getBytes());

            }       
        }
        catch (Exception exep)
        {
            exep.printStackTrace();
        }
    }

当我检查chRISING0并在chFR0上移动鼠标时会发生奇怪的问题。比chRISING0取消,即使我没有按下chFR0。 为什么?我做错了什么?

2 个答案:

答案 0 :(得分:5)

如果您使用ButtonGroup会更容易。有关详细信息,请参阅How to Use the ButtonGroup Component

答案 1 :(得分:0)

<强>更新

我在之前的回答中混淆了两位听众(我没有对摆动进行一段时间的编码)。您必须使用ItemListener,因为它负责开/关更改。

chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

已弃用:

chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
            chFR0.setSelected(false);
    }
});

您正在使用ItemListener。尝试使用ChangeListener,就像使用第二个CheckBox一样。

chRISING0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

ItemListener对组件状态更改做出反应(当您将鼠标悬停在组件上或点击它时状态会发生变化)与ChangeListener不同。