我意识到这个问题已被多次询问,但我觉得它没有得到妥善回答。
我想在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);
}
}
我是java的新手,所以请耐心等待我
答案 0 :(得分:3)
这是一篇内容丰富的文章,旨在强调使用JLabel
作为背景容器的一些缺点,有很多很好的例子已经在SO上投票了 < / p>
虽然使用JLabel
作为背景容器是解决问题的常用方法,但仍有许多问题需要考虑......
JLabel
不会调整图片大小以适应可用的容器大小。不是显示停止,但如果您的内容超出背景图像的大小,图像将不会调整大小以适应它。JLabel
默认没有布局管理器。不是表演限制,但你需要注意你需要提供一个LEFT
。不是表演限制,但你应该注意你可能需要调整它的属性例如,以下(故意)设置允许内容超出背景图像的边界,背景图像使用JLabel
显示并添加内容。
克服这些问题的另一种常用解决方案是使用JPanel
并将图像绘制成自己的图像。
您可以根据需要控制缩放图像的能力,您可以更好地控制图像的布局要求和位置。
有关示例,请参阅How to set a background picture in JPanel和How do I resize images inside an application when the application window is resized?
答案 1 :(得分:2)
放一个
setContentPane(new JLabel(new ImageIcon("C:\\img_url")));
在你的jframe构造函数
中