刷新 JLabel 图标图像

2023-12-09

我使用 JLabel 在 JFrame 中显示图像并设置它的图标。

它第一次工作,但是每当我去更改图像时,它仍然保持我第一次设置的内容,所以我尝试过这个,但结果仍然相同。

                contentPane.remove(lblPlaceholder);
            lblPlaceholder = null;
            lblPlaceholder = new JLabel("");
            lblPlaceholder.setBounds(10, 322, 125, 32);
            contentPane.add(lblPlaceholder);
            lblPlaceholder.setIcon(new ImageIcon("tempimage.png"));

我怎样才能让它改变它的形象?我也尝试过重新绘制 JFrame,但没有结果。


对我来说效果很好。我认为您的代码中还有一些您没有共享的内容。 ASSCCE将有助于澄清其他问题。

根据您提供的内容提出一些建议...

  • Avoid null布局(看起来像你might正在使用一个)
  • Avoid setBounds

enter image description hereenter image description here

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class ShowLabelImage {

    public static void main(String[] args) {
        new ShowLabelImage();
    }

    private JLabel label;

    private List<BufferedImage> images;
    private int currentPic = 0;

    public ShowLabelImage() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                images = new ArrayList<>(2);
                try {
                    images.add(ImageIO.read(new File("path/to/pic1")));
                    images.add(ImageIO.read(new File("path/to/pic2")));
                } catch (IOException exp) {
                    exp.printStackTrace();
                }

                label = new JLabel();
                label.setHorizontalAlignment(JLabel.CENTER);
                label.setVerticalAlignment(JLabel.CENTER);

                JButton switchPic = new JButton("Switch");
                switchPic.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        currentPic++;
                        if (currentPic >= images.size()) {
                            currentPic = 0;
                        }
                        label.setIcon(new ImageIcon(images.get(currentPic)));
                    }
                });

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(label);
                frame.add(switchPic, BorderLayout.SOUTH);
                switchPic.doClick();
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刷新 JLabel 图标图像 的相关文章

随机推荐

  • 使用键盘向下键在 Jpanel 上移动球

    我有一个从 jpanel 扩展而来的 mypanel 类 我在其中使用图形并制作一个球 第二类是 Main 我在其中制作 JFrame 并将面板添加到框架 Main 中还有另一个类 MKeyListener 它扩展自 KeyAdapter
  • 试图弄清楚如何跟踪 Pygame 事件并组织游戏的功能

    我是 Pygame 的新手 所以我仍在为整个 事件 概念而苦苦挣扎 基本上 我当前的挑战是 让 pygame event get 在主循环之外工作 以便我可以允许玩家从游戏的一个部分继续到下一个部分 例如 通过按空格键 找出一种方法在主线程
  • Xamarin Forms - 每 10 秒获取一次设备位置(当应用程序在前台/后台运行时)

    我创建了一个 Xamarin 表单应用程序 应用程序应定期 每 10 秒 获取设备 iOS 和 Android 的位置 我怎样才能实现这个目标 我知道有一些库 例如 Xamarin Essentials 但我无法决定应该获取该位置多少次 当
  • 在 Python 3 中,当我索引字节数组时会发生什么?

    在 Python 3 中 我可以通过编码字符串来创建字节数组 gt gt gt foo abc gt gt gt bar foo encode utf 8 gt gt gt bar b abc 但是当我索引该字节数组时 我得到了其他东西 g
  • Android 文本视图转换

    我是安卓开发新手 我想创建一个带有两个文本视图的启动屏幕 在这个启动屏幕中我想要两个过渡 1 文本视图1从顶部到中心的过渡 2 文本View 2从底部到中心的过渡 两个转换应该同时执行 如何实现这一目标 Thanks 创建一个xml文件在你
  • 使用动态链接共享的内容在打开后显示的内容与共享的内容不同

    我正在开发一个 Android 应用程序 一些数据正在从FirebaseDatabase并且正在显示在RecyclerView在我的应用程序中 The RecyclerView has cards在里面 每张卡片上都会显示图像和文本 卡上有
  • 厨师食谱 - 重新加载路径

    我刚刚使用 Chef Cookbook 安装了 Java 并为所有用户更新了 PATH 环境变量 将新文件添加到 etc profile d 是否可以告诉厨师重新加载 PATH 变量 当我做这样的事情时 execute java check
  • 如何使用 API 和 PHP 添加对 YouTube 视频评论的回复

    如何使用 PHP API 添加对 YouTube 视频评论的回复 通过搜索一分钟 我发现了这个 https developers google com youtube 2 0 developers guide protocol commen
  • 关闭jquery模态对话框很慢

    我有一个模式对话框 我在其中放置 html 表单的内容 该表单有一个提交和取消按钮 我找到了取消按钮 甚至通过非常缓慢地按下 x 来关闭对话框 虽然只慢了几秒 但足够长 足以让人认为存在疯狂的鼠标点击器可能发疯的问题 有没有比我正在做的更好
  • Hadoop:减速器的数量不等于我在程序中设置的数量

    我已将 mapred tasktracker reduce tasks maximum 设置为 10mapred site xml 我也写jobConf setNumReduceTasks 5 在我的工作中 如果我在 Shell 中运行该作
  • 在 python 中验证 SAML 签名

    我需要使用 SAML2 从第三方在 python 中实现身份验证 我调查过pysaml2并发现这很令人困惑 并决定给予M2Crypto我发现之后有机会这个问题 by Ennael 我收到的 SAML 令牌可以在这里找到 我已经从其中提取了我
  • Google Play 开发者控制台上的 Android Wear + 手机应用

    我这些天正在学习 Android Wear 并且已经在开发 Android 移动应用程序 所以我想知道我是否从 Google Play 开发者控制台发布了我的 Android Wear 和手机应用程序 那么在这种情况下 我是否需要将其添加为
  • 如何使用 SES 特定的临时凭证通过 SES 发送电子邮件?

    This页面显示如何使用 SES 发送电子邮件 该示例通过读取凭据来工作 aws credentials 它们是根 但 共享 凭据 该文档在多个地方建议不要使用 root 凭据 获取临时凭证 使用roles被提到作为一个选项 但是assum
  • 如何在 Ruby 中打印行号

    我正在尝试遍历一个文件来检查每一行及其开头的空格 我们想使用空格作为开始或制表符 如果一行以空格开头 另一行以制表符开头 我想通知用户空格不一致 举个例子 我想打印一行以空格开头的行和一行以制表符开头的行 我陷入了获取行号部分 我尝试 fi
  • 在 R 中使用 RegEx 检索第二次出现句点 ('.') 之前的字符串

    什么正则表达式可以检索 例如使用sup 第二个句点之前的字符 给定一个字符向量 例如 v lt c m s E1 m x R1PE1 m xs P1 m s R2E12 我想退回这个 1 m s E1 m xs P1 gt sub 1 v
  • 哪些 API 用于绘制其他应用程序(例如 Facebook 的 Chat Heads)?

    Facebook 如何在 Android 上创建聊天头 在所有其他视图之上创建浮动视图的 API 是什么 This one 允许应用程序使用类型打开窗口 TYPE SYSTEM ALERT 显示在所有其他应用程序之上 很少有应用程序应该使用
  • 电子表格中特定工作表的 onEdit 触发器?

    我无法找到有关如何设置 onEdit 触发器的良好资源 我有一个只想在编辑特定工作表时运行的函数 例如说我有 Sheet1 Sheet2 Sheet3 Sheet4 Sheet5 我的脚本从工作表 2 3 4 中提取数据并填充工作表 1 我
  • 将automatic_scaling max_idle_instances 设置为零(0)有什么作用?

    将automatic scaling max idle instances 设置为零 0 有什么作用 automatic scaling max idle instances 0 min idle instances 0 它是否会导致活动实
  • 在 Mac 启动时运行 python 脚本

    我正在尝试让 python 脚本在启动时运行 我有以下文件 com test service plist
  • 刷新 JLabel 图标图像

    我使用 JLabel 在 JFrame 中显示图像并设置它的图标 它第一次工作 但是每当我去更改图像时 它仍然保持我第一次设置的内容 所以我尝试过这个 但结果仍然相同 contentPane remove lblPlaceholder lb