图像/文本未在JFrame中显示

时间:2014-02-24 23:07:49

标签: java image swing jframe

我想创建一个带有图像和文本的窗口到目前为止我已经得到了这个:

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给了我一个单独创建这个脚本的想法,修复和工作。我将不得不浏览整个程序,看看我是否遗漏了任何东西。在一个单独的类中创建它应该也可以。

2 个答案:

答案 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);