0

一連のJCheckBoxes(1-20)があり、それぞれがJTextField(1-20)に関連付けられています。チェックボックスをオンにするたびに、すべてのテキストフィールドを更新したいと思います。フィールドは、式100 /(チェックされているチェックボックスの合計)で更新されます。したがって、checkbox1がチェックされている場合、textfield1は100を表示します。checkbox15もチェックされている場合、textfield1とtextfield15は50を表示します。現在、checkbox1をチェックするとtextfield1は100を表示し、checkbox2をチェックすると50を表示しますが、textbox1は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/JToggleButtonまたはJComboBoxの使用

1)ItemListener

2)ButtonGroup

3)ButtonModel

于 2012-05-06T07:10:50.590 に答える
0

設定する値は、すべてのチェックボックスのテストによって異なりますが、ループ内にいる間に値(setText())を設定しています。チェックされたチェックボックスを数えるためにすべてのチェックボックスをループし、次にすべてのフィールドをループして値を設定する必要があります。

1つの配列に両方のルーチンからアクセスできるようにするには、それをインスタンス変数として宣言します。クラス内にありますが、どちらのメソッドの外にもあります。

于 2012-05-06T03:34:26.200 に答える