0

我做了什么?

- 在 JFrame 中创建了 10 个 JCheckBox。例如 A、B、C、..

- 为每个 JCheckBox 创建 10 个 JFrame,例如,JFrame A、JFrame B、JFrameC、..

- 创建 ArrayList 用于存储 JCheckBoxes 的值,无论它是否被选中。

- 为 JFrames 创建 ArrayList 并将每个 Frame 添加到其中。

我想做的事?

选择多个复选框后,当我单击“下一步”时,将出现第一个选中框的第一个 JFrame。

考虑示例:我选择了复选框 B、C、F、H 之后,我将单击“下一步”,JFrame B 将出现。现在我将输入数据,然后再次单击“下一步”,它将检查下一个选中的复选框,JFrame 将显示为此处 C。然后是 JFrame F,最后是 JFrame H。

我该怎么做这些?

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 回答