1

我正在尝试在 JOption 窗格的标题中使用自定义图标,而不是使用标签。有没有办法我可以做到这一点?我正在使用 Icon 类(如下所示),JOptionPane但它一直在主显示区域而不是标题中显示图标。这是代码:

Icon icon = new ImageIcon(ApplicationManager.getApplicationImage().getImage());
String jid = (String)JOptionPane.showInputDialog(ApplicationManager.getMainWindow(), 
                 Res.getString("label.enter.address"), 
                 Res.getString("title.start.chat"), 
                 JOptionPane.QUESTION_MESSAGE, 
                 icon,                    
                 null, 
                 selectedUser);

谢谢

4

4 回答 4

4

试试这个代码..

import javax.swing.JOptionPane;
import javax.swing.JDialog;
import javax.imageio.ImageIO;
import java.awt.Image;
import java.net.URL;

class OptionPaneIcon {

    public static void main(String[] args) throws Exception {
        JOptionPane jop = new JOptionPane(
            "Message",
            JOptionPane.QUESTION_MESSAGE,
            JOptionPane.DEFAULT_OPTION
            );

        JDialog dialog = jop.createDialog("Dialog Title");

        Image image = ImageIO.read(new URL(
            "http://www.gravatar.com/avatar/f1d58f7932b6ae8027c4e1d84f440ffe?s=128&d=identicon&r=PG"));
        dialog.setIconImage( image );
        dialog.setVisible(true);
    }
}
于 2010-10-13T17:54:25.783 回答
3

JOptionPane 从父框架中获取其图标。因此,您可以在虚拟 JFrame 上设置图标,并将其传递给 JOptionPane 调用:

    BufferedImage image = ImageIO.read(new URL(
    "http://www.gravatar.com/avatar/f1d58f7932b6ae8027c4e1d84f440ffe?s=128&d=identicon&r=PG"));
    JFrame frame = new JFrame();
    frame.setIconImage(image);
    JOptionPane.showInputDialog(frame, "Enter Address", "Chat",
            JOptionPane.QUESTION_MESSAGE, null, null, "");

请注意,这可能会导致显示对话框的位置出现问题,因为它将相对于传入的虚拟 JFrame 放置。

于 2010-10-21T14:48:13.020 回答
1

还没有尝试过,但您可能会使其与内部框架一起使用,而不是使用对话框。尝试创建一个实例JOptionPane并调用getInternalFrame(). JInternalFrame 有一个setFrameIcon(Icon icon)方法。

编辑:当然,JInteralFrame的父母必须是 a JDesktopPane,但除此之外它应该可以工作。

于 2010-10-13T16:31:46.503 回答
0

你好,

这不起作用,因为我有一些预先选择的值,我需要填充输入对话框,因此不能使用 JOptionPane 构造函数,而是必须使用 showInputDialog 方法。

因此,我相信在使用 showInputDialog(.,.,.,.,.,.,.) 时我不能使用自定义图标

谢谢。

于 2010-10-19T14:44:18.033 回答