如何暂停循环,关闭JFrame后它将再次恢复并将进入下一个JFrame?

时间:2013-03-21 12:11:04

标签: java swing jframe

我做了什么?

在JFrame中处理了10个JCheckBox。前A,B,C,..

为每个JCheckBox处理10个JFrame作为例如,JFrame A,JFrame B,JFrameC,..

-Created ArrayList,用于存储JCheckBox的值,无论它是否被选中。

为JFrames处理了ArrayList,并且每个帧都被添加到其中。

我想做什么?

当我点击'next'时,选择多个CheckBox后,将出现First CHECKED BOX的第一个JFrame。

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

我该怎么做?

1 个答案:

答案 0 :(得分: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();
            }
        });
    }
}