java - 如何使用 JLabel 在一个程序中添加几张相同的图像?

标签 java swing layout jlabel null-layout-manager

我正在使用 Swing 并尝试在程序中添加一些图片。

field = new JFormattedTextField(formatter);

ImageIcon icon = new ImageIcon("background.png"),
          icon1 = new ImageIcon("1.png");

JLabel background = new JLabel(icon); 
JLabel firstIcon = new JLabel(icon1);

JPanel center = new JPanel(new GridLayout(0, 1));


    public void initComponents() {
          this.getContentPane().add(center, BorderLayout.CENTER);

center.add(background);

field.setBounds(50,50);
background.add(field);
background.add(fristIcon);
}

使用这段代码一切正常,但是当我尝试添加相同的图片时“background.add(fristIcon);”我又没有看到首先添加图像。每个新图像都会删除最后一个图标。

最佳答案

background 是一个 JLabel,您通常不会将一个 JLabel 添加到另一个 JLabel。但是,如果您确实必须这样做,请确保为充当容器的 JLabel 提供一个合适的布局管理器,以便它可以以智能方式显示添加的组件。默认情况下,JLabel 没有布局(空布局),添加的任何组件都需要指定其大小和要显示的位置。虽然您可以这样做——指定添加的所有组件的边界,但我建议您不要这样做,因为这会导致 GUI 非常不灵活,虽然它们在一个平台上看起来不错,但在大多数其他平台或屏幕上看起来很糟糕决议,而且很难更新和维护。相反,您需要研究和学习布局管理器,然后嵌套 JPanel 或其他组件,每个组件都使用自己的布局管理器来创建在所有操作系统上看起来都不错的令人愉悦的复杂 GUI。

考虑只使用基本的 FlowLayout 来理解我的意思:

background.setLayout(new FlowLayout());

注意你

关于java - 如何使用 JLabel 在一个程序中添加几张相同的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714596/

相关文章:

javascript - ExtJS : split window into two collapsible parts

Java 约定返回自己的实例列表?

java - 将连字符分隔的单词(例如 "do-some-stuff")转换为较小的驼峰变体(例如 "doSomeStuff")的最优雅方法是什么?

java:如何打印 JForm

java - Java 中组件的重用没有正确修剪未重用的组件

css - 对于符合 XHTML 标准的固定间距,我的最佳选择是什么?

java - Spring Boot 增删改查存储库

java - 是否可以确保使用的客户端来自特定主机?

java - Java中的多种2D图形绘制函数

iphone - 如何重新定位尺寸动态变化的 UILabel 和 UIImageView?