Java 如何使用showMessageDialog中的选项进行操作?

Java 如何使用showMessageDialog中的选项进行操作?,java,jbutton,joptionpane,Java,Jbutton,Joptionpane,我正在用Java做一个游戏,我正在做一个角色选择菜单。在该菜单中,我有字符,如果用户单击某个字符,则会出现JOptionPane.showMessageDialog显示该字符的统计信息。所以我的问题是,如果这个人点击了“ok”,这是在使用这个函数时自动创建的,那么我该如何得到它来选择角色呢 JButton chuck = new JButton(new ImageIcon("8bitChuckNorris.jpg"));//this part of program runs this if us

我正在用Java做一个游戏,我正在做一个角色选择菜单。在该菜单中,我有字符,如果用户单击某个字符,则会出现JOptionPane.showMessageDialog显示该字符的统计信息。所以我的问题是,如果这个人点击了“ok”,这是在使用这个函数时自动创建的,那么我该如何得到它来选择角色呢

JButton chuck = new JButton(new ImageIcon("8bitChuckNorris.jpg"));//this part of program runs this if user picks lizard
chuck.setSize(210,175); //sets size of button
chuck.setLocation(300,317); //sets location of button
chuck.addActionListener(new ActionListener() {
    public void actionPerformed (ActionEvent e) {    
        JOptionPane.showMessageDialog(null, "\t\tSTATS\nAttack\ndefence\nspecial");
    }
});

最简单的方法可能是提供一个
ActionListener
可以在 选项窗格已关闭,例如

chuck.addActionListener(new ActionListener() {
    public void actionPerformed (ActionEvent e) {    
        JOptionPane.showMessageDialog(null, "\t\t                  STATS\nAttack\ndefence\nspecial");
        characterSelected("chuck"); // Pass whatever you need to identify the character
    }
});
已更新

使用
JOptionPane.showConfirmDialog
会更容易,因为它实际上会返回一个
int
结果,表示用户选择的选项(或者-1,如果他们没有选择任何内容就取消了对话框)


作业窗格
可以调用欢迎使用堆栈溢出后,
操作执行
方法可以调用的方法!不要使用
null
布局。像素完美布局在现代UI设计中是一种错觉,您无法控制字体、DPI、渲染管道或其他因素,这些因素将改变组件在屏幕上的渲染方式。Swing设计用于与布局管理器协作以克服这些问题。如果你坚持忽略这些特性,反对API设计,那么就要准备好面对很多麻烦和永不停息的艰苦工作……先生或女士,我不是指任何不尊重,很明显你知道你在说什么,但我是个新手,我不会接受到那种程度,我也不太明白你刚才说的话。基本上,你不应该使用
null
布局(或绝对布局),因为你没有考虑到没有两个系统是完全相同的这一事实,这意味着你所有精彩的工作以及将组件放置在像素位置/大小上都可能在你在另一个系统上运行的那一刻就被撤销……哦,好吧!等等,那我还有什么别的办法呢?我想你误解了我的问题。您知道JOptionPane.showMessageDialog如何创建弹出窗口,并在该弹出窗口中创建右上角的“确定”按钮和“关闭”按钮。我想使用ok作为选择的字符,以便使用类似
JOptionPane@showConfirmDialog
 switch (JOptionPane.showConfirmDialog(null, "\t\t                  STATS\nAttack\ndefence\nspecial", "Character", JOptionPane.OK_CANCEL_OPTION)) {
     case JOptionPane.OK:
         // Process selection...
         break;
 }