Java JOptionPane.showOptionDialog是否返回错误的值?

Java JOptionPane.showOptionDialog是否返回错误的值?,java,swing,Java,Swing,我得到了以下java代码 Icon icoR = new ImageIcon("src/resources/Republica.png"); Icon icoI = new ImageIcon("src/resources/Imperio.png"); JButton botRep = new JButton("Jedi", icoR); JButton botImp = new JButton("Sith", icoI); Object[] options = {botRep, bo

我得到了以下java代码

 Icon icoR = new ImageIcon("src/resources/Republica.png");
 Icon icoI = new ImageIcon("src/resources/Imperio.png");
 JButton botRep = new JButton("Jedi", icoR);
 JButton botImp = new JButton("Sith", icoI);
 Object[] options = {botRep, botImp};
 //Object[] options = {"Jedi","Sith"};
 int i = JOptionPane.showOptionDialog(
     null,
     "Question","Title",
     JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE,
     null,options,options[0]);
 System.out.println(i);
我正试图用图标按钮从optionDialog中检索所选值。问题是,尽管对话框和按钮本身被正确显示,但只要点击按钮。。未进行任何签名,并且println语句未执行。。。直到我点击X关闭对话框,不管我之前点击了什么。。结果将打印1。奇怪的是,如果我将选项数组更改为在代码中显示为注释的常规(仅文本)数组,则对话框的行为将与预期的一样,返回所选选项的基于0的索引。这里有什么问题吗?
提前感谢

如果您只需传递图标,选项窗格将为您创建按钮:

Object[] options = {icoR, icoI};
因此,我猜如果您传递按钮,它假定您将自己处理选项窗格的关闭

作为解决方法,您可以使用该类创建包含文本和图像的图标

您可能还想使用
文本图标
,您也可以从上面的链接中找到该图标。创建文本图标时,您可能需要使用:

setFont( UIManager.getFont("Button.font") );

要将
文本图标的字体设置为与按钮相同。

对不起,请尝试将图标本身传递给自己-注意,在ipad上键入sucks@MadProgrammer,就像我试图不戴眼镜打字一样:)我看到,当选项对象是组件时,它应该按预期工作。为什么我们应该传递图标呢?你能解释一下吗?
我知道,当选项对象是组件时,它应该能按预期工作。
-API只是说它们被正确地呈现了。这并不是说如果你使用一个按钮,ActionListener会自动添加到按钮中。我只是建议另一种选择。太好了,我现在可以得到它了。谢谢当然,只传递图标就可以了,非常感谢!