Java - JLabel 丢失图像并且新出现在前面

标签 java jlabel

我有一个带有图片的大 JLabel,我希望一旦用户在其上输入鼠标,就会失去其图像,而其他小图片会出现在其中,彼此靠近。就像家谱一样,主要图像是一棵树,当鼠标输入时,平民的小图片会出现在彼此旁边,如下图所示。我使用:

JLabel c = new JLabel();
c.setBorder(new EtchedBorder(EtchedBorder.RAISED));
c.setIcon(new ImageIcon("C:\\Users\\Lud\\Desktop\\family\\tree.png"));
c.setBackground(new Color(192, 192, 192));
c.setOpaque(true);
c.setBounds(5, 5, 256, 256);

    c.addMouseListener(new MouseAdapter() {
        public void mouseEntered(MouseEvent me) {
            c.setIcon(null);
            JLabel c1 = new JLabel();
            c1.setIcon(new ImageIcon("C:\\Users\\Lud\\Desktop\\family\\george.png"));
            c1.setBounds(10, 10, 32, 32);
            add(c1);
        }
        public void mouseExited(MouseEvent me) {

        }
    });
    add(c);

主 JLabel/ TreeMap 像看起来很好,但是当我将鼠标放在它上面时,它只是丢失了它的图片,而没有在其上方显示新图片。我做错了什么?谢谢

enter image description here

最佳答案

不要创建新的 JLabel,而是简单地在现有 JLabel 上设置图标。

作为一个侧面建议,请理解,虽然 null 布局和 setBounds() 可能对于 Swing 新手来说似乎是创建复杂 GUI 的最简单和最好的方法,但您创建的 Swing GUI 越多,在使用时遇到的困难就越严重他们。当 GUI 调整大小时,它们不会调整组件的大小,它们是增强或维护的皇家女巫,放置在滚动 Pane 中时它们完全失败,在所有平台或与原始分辨率不同的屏幕分辨率上查看时,它们看起来非常糟糕.

关于Java - JLabel 丢失图像并且新出现在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33373547/

相关文章:

java - 如何更改 Swing 标签中的间隙

java - 添加所有类

java - 使用数组类型的记录进行嵌套 Avro 记录反序列化

java - Web 程序员在应用领域的历险记(或需要实用的 Java 帮助)

java - 变量的同步和本地副本

java - 在 Java 中将标签设置为图像格式问题

java - JLabel 将纯文本包装为 JTextArea

java - 在 Spring Boot 应用程序中未针对 hibernate 和 spring 过滤 Log4j2 日志级别

java - 在 JLabel 图标上添加 JLabel 文本。使用相同的 JLabel 文本

java - GridBagLayout 中的间距问题