Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java swing JoptionPane_Java_Swing_Joptionpane - Fatal编程技术网

Java swing JoptionPane

Java swing JoptionPane,java,swing,joptionpane,Java,Swing,Joptionpane,我想用JavaSwing创建一个小游戏,我试图找到如何创建类似joptionpane的东西(将其放在ActionListener中),但要复杂一点。因此,到目前为止,当用户按下菜单中的选项时,将弹出一个joptionpane,用户将在其中选择玩家数量(2-4)。 之后,我希望这些用户给出一个名称,并从4种可用颜色中进行选择(绿色、蓝色、红色、黄色,如果有人选择蓝色,那么下一个用户将无法选择蓝色)。 因此,它必须包括一个地方,用户将写下他的名字和4个选项。 例如,如果有2名玩家,它应该只为2人获得

我想用JavaSwing创建一个小游戏,我试图找到如何创建类似joptionpane的东西(将其放在ActionListener中),但要复杂一点。因此,到目前为止,当用户按下菜单中的选项时,将弹出一个joptionpane,用户将在其中选择玩家数量(2-4)。 之后,我希望这些用户给出一个名称,并从4种可用颜色中进行选择(绿色、蓝色、红色、黄色,如果有人选择蓝色,那么下一个用户将无法选择蓝色)。 因此,它必须包括一个地方,用户将写下他的名字和4个选项。 例如,如果有2名玩家,它应该只为2人获得文本和选择。任何暗示都会很有帮助。谢谢你抽出时间。 这是我的actionListener类代码(已编辑): (编辑:目前我唯一想不出的是,当用户选择红色时,例如,蓝绿色和黄色将变成setEnabled(错误))


你最近还有一个尚未回答或投票的开放性问题,但你正在问一个新问题。你看到了吗?您应该使GUI代码面向创建JPanel。然后,您可以创建一个获取所有这些信息的JPanel,并将其放入JDialog中(就像您将JPanel放入JFrame中一样——这并不复杂),然后显示它。完成。他给了你基本上构建你自己的UI的构建块,用于捕获用户输入,这样你就可以在任何情况下重复使用它,这是我根据你的具体问题所建议的。
JOptionPane
允许指定一个
组件
作为消息,这使得API非常强大。这意味着您可以在
JPanel
之类的东西上设计基本UI,并将其作为消息参数提供给
JOptionPane
,作为
package testing5;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class StartListener implements ActionListener
    {
        public MainFrame theFrame;

        public StartListener(MainFrame frame)
        {
            theFrame = frame;
        }

        public void actionPerformed(ActionEvent e)
        {
            String[] options = new String[] {"2", "3", "4"};
            int response = JOptionPane.showOptionDialog(null, "How many players will take part?", "Number of players",
            JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
            null, options, options[0]);
            if(response == 0)
            {
                //theFrame.red.setFont(new Font("Serif", Font.ITALIC, 15));
                secondWindow(response);
            }
            else if(response == 1)
            {
                //theFrame.blue.setFont(new Font("Serif", Font.ITALIC, 15));
                secondWindow(response);
            }
            else if(response == 2)
            {
                //theFrame.green.setFont(new Font("Serif", Font.ITALIC, 15));
                secondWindow(response);
            }
        }


void secondWindow(int response1)
        {
            JRadioButton radioG = new JRadioButton("Green");
            JRadioButton radioR = new JRadioButton("Red");
            JRadioButton radioB = new JRadioButton("Blue");
            JRadioButton radioY = new JRadioButton("Yellow");
            JRadioButton radioG2 = new JRadioButton("Green");
            JRadioButton radioR2 = new JRadioButton("Red");
            JRadioButton radioB2 = new JRadioButton("Blue");
            JRadioButton radioY2 = new JRadioButton("Yellow");
            JRadioButton radioG3 = new JRadioButton("Green");
            JRadioButton radioR3 = new JRadioButton("Red");
            JRadioButton radioB3 = new JRadioButton("Blue");
            JRadioButton radioY3 = new JRadioButton("Yellow");
            JRadioButton radioG4 = new JRadioButton("Green");
            JRadioButton radioR4 = new JRadioButton("Red");
            JRadioButton radioB4 = new JRadioButton("Blue");
            JRadioButton radioY4 = new JRadioButton("Yellow");

            ButtonGroup buttonGroupGreen = new ButtonGroup();
            ButtonGroup buttonGroupRed = new ButtonGroup();
            ButtonGroup buttonGroupBlue = new ButtonGroup();
            ButtonGroup buttonGroupYellow = new ButtonGroup();

            JPanel pan = new JPanel();
            pan.setLayout(new GridLayout(0,1));
            //1
            JPanel pan1_1 = new JPanel();
            pan1_1.setLayout(new FlowLayout(FlowLayout.LEFT));
            JPanel pan1_2 = new JPanel();
            pan1_2.setLayout(new FlowLayout(FlowLayout.LEFT));
            JTextField tf = new JTextField(15);
            pan1_1.add(new JLabel("Name:"));
            pan1_1.add(tf);   
            pan1_2.add(radioG);
            pan1_2.add(radioR);
            pan1_2.add(radioB);
            pan1_2.add(radioY);
            pan.add(pan1_1);
            pan.add(pan1_2);
            //2
            JPanel pan2_1 = new JPanel();
            pan2_1.setLayout(new FlowLayout(FlowLayout.LEFT));
            JPanel pan2_2 = new JPanel();
            pan2_2.setLayout(new FlowLayout(FlowLayout.LEFT));  
            JTextField tf2 = new JTextField(15);
            pan2_1.add(new JLabel("Name:"));
            pan2_1.add(tf2);   
            pan2_2.add(radioG2);
            pan2_2.add(radioR2);
            pan2_2.add(radioB2);
            pan2_2.add(radioY2);            
            pan.add(pan2_1);
            pan.add(pan2_2);

            //buttonGroups
             buttonGroupRed.add(radioR);
             buttonGroupRed.add(radioR2);
             buttonGroupGreen.add(radioG);
             buttonGroupGreen.add(radioG2);
             buttonGroupYellow.add(radioY);
             buttonGroupYellow.add(radioY2);
             buttonGroupBlue.add(radioB);
             buttonGroupBlue.add(radioB2);
            //JDialog
            JDialog jd=new JDialog();
            jd.setLayout(new FlowLayout(FlowLayout.LEFT));
            jd.setMinimumSize(new Dimension(500,500));
            jd.setResizable(false);
            jd.add(pan);
            if(response1 == 0) //2 players
            {
                jd.setVisible(true);
            }
            else if(response1 == 1) // 3 players
            {
                JPanel pan3_1 = new JPanel();
                pan3_1.setLayout(new FlowLayout(FlowLayout.LEFT));
                JPanel pan3_2 = new JPanel();
                pan3_2.setLayout(new FlowLayout(FlowLayout.LEFT));  
                JTextField tf3 = new JTextField(15);
                pan3_1.add(new JLabel("Name:"));
                pan3_1.add(tf3);   
                pan3_2.add(radioG3);
                pan3_2.add(radioR3);
                pan3_2.add(radioB3);
                pan3_2.add(radioY3);            
                pan.add(pan3_1);
                pan.add(pan3_2);
                buttonGroupRed.add(radioR3);
                buttonGroupGreen.add(radioG3);
                buttonGroupYellow.add(radioY3);
                buttonGroupBlue.add(radioB3);
                jd.setVisible(true);
            }
            else //4 players
            {
                JPanel pan3_1 = new JPanel();
                pan3_1.setLayout(new FlowLayout(FlowLayout.LEFT));
                JPanel pan3_2 = new JPanel();
                pan3_2.setLayout(new FlowLayout(FlowLayout.LEFT));  
                JTextField tf3 = new JTextField(15);
                pan3_1.add(new JLabel("Name:"));
                pan3_1.add(tf3);   
                pan3_2.add(radioG3);
                pan3_2.add(radioR3);
                pan3_2.add(radioB3);
                pan3_2.add(radioY3);            
                pan.add(pan3_1);
                pan.add(pan3_2);
                buttonGroupRed.add(radioR3);
                buttonGroupGreen.add(radioG3);
                buttonGroupYellow.add(radioY3);
                buttonGroupBlue.add(radioB3);

                JPanel pan4_1 = new JPanel();
                pan4_1.setLayout(new FlowLayout(FlowLayout.LEFT));
                JPanel pan4_2 = new JPanel();
                pan4_2.setLayout(new FlowLayout(FlowLayout.LEFT));  
                JTextField tf4 = new JTextField(15);
                pan4_1.add(new JLabel("Name:"));
                pan4_1.add(tf4);   
                pan4_2.add(radioG4);
                pan4_2.add(radioR4);
                pan4_2.add(radioB4);
                pan4_2.add(radioY4);            
                pan.add(pan4_1);
                pan.add(pan4_2);
                buttonGroupRed.add(radioR4);
                buttonGroupGreen.add(radioG4);
                buttonGroupYellow.add(radioY4);
                buttonGroupBlue.add(radioB4);
                jd.setVisible(true);
            }       
        }