Java swing JoptionPane
我想用JavaSwing创建一个小游戏,我试图找到如何创建类似joptionpane的东西(将其放在ActionListener中),但要复杂一点。因此,到目前为止,当用户按下菜单中的选项时,将弹出一个joptionpane,用户将在其中选择玩家数量(2-4)。 之后,我希望这些用户给出一个名称,并从4种可用颜色中进行选择(绿色、蓝色、红色、黄色,如果有人选择蓝色,那么下一个用户将无法选择蓝色)。 因此,它必须包括一个地方,用户将写下他的名字和4个选项。 例如,如果有2名玩家,它应该只为2人获得文本和选择。任何暗示都会很有帮助。谢谢你抽出时间。 这是我的actionListener类代码(已编辑): (编辑:目前我唯一想不出的是,当用户选择红色时,例如,蓝绿色和黄色将变成setEnabled(错误))Java swing JoptionPane,java,swing,joptionpane,Java,Swing,Joptionpane,我想用JavaSwing创建一个小游戏,我试图找到如何创建类似joptionpane的东西(将其放在ActionListener中),但要复杂一点。因此,到目前为止,当用户按下菜单中的选项时,将弹出一个joptionpane,用户将在其中选择玩家数量(2-4)。 之后,我希望这些用户给出一个名称,并从4种可用颜色中进行选择(绿色、蓝色、红色、黄色,如果有人选择蓝色,那么下一个用户将无法选择蓝色)。 因此,它必须包括一个地方,用户将写下他的名字和4个选项。 例如,如果有2名玩家,它应该只为2人获得
你最近还有一个尚未回答或投票的开放性问题,但你正在问一个新问题。你看到了吗?您应该使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);
}
}