更改JOptionPane中的图标

我有一个扩展JOptionPane的类。 在其中有一个方法调用showConfirmDialog (new JFrame(), (JScrollPane) jp, "Friends List", 2, 0, icon);

有没有办法更改图标而无需再次调用showConfirmDialog ? 也就是说,根据我在JOptionPane输入,我可以在不进行新的确认对话框的情况下更改图标吗?

如此处所示,您可以将JOptionPane添加到Dialog并侦听所需的PropertyChangeEvent 。 以下示例在响应单击按钮时在两个UIManager图标之间切换。

图片

 JDialog d = new JDialog(); d.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); final Icon PENDING = UIManager.getIcon("html.pendingImage"); final Icon MISSING = UIManager.getIcon("html.missingImage"); final JOptionPane optionPane = new JOptionPane("Click a Button", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); optionPane.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName().equals(JOptionPane.VALUE_PROPERTY)) { Integer value = (Integer) e.getNewValue(); if (value.intValue() == JOptionPane.YES_OPTION) { optionPane.setIcon(PENDING); } else { optionPane.setIcon(MISSING); } } } }); d.setContentPane(optionPane); d.pack(); d.setLocationRelativeTo(null); d.setVisible(true);