Java JOptionPane.showOptionDialog是否返回错误的值?
我得到了以下java代码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
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会自动添加到按钮中。我只是建议另一种选择。太好了,我现在可以得到它了。谢谢当然,只传递图标就可以了,非常感谢!