微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JFrame 中设置背景

如何解决在 JFrame 中设置背景

我想在 JFrame 中添加背景,所以我在 YouTube 上搜索并找到了一个视频,但它不起作用我尝试了另一个但它也不起作用所以我的代码有什么问题 因为我一直在启动它只是不存在但日食不会标记任何错误

package Pack;




import javax.swing.*;

public class Gui {

    public Gui(){
        JLabel background;
          Var.jf = new JFrame(); 
           Var.jf.setSize(Var.screenwidth,Var.screenheight);
           Var.jf.setTitle("test");
           Var.jf.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
           Var.jf.setResizable(false);
           Var.jf.setVisible(true);
           Var.jf.setLocationRelativeto(null);
           Var.jf.setLayout(null);
          ImageIcon img = new ImageIcon("Bilder/Testbild");
         
          background =  new JLabel("",img,JLabel.CENTER);
          background.setBounds(0,1000,1000);
         
          Var.jf.add(background);
           
           Var.Buttonxstart = new JButton("Start");
           Var.Buttonxstart.setBounds(300,220,400,120);
           Var.jf.add(Var.Buttonxstart);
         
           Var.Buttonxclose = new JButton("Exit");
           Var.Buttonxclose.setBounds(300,440,120);
           Var.jf.add(Var.Buttonxclose);
          
           
           
           
        
    }
    
    
}

.

package Pack;

import javax.swing.JButton;
import javax.swing.JFrame;

  public class Var {
  static JFrame jf;
  static int screenheight = 1000;
  static int screenwidth = 1000;
  static JButton Buttonxstart;
  static JButton Buttonxclose;
 
  
  

}

解决方法

几点:

  1. 代码应该检查图像是否真的被加载 - 如果文件未找到,ImageIcon 不会抛出任何异常。测试高度或宽度是否为-1,例如:
if (img.getIconHeigth() == -1) {
    throw new FileNotFoundException("image: Bilder/Testbild");
}

或更好的 IMO,使用 ImageIO.read()

  1. 整个 GUI 代码应在 EDT(事件调度线程)中运行,请参阅 Swing's Threading Policy. 。无法查看是否是,如果不是,请使用诸如SwingUtilities.invokeLater(() -> new Gui());
  2. 之类的代码

3.不推荐使用null布局管理器。查看Laying Out Components Within a Container教程。

注意:我测试了发布的代码 - 如果在 EDT 上调用 new Gui() 并且在文件夹 Testbild 中有一个图像 Bilder,它可以工作。但是对于背景图像,我更愿意覆盖 paintComponentJPanel 方法来绘制图像。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。