Java gui 背景图片

-2 java swing jframe

我意识到这个问题已经被问过很多次了,但我觉得它没有得到正确的回答。

我想在 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 新手,请耐心等待

Mad*_*mer 5

这是一篇内容丰富的帖子,旨在强调JLabel用作背景容器的一些缺点,SO 上已经有很多很好的例子,请投票给那些

虽然使用JLabel作为背景的容器是解决该问题的常用方法,但仍有许多问题需要考虑......

  1. JLabel不会调整图像大小以适合可用的容器大小。不是表演阻止者,但如果您的内容超过背景图像的大小,图像将不会调整大小以适应它。
  2. JLabel默认情况下没有布局管理器。不是表演阻止者,但您需要注意,您需要提供一个
  3. 标签的默认水平对齐方式是LEFT。不是表演障碍,但你应该注意你可能需要调整它的属性
  4. 标签将忽略其内容的首选大小。这很烦人,并且与第一点有关。如果您的内容超出了标签图标和文本的可用大小,则内容可能会下溢或缩小到其最小大小要求。当您打包框架时,这尤其烦人......

例如,以下内容已(故意)设置为允许内容超出背景图像的边界,背景图像使用 aJLabel和添加到其中的内容显示。

在此处输入图片说明

另一个克服这些问题的常用解决方案是使用 aJPanel并绘制您自己的图像。

您可以根据需要控制缩放图像的能力,您可以更好地控制图像的布局要求和定位。

请参阅如何在 JPanel 中设置背景图片如何在调整应用程序窗口大小时调整应用程序内部图像的大小?举些例子