我想创建一个带有图像和文本的窗口到目前为止我已经得到了这个:
public void ShowPng1() {
ImageIcon theImage = new ImageIcon("Icon_Entry_21.gif");
panel.setSize(270, 270);
JLabel label = new JLabel("Hello, World!");
JLabel imageLabel = new JLabel(theImage);
imageLabel.setOpaque(true);
panel.add(imageLabel);
panel.add(label);
panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setVisible(true);
}
我的小组:
private JFrame panel = new JFrame();
由于某种原因,它不会加载,也不会加载图像或文本,它只会弹出一个白色窗口。可能是什么问题?我也尝试将格式更改为.png
,但无效。
更新
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Img {
private JFrame panel = new JFrame();
public Img(){
ShowPng1();
}
public void ShowPng1() {
ImageIcon theImage = new ImageIcon("Icon_Entry_21.gif");
panel.setSize(300, 300);
panel.setResizable(false);
JLabel label = new JLabel("Hello, World!");
JLabel imageLabel = new JLabel(theImage);
imageLabel.setOpaque(true);
panel.add(imageLabel);
panel.add(label, BorderLayout.PAGE_END);
panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setVisible(true);
}
public static void main(String[] args) {
new Img();
}
}
我设法让这个工作,这是荒谬的,因为我无法弄清楚如何使它与我的程序一起工作。 Reimeus给了我一个单独创建这个脚本的想法,修复和工作。我将不得不浏览整个程序,看看我是否遗漏了任何东西。在一个单独的类中创建它应该也可以。
答案 0 :(得分:3)
它只是弹出一个白色的窗口
听起来你在启动时阻止了EDT。您可能需要使用Swing's concurrency mechanisms之一来解决它。发布Minimal, Complete, Tested and Readable example,以便我们确定这一点。
与此同时......
您正在替换theImage
位置中包含BorderLayout.CENTER
组件的组件
panel.add(label);
您可以整理标签,以便它们可以同时显示(将组件放置在2个不同的BorderLayout
位置)
panel.add(imageLabel);
panel.add(label, BorderLayout.PAGE_END);
答案 1 :(得分:0)
你应该制作一个JPanel并将其添加到框架中,然后将标签添加到面板
像
这样的东西 private JPanel panel = new JPanel;
然后将其添加到方法调用中的框架
frame.add(panel);