我意识到这个问题已经被问过很多次了,但我觉得它没有得到正确的回答。
我想在 java gui 中使用图像作为背景
我尝试了以下方法:
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
public class worldGUI extends JFrame implements ActionListener
{
private ImageIcon world = new ImageIcon("C://Users/Hans/Documents/world/map.png");
private JLabel map = new JLabel(world);
private JButton borders = new JButton("Borders");
public worldGUI()
{
setTitle("Welcome to the World");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,500);
setLocation(100,100);
setVisible(true);
borders.addActionListener(this);
map.add(borders);
setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我是 Java 新手,请耐心等待
这是一篇内容丰富的帖子,旨在强调JLabel
用作背景容器的一些缺点,SO 上已经有很多很好的例子,请投票给那些
虽然使用JLabel
作为背景的容器是解决该问题的常用方法,但仍有许多问题需要考虑......
JLabel
不会调整图像大小以适合可用的容器大小。不是表演阻止者,但如果您的内容超过背景图像的大小,图像将不会调整大小以适应它。JLabel
默认情况下没有布局管理器。不是表演阻止者,但您需要注意,您需要提供一个LEFT
。不是表演障碍,但你应该注意你可能需要调整它的属性例如,以下内容已(故意)设置为允许内容超出背景图像的边界,背景图像使用 aJLabel
和添加到其中的内容显示。
另一个克服这些问题的常用解决方案是使用 aJPanel
并绘制您自己的图像。
您可以根据需要控制缩放图像的能力,您可以更好地控制图像的布局要求和定位。
请参阅如何在 JPanel 中设置背景图片和如何在调整应用程序窗口大小时调整应用程序内部图像的大小?举些例子