我得到以下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中检索所选值。问题是,只要单击按钮,就可以正确显示对话框和按钮本身.. nothign发生,并且println语句没有执行...直到我点击X关闭对话框,无论我点击了什么之前..结果打印1。奇怪的是,如果我将options数组更改为在代码中出现注释的常规(仅文本),则对话框的行为与预期返回所选选项的从0开始的索引一样。关于这里可能出错的任何提示? 提前谢谢
答案 0 :(得分:1)
如果您只是传递图标,选项窗格将为您创建按钮:
Object[] options = {icoR, icoI};
所以我想如果你通过按钮,它会假定你将自己处理选项窗格的关闭。
作为一种解决方法,您可以使用Compound Icon类创建包含文本和图像的图标。
您可能还想使用Text Icon
,您也可以从上面的链接中找到它。创建TextIcon时,您可能需要使用:
setFont( UIManager.getFont("Button.font") );
将TextIcon
的字体设置为与按钮相同。