gpt4 book ai didi

Java - 颜色或图像无法设置为背景

转载 作者:行者123 更新时间:2023-12-01 10:38:24 25 4
gpt4 key购买 nike

基本上我创建了两个类;主要和 JFrameOptions。但是,无论我使用 JLabels、setContentPane 还是 setBackground,我似乎都无法绘制背景,所有这些都不起作用。我做错了什么?

主要:

package game;

public class Main{

public static void main(String[] args) {
JFrameOptions.Options();
TSDTDir.Directory();
}
}

JFrame选项:

package game;

import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JFrame;


public class JFrameOptions{

static String setTitle = ("Game");;

public static int width = 920;
public static int height = 517;

public static void Options() {
JFrame window = new JFrame(setTitle);
window.setSize(width, height);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setLocationRelativeTo(null);
window.toFront();
window.setBackground(Color.black);
}
}

编辑:

我得到了解决你的答案的基本知识:window.getContentPane().setBackground( Color.PINK );

但是我如何加载必须具有登录字段的图像?

编辑2:它不起作用。背景不画。

public static void Options() {

//Displays the title
JFrame window = new JFrame(setTitle);
window.setSize(width, (int) height);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setIconImage(favIcon);
window.setResizable(false);
window.setLocationRelativeTo(null);
window.toFront();

//window.getContentPane().setBackground(Color.black);


BufferedImage img = null;
try {
img = ImageIO.read(new File("Background.png"));
window.setContentPane(new JLabel(new ImageIcon(img)));
} catch (IOException e) {
e.printStackTrace();
}
}
}

当然,Background.png 文件位于游戏文件夹的目录中:http://prntscr.com/9kxc4i

图像文件位置的图像:
enter image description here

控制台图像:
enter image description here

运行 GUI 图像:
enter image description here

最佳答案

这是一个常见问题,您在建立 UI 之前调用 setVisible。 Swing 在对 UI 进行布局更改时很懒,需要您决定何时更新 UI,这是为了保持效率而故意这样做的(想象一下向 UI 添加十几个新组件,您不会希望在完成之前重新验证和更新 UI,否则您会浪费大量时间)

简单的解决方案是,最后调用 setVisible...

public static void Options() {

//Displays the title
JFrame window = new JFrame(setTitle);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setIconImage(favIcon);

//window.getContentPane().setBackground(Color.black);
BufferedImage img = null;
try {
img = ImageIO.read(new File("Background.png"));
window.setContentPane(new JLabel(new ImageIcon(img)));
} catch (IOException e) {
e.printStackTrace();
}
window.setResizable(false);
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
window.toFront();
}

请记住,JLabel 默认情况下没有布局管理器,即使您应用布局管理器,它也不会使用它来计算其 preferredSize,而仅依赖于icontext 属性。

看看this discussion了解更多详细信息和替代方案

关于Java - 颜色或图像无法设置为背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com