0

我有一系列 JCheckBoxes(1-20),每个都与一个 JTextField(1-20) 相关联。我希望每次选中一个框时都更新所有文本字段。这些字段将使用公式 100/(选中的复选框的总和)进行更新。因此,如果选中 checkbox1,则 textfield1 显示 100。如果还选中 checkbox15,则 textfield1 和 textfield15 显示 50。现在,当我选中 checkbox1 时,textfield1 显示 100,当我选中 checkbox2 时,显示 50,但 textbox1 保持在 100,而不是更新为50. 如何使所有文本字段同时更新?

es1-es20 是我的文本字段 p1 是我从中获得 100 的文本字段。evensplit 是我的 20 个文本字段的数组。

此外,除非我为每个文本字段声明我的数组,否则它确实有效。我应该在哪里声明我的数组,以便每个 actionevent 都可以访问它?

private void es1ActionPerformed(java.awt.event.ActionEvent evt) {
    JCheckBox evensplit[] = new JCheckBox[24];
    evensplit[0] = es1;
    evensplit[1] = es2;
    ...24 times

    int checknums = 0;

    for(int c = 0;c< evensplit.length; c++) {
        if(evensplit[c].isSelected()) {
            checknums++;
            double even = 100/checknums;
            p1.setText(String.valueOf(even));
        }
    }
}

private void es2ActionPerformed(java.awt.event.ActionEvent evt) {
    JCheckBox evensplit[] = new JCheckBox[24];
    evensplit[0] = es1;
    evensplit[1] = es2;
    ...24 times

    int checknums = 0;

    for(int c = 0;c< evensplit.length; c++) {
        if(evensplit[c].isSelected()) {
            checknums++;
            double even = 100/checknums;
            p2.setText(String.valueOf(even));
        }
    }

提前感谢您的帮助!

4

2 回答 2

1

对于JCheckBox / JRadioButton / JToggleButtonJComboBox使用

1)项目监听器

2)按钮组

3)按钮模型

于 2012-05-06T07:10:50.590 回答
0

您要设置的值取决于测试所有复选框,但您仍在循环中设置值 (setText())。您将不得不遍历所有复选框以计算选中的复选框,然后遍历所有字段以设置值。

要让两个例程都可以访问一个数组,请将其声明为实例变量;它将在类内,但在任一方法之外。

于 2012-05-06T03:34:26.200 回答