【问题标题】:java gui image problem : doesn't display in the backgroundjava gui图像问题:不显示在后台
【发布时间】:2011-01-05 12:24:53
【问题描述】:

我有一个疑问,为什么我的图像没有显示在我的程序背景中。我的意思是我做了所有必要的步骤,但它仍然不会显示。代码运行完美,但没有显示图像。目录写在图片的好位置。我正在使用带有 gui 的 java。如果有人能帮我解决我的问题,我将不胜感激:) 下面是代码:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;

public class hehe extends JPanel{

    public hehe(){

            setOpaque(false);
            setLayout(new FlowLayout()); 
          }

    public static void main (String args[]){
           JFrame win = new JFrame("yooooo"); // it is automaticcally hidden

           JPanel mainPanel = new JPanel(new BorderLayout()); 
                win.add(mainPanel);

     JLabel titleLabel = new JLabel("title boss"); 
           titleLabel.setFont(new Font("Arial",Font.BOLD,18)); 
           titleLabel.setForeground(Color.blue);
           mainPanel.add(titleLabel,BorderLayout.NORTH);

           win.setSize(382,269); // the dimensions of the image
           win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           win.setVisible(true);
        }


            public void paint(Graphics g) {

                      Image a = Toolkit.getDefaultToolkit().getImage("C:\\Users\\andrea\\Desktop\\Gui\\car"); // car is the name of the image file and is in JPEG
                g.drawImage(a,0,0,getSize().width,getSize().height,this);
                super.paint(g);
            }
            }

【问题讨论】:

    标签: java image user-interface swing


    【解决方案1】:

    在您提供的代码中,您的 main() 方法中没有对 hehe 类的引用。我猜你会想要创建那个对象并将它添加到你的窗口中。

    您还需要在文件名中包含 .jpg 扩展名

    【讨论】:

    • 做了扩展,我会尝试创建对象
    • 你的意思是这样写:hehe c = new hehe(); // 跳过一行 win.add(c);你是这个意思吗?
    • 是的,这就是您创建 hehe 对象的方式。我的意思是更改您的代码,然后编辑问题以显示您的新代码。我仍然不太清楚您要做什么。我猜你也想让 mainPanel 不透明,让它显示下面的 hehe 面板。
    • 我到底想做的是让我的 JPEG 图像文件在程序执行期间显示在程序的背景上,而这并没有发生。
    【解决方案2】:

    super.paint() 绘制图像后绘制背景并且图像被隐藏。 在绘制图像之前尝试 setOpaque(false) 或更改顺序调用 super.paint()。

    还要避免在paint() 方法中获取图像。 Paint 经常被调用,所以你每次都在 paint() 上读取你的图像。为图像创建一个字段并在创建时读取一次。

    【讨论】:

    • setOpaque(false) 已经是假的,你的意思是设置它为真?它仍然没有桌面背景。我尝试将 super.paint() 放在行开始之前 - Image a ... - 和行开始 - g.drawImage .. _ 但仍然没有效果。我真的很困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2015-06-01
    • 2013-07-25
    相关资源
    最近更新 更多