java - JOptionPane.showOptionDialog 返回错误值?

标签 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, 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);

我正在尝试使用图标按钮从选项对话框中检索选定的值。问题是,虽然对话框和按钮本身都正确显示,但每当单击按钮时...什么也没有发生,并且 println 语句也不会执行...直到我单击 X 关闭对话框,并且无论我之前单击了什么...都会打印 1 作为结果。奇怪的是,如果我将选项数组更改为代码中注释的常规(仅文本)数组,则对话框的行为就像预期返回所选选项的从 0 开始的索引一样。关于这里可能出什么问题的任何提示吗? 提前致谢

最佳答案

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

Object[] options = {icoR, icoI};

所以我想如果您传递按钮,它就假定您将自己处理选项 Pane 的关闭。

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

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

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

TextIcon的字体设置为与按钮相同。

关于java - JOptionPane.showOptionDialog 返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23841361/

相关文章:

java - 如何使用 JPA 映射 Map<EnumType, Double>?

java - 从日历到 Joda DateTime 的 JAXB 适配器

java - 如何在 Java 中延迟在按钮上显示图像

java - 如何获取 JFrame 中的所有元素?

Java Swing 相关字段验证

java - 如何在JTable中显示图像?

java - 如何在 weblogic.xml 中为虚拟目录映射的 <local-path> 设置动态路径

java - Android-模拟鼠标悬停/悬停

java - 如何将python中的定位代码转换为kotlin?

java - 如何使用 BoxLayout 让组件与 JPanel 中的顶部对齐?