1

次のように for ループで複数のチェック ボックスを作成する必要がある Java プログラムを作成しています。

123 409 123 []
234 587 344 []
342 534 343 []

チェックされている行の値のみを使用する必要があります。その行から選択した値を使用する方法よりも、複数のチェック ボックスを作成する方法を教えてください。

3つの値すべてが必要な場合よりも最初の行が選択されているとします。

1 つのループで少なくとも 30 個のチェックボックスを作成する必要があり、4 つのループがあります。実装方法がわかりません。

4

1 に答える 1

1

結果を得るのに役立つ生の例を少し実装しました。これを試してみることをお勧めします。それでニーズが満たされる場合は、詳細をお知らせし、回答を編集させていただきます。1行だけを選択する必要がある場合は、 を選択する必要があることに注意してくださいJRadioButton

package stackoverflow.answers;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.util.*;

import javax.swing.*;

public class SwingCheckBoxDemo extends JPanel implements ItemListener {

    private HashMap<JCheckBox, ArrayList<Integer>> map = new HashMap<>();
    private JLabel _label;

    private static final int MAX_CHECKS = 30;

    public SwingCheckBoxDemo() {
        super(new BorderLayout());

        JCheckBox checkBox;
        Random r = new Random();

        JPanel checkPanel = new JPanel(new GridLayout(0, 1));
        _label = new JLabel("You selected nothing");
        checkPanel.add(_label);

        for (int i = 0; i < MAX_CHECKS; i++) {
            StringBuilder sb = new StringBuilder();
            ArrayList<Integer> a = new ArrayList<>();
            for (int j = 0; j < 3; j++) {
                Integer temp = (r.nextInt()) % 100;
                a.add(temp);
                sb.append(temp).append(" ");
            }

            checkBox = new JCheckBox(sb.toString().trim());
            checkBox.setName("CheckBox" + i);
            checkBox.addItemListener(this);
            map.put(checkBox, a);
            checkPanel.add(checkBox);
        }

        add(checkPanel);

    }

    public void itemStateChanged(ItemEvent e) {

        JCheckBox source = (JCheckBox) e.getItemSelectable();

        if (e.getStateChange() == ItemEvent.SELECTED) {

            ArrayList<Integer> list = map.get(source);

            _label.setText("You've just selected " + list);

        }

    }

    private static void createAndShowGUI() {

        JFrame _frame = new JFrame("Check box loop");
        _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        _frame.setSize(800, 600);

        JComponent newContentPane = new SwingCheckBoxDemo();
        newContentPane.setOpaque(true);
        _frame.setContentPane(newContentPane);

        _frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
于 2013-01-22T22:40:16.570 に答える