我正在通过JOptionPane.showOptionDialog
创建对话框。如果我设置Object[] options = null
并设置int optionType = JOptionPane.OK_CANCEL_OPTION
,我会得到很好的OK
和Cancel
按钮,带有文字和图标(可能是特定的外观?)。
但是我想用我自己的Icon添加第三个按钮,所以我明确指定了Object[] options = new Object[] {"OK", "Cancel", <some Icon object>}
。 Icon对象看起来很棒,但是现在我有一些丑陋的文本按钮可用于确定和取消。
有没有办法保留“内置”确定和取消按钮,同时还添加我自己的?
答案 0 :(得分:2)
不使用字符串表示“确定”和“取消”选项,而是使用带图标的JLabel或普通图标。
这是正确的,我通常会深入研究showOptionDialog
的源代码,看看它如何设置JOptionPane
(毕竟,它只是一种方便的方法),并显示了所需的内容为了达到预期的效果。
这似乎有效:
JPanel panel = new JPanel();
panel.add(new JButton("OK"));
panel.add(new JButton("Cancel"));
panel.add(new JButton("Custom"));
JOptionPane.showOptionDialog(null, "Message", "Title", JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE, null, new Object[] { panel }, null);
当然我没有为这个测试添加图标(我只是从main
运行它,所以没有父组件);将它们添加到按钮是微不足道的。您必须提供自己的ActionListener
来设置选择并关闭对话框。
如果你想要股票图标,你必须从UIManager.getIcon(String)
获得它们 - 找到它的名字将是更难的部分。我没有在Mac上的库存JOptionPane按钮上看到图标,甚至使用金属主题。