在 Java 中调整大小时绘制的内容不可见

2023-11-26

请注意,我没有在 Windows 机器上测试过这个,只在 Mac 机器上测试过。我不太确定这是否也会发生在 Windows 机器上......

当我调整 Java 应用程序的大小时,内容是不可见的。我已经找到解决方法了after调整大小,但没有while用户正在调整窗口大小。

我没有使用 Swing 或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来)。

结构是这样的:

  • Frame我的主窗口
    • Container内容视图main-window
      • Container基于子视图,包括paint(Graphics g)-method

我已将所有侦听器添加到My main-window现在我可以重画内容视图 after调整窗口大小。

public void componentResized(ComponentEvent e) {
    this.contentView.paint(this.contentView.getGraphics());
}

我要注意使用paint(getGraphics())- 方法并不是一个真正好的方法,但由于repaint()- 方法根本不做任何事情,这是唯一的工作可能性。

调整大小时,所有绘制的内容都变得不可见。但是,当我添加一个Button-以我的为例Content-view并调整我的大小Main-window,按钮不会变得不可见。

I am能够跟踪“实时”调整大小事件:

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
}
  1. 当我开始调整大小时,不会调用此方法。
  2. 在调整大小时,它会在我调整窗口大小的每个像素的日志中生成“实时调整大小”。
  3. 当我停止调整大小时,不会调用此方法,而是调用 componentResized-method。

当我将我的重绘方法(或官方重绘方法)添加到像这样的“实时”调整大小事件时,我仍然得到输出,但是,它不是重绘或其他东西

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.paint(this.contentView.getGraphics());
}

Or

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.repaint();
}

当我将应用程序最小化到扩展坞并再次最大化应用程序时,会发生同样的事情,我猜需要相同的代码来解决此问题。

我没有使用Graphics2D或者什么,只是Graphics.

您能解释一下如何重新绘制视图吗?

提前致谢, 蒂姆


作为参考,这里是使用 Swing 的相同程序。因为JPanel是双缓冲的,调整大小后释放鼠标时它不会闪烁。

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;

public class SwingPaint {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.add(new CirclePanel());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    private static class CirclePanel extends JPanel {

        private static final Random r = new Random();

        public CirclePanel() {
            this.setPreferredSize(new Dimension(320, 240));
            this.setForeground(new Color(r.nextInt()));
            this.addMouseListener(new MouseAdapter() {

                @Override
                public void mousePressed(MouseEvent e) {
                    CirclePanel.this.update();
                }
            });
        }

        public void update() {
            this.setForeground(new Color(r.nextInt()));
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Dimension size = this.getSize();
            int d = Math.min(size.width, size.height) - 10;
            int x = (size.width - d) / 2;
            int y = (size.height - d) / 2;
            g.fillOval(x, y, d, d);
            g.setColor(Color.blue);
            g.drawOval(x, y, d, d);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中调整大小时绘制的内容不可见 的相关文章

  • 是否可以在 Spring Batch 中结合分区和并行步骤?

    我只是想知道它在 Spring Batch 中可行吗 Step1Step2 流程 gt 流程1 流程2 流程3 Step3 其中每个flow1 gt 划分为 5 个 GridSizeflow2 gt 划分为 5 个 GridSizeflow
  • MP3:一种以毫秒为单位获取任何给定字节位置的位置的方法?

    我创建了一个 servlet 它返回从客户端请求的任何给定字节位置开始的流 来自 MP3 文件 这允许客户端在任何给定字节位置立即开始播放 而无需进行任何本地查找 现在 我有一个滑块可以直观地显示进度 我正在使用当前字节位置来更新滑块 但是
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • 在verilog中使用for循环生成

    我试图理解为什么我们在verilog 中使用generate 和for 循环 一起使用生成和 for 循环 reg 3 0 temp genvar i generate for i 0 i lt 3 i i 1 begin always p
  • jQuery .attr 检索自定义属性返回未定义

    我在使用 jquery 时遇到以下问题 我有这样的东西 div value span class delete span div 现在我有了这个 fn 但它只返回 未定义 但是如果我要求的话 它确实会返回 id 或类 delete clic
  • 以编程方式生成 BPEL 文件?

    有没有一种方法可以在 Java 中以编程方式生成 BPEL 我尝试使用 BPEL Eclipse Designer API 编写以下代码 Process process null try Resource Factory Registry
  • 精确为零的浮点/双精度相等

    我有一个使用的算法floats or doubles执行一些计算 Example double a double b double c double result c b a if result gt 0 result lt small n
  • 使用操作按钮启用和禁用侧边栏切换按钮

    我正在寻找一个代码片段 使用它 我可以启用 禁用闪亮仪表板标题中的侧边栏切换按钮 library shiny library shinydashboard library shinyjs ui lt shinyUI dashboardPag
  • 在Android中创建文件夹[重复]

    这个问题在这里已经有答案了 import java io File File folder new File Environment getExternalStorageDirectory TollCulator boolean succe
  • 我如何知道代码中的哪些部分从未被使用过?

    我有遗留的 C 代码 我应该从中删除未使用的代码 问题是代码库很大 我如何找出哪些代码从未被调用 从未使用过 未使用的代码有两种 本地的 也就是说 在某些函数中 某些路径或变量未使用 或使用但没有任何意义 例如已写入但从未读取 全局对象 从
  • 在rstudio中使用knitr编译pdf时出错

    我已经安装了软件包Sweave也knitr在 Linux mint 和 Windows 7 上都可以运行 并且它在 Windows 上运行良好 但在 Linux 中使用 rstudio 时失败 安装完pkgs后 我写了一个简单的dw Rnw
  • 如何从计数器上删除 Disqus 反应?

    向 Stackoverflow 忍者提出两个问题 我有一个使用 Disqus 的博客 但是 我使用的主题没有空间容纳 反应 Twitter 数量 只有空间容纳评论数量 好的 基本上我没有足够的空间来保留为 Disqus 提供的 反应 有谁知
  • JPanel 中的 Java Linux 终端

    我正在制作一个脚本编辑器 希望能够运行 Bash Shell Python 等 程序中的脚本 到目前为止 我有办法运行它们 但是脚本没有办法让用户输入 这是代码 package com hightide ui terminal import
  • JavaScript 运行时错误:无法添加动态内容

    我正在制作一个 javascript 地铁应用程序 并且有一些如下代码 当我尝试运行时 它给了我一个相当长的错误 ms appx a375ffac 3b69 475a bd53 ee3c1ccf4c4e default html 中第 20
  • 如何制作“只读”文件?

    我正在使用 C StreamWritier班级 问题 如何将文件设置为只读 以便任何人都无法删除或写入它 如何制作隐藏文件 我正在像这样创建文件 private void button1 Click object sender EventA
  • 在 Cucumber Ruby 中使用 Selenium ChromeDriver 在 W3C 模式下无法调用非 W3C 标准命令 (Selenium::WebDriver::Error::UnknownCommandError)

    我们有 Cucumber Ruby 自动化框架 我们在 Jenkins 上的 Docker 中的 Chrome 无头浏览器上运行了一些测试 几天前 我们开始收到错误 此版本的 ChromeDriver 仅支持 Chrome 版本 75 这次
  • DllImport 生成 System.DllNotFoundException

    我在尝试使用非托管代码时遇到一些困难dll来自我的应用程序 用 C 框架 4 0 编写 我正在使用dll导入如下 DllImport C MGW SDK dll EntryPoint fInicializaSDK public static
  • 保持用户登录状态 - FormsAuthentication

    我最难弄清楚这一点 我正在使用表单身份验证 当用户登录并检查记住我时 我希望用户保持登录状态 24 小时 问题是 无论我做什么 用户都会在 30 分钟后自动注销 我们用户选择记住我 我设置了一个持久 cookie 在 24 小时后过期 我可
  • 使用与多个实体管理器的关系

    我想知道是否可以在驻留在不同数据库中的两个实体之间创建关系 例如 如果我们采用此处找到的解决方案http symfony com doc current cookbook doctrine multiple entity managers
  • 将 CSS 插入到 UIWebView / WKWebView 中加载的 HTML 中

    我成功地获取 HTML 内容并显示到我的 UIWebView 中 但想要通过添加外部 CSS 文件来自定义内容 我只能更改文本和字体的大小 我尝试了所有可能的解决方案来进行更改 但它不起作用 它没有显示任何更改 下面是我的代码 HTMLNo
  • Guice 3.0 - 启动时出现 ArrayIndexOutOfBoundsException?

    为什么 Guice 3 0 对于错误配置的组件抛出此异常而不是格式化消息 例如缺少 Inject Exception in thread main com google inject internal util ComputationExc
  • 如何超过方法代码的 65535 字节限制

    我有一个产品列表 但 Java 抱怨该方法超出了 65535 字节的限制 如何添加更多字数并克服限制 public class ProductList extends Activity List view private ListView
  • 在 Java 中调整大小时绘制的内容不可见

    请注意 我没有在 Windows 机器上测试过这个 只在 Mac 机器上测试过 我不太确定这是否也会发生在 Windows 机器上 当我调整 Java 应用程序的大小时 内容是不可见的 我已经找到解决方法了after调整大小 但没有whil