JAVA JPanel 不显示图像

标签 java jpanel bufferedimage imageicon

我目前正在尝试从 url 读取图像(谷歌街景)并将其添加到 JPanel 中。首先,我使用 url“https://maps.googleapis.com/maps/api/streetview?size=600x300&location=46.414382,10.013988”并尝试从中读取图像,然后将此图像添加到我将显示的 jpanel 中。我没有收到任何编译或运行时错误,但是 JPanel 永远不会弹出,所以我无法判断我的图像是否在上面。这里有什么想法吗?

编辑:澄清一下,我想弹出一个新窗口,其中包含从 URL 读取的图像,而不是将图像添加到现有面板

URL url = new URL("https://maps.googleapis.com/maps/api/streetview?size=600x300&location=46.414382,10.013988");
BufferedImage streetView  = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(streetView));
JPanel panel = new JPanel();
panel.add(label);
panel.setLocation(0,0);
panel.setVisible(true);

最佳答案

I want to pop up a new window which will display this image in the URL, not add it to an existing frame

我问你为什么希望它显示为一个窗口,你说,

I would expect it to because I have instantiated it and call setVisible on it.

了解 JPanel 是一个容器组件,它包含其他组件,但没有显示完整 GUI 的机制。为此,您需要将其放入某种类型的顶级窗口中,例如 JFrame、JDialog、JApplet 或 JOptionPane 或放入顶级窗口中显示的另一个容器中。

然后创建一个对话框窗口并在其中显示图像。最简单的是 JOptionPane:

URL url = new URL("https://maps.googleapis.com/maps/api/streetview?size=600x300&location=46.414382,10.013988");
BufferedImage streetView  = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(streetView));
// JPanel panel = new JPanel();
// panel.add(label);

// code not needed:
// panel.setLocation(0,0);
// panel.setVisible(true);

// mainGuiComponent is a reference to a component on the main GUI
// or null if there is no main GUI.
JOptionPane.showMessageDialog(mainGuiComponent, label);

请注意,您只需将 ImageIcon 传递到 JDialog 中就足够了

JOptionPane.showMessageDialog(mainGuiComponent, myImageIcon);

关于JAVA JPanel 不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548327/

相关文章:

栅格之外的 Java getSubimage()

java - Scala - 当一个参数必须为 null 时,如何明确选择要使用的重载方法?

java - jPanel 未显示在 jLayeredPane 内

java - 将 JPanel 暴露给外部 jar

java - arraylist 排序并转换为 String[]

java - 无法在 OSX 上启动 Eclipse(版本不适合)

java - JPanel 不显示

java - 如何在 Java 中对 BufferedImage 进行去饱和处理?

java - 从 Java 打印 PDF 文档时,部分文本会旋转

Java Swing : JTable tableChanged does not work after model is updated