Java 将标题中的自定义图标与JOptionPane.showInputDialog一起使用
我试图在JOption窗格的标题中使用自定义图标,而不是标签。我有办法做到吗?我在JOptionPane中使用图标类,如下所示,但它会在主显示区域而不是标题中显示图标。 代码如下:Java 将标题中的自定义图标与JOptionPane.showInputDialog一起使用,java,swing,joptionpane,Java,Swing,Joptionpane,我试图在JOption窗格的标题中使用自定义图标,而不是标签。我有办法做到吗?我在JOptionPane中使用图标类,如下所示,但它会在主显示区域而不是标题中显示图标。 代码如下: Icon icon = new ImageIcon(ApplicationManager.getApplicationImage().getImage()); String jid = (String)JOptionPane.showInputDialog(ApplicationManager.getMainWind
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);
谢谢你,我还没有试过,但是你可以让它使用一个内部框架,而不是使用一个对话框。尝试创建JOptionPane的实例并调用getInternalFrame。JInternalFrame有一个SetFrameIcon图标方法
编辑:当然JInteralFrame的父对象必须是JDesktopPane,但除此之外,它还可以工作。没有尝试过它,但您可以让它使用内部框架,而不是使用对话框。尝试创建JOptionPane的实例并调用getInternalFrame。JInternalFrame有一个SetFrameIcon图标方法 编辑:当然,JInteralFrame的父级必须是JDesktopPane,但除此之外,它还可以工作。试试这段代码
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);
}
}
请尝试此代码
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);
}
}
嗨
这将不起作用,因为我有一些需要填充输入对话框的预选值,因此不能使用JOptionPane构造函数,而必须使用showInputDialog方法 因此,我认为在使用showInputDialog时不能使用自定义图标 谢谢。嗨
这将不起作用,因为我有一些需要填充输入对话框的预选值,因此不能使用JOptionPane构造函数,而必须使用showInputDialog方法 因此,我认为在使用showInputDialog时不能使用自定义图标
谢谢。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放置。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放置。这不起作用,因为我有一些需要填充输入对话框的预选值,因此不能使用JOptionPane构造函数,而必须使用showInputDialog方法。。谢谢。这不起作用,因为我有一些预先选择的值,我需要用这些值填充输入对话框,因此不能使用JOptionPane构造函数,而必须使用showInputDialog方法。。谢谢