为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 JFrame 中刷新图像?

如何在 JFrame 中刷新图像?

慕桂英546537 2021-08-19 19:01:56
有一些服务器,我需要从中获取图像。这张图片有时会更新。程序需要获取此图像并始终全屏显示在屏幕上。我写了一些代码,如果运行一次它就可以正常工作。但我无法处理更新图像。我需要每隔 XX 分钟或秒从服务器获取图像并将其显示在屏幕上。可能是我需要一些刷新图像功能,如 - repaint(),但我不知道如何在这段代码中正确使用它。我试过循环 - while 和 Thread.sleep() 但它没有正常工作,因为创建了许多多余的对象......请帮帮我。public class MyParser {public static void main(String[] args) throws IOException, InterruptedException {            String urlStr = "http://192.168.11.111/images/SGBWebServerImage.bmp";            JFrame frame = new JFrame();            URL url = new URL(urlStr);            BufferedImage image = resize(ImageIO.read(url), 320, 1920);            ImageIcon icon = new ImageIcon(image);            frame.add(new JLabel(icon));            frame.setExtendedState(JFrame.MAXIMIZED_BOTH);            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            frame.getContentPane().setBackground(Color.BLACK);            frame.pack();            frame.setVisible(true);    }private static BufferedImage resize(BufferedImage img, int height, int width) {    Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);    BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);    Graphics2D g2d = resized.createGraphics();    g2d.drawImage(tmp, 0, 0, null);    g2d.dispose();    return resized;}
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

我需要每隔 XX 分钟或秒从服务器获取图像并将其显示在屏幕上。

使用 aSwing Timer来安排一些活动。阅读 Swing 教程中关于如何使用 Swing 计时器的部分以获取更多信息。

当计时器触发时,您需要:

  1. 从服务器获取图像

  2. 更新 JLabel 的图标

这意味着您需要重构代码,以便引用标签。所以你需要摆脱所有的静态方法。

例如,您可以查看:即使在单独的线程中实现睡眠后,GUI 执行也不会延迟。您只需要替换actionPerformed(...)方法中的逻辑即可获取图像并更新标签的图标。


查看完整回答
反对 回复 2021-08-19
  • 2 回答
  • 0 关注
  • 280 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信