0

私がしたこと?

-JFrameに10個のJCheckBoxを作成しました。例A、B、C、..

-例として、JCheckBoxごとに10個のJFrameを作成しました。例:JFrame A、JFrame B、JFrameC、..

-選択されているかどうかに関係なく、JCheckBoxの値を格納するためのArrayListを作成しました。

-JFrameのArrayListを作成し、各フレームを追加します。

私がやりたいこと?

複数のチェックボックスを選択した後、「次へ」をクリックすると、最初のチェックボックスの最初のJFrameが表示されます。

例を考えてみましょう。チェックボックスB、C、F、Hを選択した後、[次へ]をクリックします。JFrameBが表示されます。次にデータを入力し、もう一度[次へ]をクリックします。次に選択したチェックボックスがチェックされ、JFrameがここにCとして表示されます。次にJFrame F、最後にJFrameHです。

これらはどのようにすればよいですか?

4

1 に答える 1

0

必要な入力データを InputPanel クラスに追加します。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class TestGUI {
    JFrame frame;
    ArrayList<JCheckBox> checkBoxes = new ArrayList<JCheckBox>();
    JButton next = new JButton("Next");

    public TestGUI() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
        for (int i = 1; i <= 10; i++) {
            JCheckBox box = new JCheckBox(Integer.toString(i));
            box.setName(Integer.toString(i));
            checkBoxes.add(box);
            frame.add(box);
        }
        next.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                for (int i = 0; i < checkBoxes.size(); i++) {
                    if (checkBoxes.get(i).isSelected()) {
                        InputPanel panel = new InputPanel();
                        int choice = JOptionPane.showConfirmDialog(frame,
                            panel, "Get info for checkbox "
                            + checkBoxes.get(i).getName(),
                            JOptionPane.OK_CANCEL_OPTION);
                        if (choice == JOptionPane.OK_OPTION) {
                            System.out.println(panel.getText());
                        }
                    }
                }
            }
        });
        frame.add(next);
        frame.pack();
        frame.setVisible(true);
    }
    private class InputPanel extends JPanel {
        private JLabel label = new JLabel("Get some info");
        private JTextField text = new JTextField(10);

        public InputPanel() {
            add(label);
            add(text);
        }

        public String getText() {
            return text.getText();
        }
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                TestGUI gui = new TestGUI();
            }
        });
    }
}
于 2013-03-22T20:10:24.440 に答える