java如何使用JLabel在一个程序中添加几个相同的图像?
我正在使用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);”再一次,我没有看到先添加的图像。每个新图像都会删除最后一个图标
# 1 楼答案
background是一个JLabel,您通常不会将一个JLabel添加到另一个JLabel。但如果必须这样做,请确保为充当容器的JLabel提供一个像样的布局管理器,以便它能够以智能的方式显示add components。默认情况下,JLabel没有布局(空布局),添加的任何组件都需要指定要显示的大小和位置。虽然您可以指定添加的所有组件的界限,但我建议您不要这样做,因为这会导致非常不灵活的GUI,虽然它们在一个平台上看起来很好,但在大多数其他平台或屏幕分辨率上看起来很糟糕,并且很难更新和维护。相反,你会想学习和学习布局管理器,然后嵌套JPanel或其他组件,每个组件都使用自己的布局管理器来创建在所有操作系统上都很好看的令人愉悦且复杂的GUI
只考虑使用基本的流布局来理解我的意思:
注意你
# 2 楼答案
我想在图标上添加图标
下面是使用
Graphics.drawImage()
在重写的paintComponent()
方法中JLabel
的现有Graphics
中绘制图像的代码有关更多信息,请阅读内联评论
示例代码:
以上代码是本帖的修改代码How to draw an image over another image?
截图:
# 3 楼答案
不能多次添加同一组件
我建议你这样做:
但不建议将JLabel用作容器。为此,我建议您使用JPanel作为标签的容器