【问题标题】:Image display in JFrameJFrame中的图像显示
【发布时间】:2012-05-31 03:36:49
【问题描述】:

我只是想知道为什么这个 100x100 像素的 .gif 图像没有显示在屏幕上。该图像位于同一目录中,因此程序应该没有问题找到它。有人知道如何解决这个问题吗?

import java.awt.*;
import java.awt.image.ImageObserver;
import java.io.File;
import javax.imageio.*;
import javax.swing.*;

public class Window extends JFrame{
//the pictures
ImageIcon guy = new ImageIcon("tester.gif");
JLabel pn = new JLabel(guy);
JPanel panel = new JPanel();

Window(){
    super("Photuris Lucicrescens");

    //Important
    setSize(700,600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    add(panel);
    setVisible(true);
    //Decoration
    Image customIcon = Toolkit.getDefaultToolkit().getImage("iconImage.gif");
    setIconImage(customIcon);
    //Adding the image
    add(pn);
}
}

【问题讨论】:

  • "this 100x100 px .gif image" 您指的是两张 GIF 图片中的哪一张?从源中修剪第二个。你在使用 IDE 吗?
  • 我用的是 tester.gif ,iconImage.gif 是用来装饰标题的!

标签: java image swing jframe jlabel


【解决方案1】:

问题在于您向 JFrame 添加了两个组件。当您将组件添加到 JFrame 时,它​​实际上会将其添加到其内容窗格中。默认情况下,内容窗格使用 BorderLayout 作为其 LayoutManager。如果不设置约束,则组件被认为在中心。因此,这里有两个组件位于中心并从 LayoutManager 接收相同的边界,导致只有一个组件被显示,另一个被隐藏。这就是您看到 JPanel 而不是 JLabel 的原因。

如果您想查看 JLabel,请不要将该面板添加到框架中。

其他说明:

  • setVisible() 应该在创建组件层次结构后调用。

【讨论】:

    【解决方案2】:

    我在我的电脑上试用它,图像显示在图标上。如果你想在背景上显示图片试试这个:

    import java.awt.Image;
    import java.awt.Toolkit;
    import javax.swing.*;
    
            public class Caine extends JFrame{
            //the pictures
            ImageIcon guy = new ImageIcon("tester.gif");
            JLabel pn = new JLabel(guy);
            JPanel panel = new JPanel();
    
            Caine(){
                super("Photuris Lucicrescens");
    
                //Important
                setSize(700,600);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                add(panel);
                setVisible(true);
                JLabel im = new JLabel(new ImageIcon("iconImage.gif"));
                setIconImage(customIcon);
                panel.add(im);
                add(pn);
            }
            }
    

    【讨论】:

    • 我不知道你把“setVisible()”放在哪里很重要!之后效果很好!谢谢你的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多