【问题标题】:Java gui background imageJava gui背景图片
【发布时间】:2014-07-03 03:58:26
【问题描述】:

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

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

【问题讨论】:

  • "...but I feel it has not been properly answered."--难以置信。 100 多个答案中,哪个没有正确回答?
  • 您到底需要什么?解释它是如何工作的?有什么错误吗?
  • 这个问题似乎是题外话,因为它提出了一个常见问题,该问题有许多有据可查的答案,并且没有提供这些解决方案不起作用的充分理由

标签: java swing jframe


【解决方案1】:

这是一篇内容丰富的帖子,旨在突出使用 JLabel 作为后台容器的一些缺点,SO 上已经有很多很好的例子,去投票吧

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

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

例如,以下设置(故意)允许内容超出背景图像的边界,使用JLabel 显示并添加内容。

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

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

有关示例,请参阅 How to set a background picture in JPanelHow do I resize images inside an application when the application window is resized?

【讨论】:

    【解决方案2】:

    放一个

    setContentPane(new JLabel(new ImageIcon("C:\\img_url")));

    在你的 jframe 构造函数中

    【讨论】:

    • 他最好也给 JLabel 一个像样的布局管理器。
    • 这也不会调整图片大小,并且会忽略内容大小要求,始终默认使用标签图像和文本的要求
    猜你喜欢
    • 2011-01-14
    • 2011-02-11
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多