为什么我的重绘不起作用?

2024-01-13

考虑到扩展了 Canvas 的 Display 类,我遇到了一个问题。 单个线程在同一个类中运行。 在这个线程中,调用了repaint方法。 然而,虽然线程工作正常,但油漆方法从未被调用!

这是我的代码(我遗漏了所有不相关的内容):

package display;

public final class Display extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;

private Frame frame;

private GraphicsEnvironment ge;
private GraphicsDevice gd;

public BDisplay() {     
    ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    gd = ge.getDefaultScreenDevice();

    frame = new Frame();

    //frame.setUndecorated(true);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setVisible(true);

    frame.add(this);

    frame.setLayout(null);

    //gd.setFullScreenWindow(frame);
}

@Override
public final void paint(Graphics g) {
    //THIS METHOD IS NEVER CALLED

    System.out.println("Paint method was called!");
    super.paint(g);

    //...
}

@Override
public synchronized void run() {
    while (isRunning()) {
        //THIS LOOP WORKS FINE.
        this.repaint();
    }
}
}

它与某些缺失的函数(例如 isRunning())无关。 它们存在,我只是把它们排除在外。

我以前从来没有遇到过这样的问题 虽然我已经有一段时间没有使用 SWING 或 AWT 做过任何事情了。

有人可以帮忙吗?

线程循环工作正常, 但重画似乎没有安排......


You're 实现 the JFrame在添加组件之前(即Canvas,以及之前的JPanel).

Try this

public BDisplay() {     
    ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    gd = ge.getDefaultScreenDevice();

    frame = new Frame();
    frame.setResizable(false);
    frame.add(this);
    //frame.setLayout(null); // Why are you using a null layout?
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

EDIT

顺便说一句,我建议使用JPanel代替Canvas因为不建议您混合重型和轻型组件。有关更多详细信息,请参阅混合重组分和轻组分 http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html.

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

为什么我的重绘不起作用? 的相关文章

  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • OSGi:如果不取消服务会发生什么

    这是我获取 OSGi 服务的方式 ServiceReference reference bundleContext getServiceReference Foo class getName Foo foo Foo bundleContex
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 如何在 Java 中测试一个类是否正确实现了 Serialized(不仅仅是 Serialized 的实例)

    我正在实现一个可序列化的类 因此它是一个与 RMI 一起使用的值对象 但我需要测试一下 有没有办法轻松做到这一点 澄清 我正在实现该类 因此在类定义中添加 Serialized 很简单 我需要手动序列化 反序列化它以查看它是否有效 我找到了
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • 如何两两比较多次测量的增减?

    我有一个数据 我想通过取差值来两两比较测量值 如果差值大于 0 2 则添加另一列为 是 否则为 否 就像图像中的示例数据一样 并且 在每个人的最后 如果至少有一个 是 则最终结果为 是 我已手动填写第一行 但我想对我的所有个人 1000 个
  • Python 并删除列表列表中的重复项,无论列表中的顺序如何

    我已经搜索过 但没有找到与我相同的问题 我想从 python 中的列表列表中删除重复项 但是 我不在乎列表中值的顺序 我目前的做法太耗时了 我想做的事 A 1 2 3 2 3 4 3 4 5 3 2 4 我想搜索 A 并删除所有重复项 这里
  • 使用python同时向多个CC和多个TO收件人发送电子邮件

    分别尝试了多个 to 和多个 cc 效果很好 但是当我尝试两者时 出现错误 File 路径 Continuum anaconda2 envs mypython lib smtplib py 第 870 行 在 sendmail sender
  • std::string 用 bool 初始化

    考虑以下初始化 std string falseString false std string trueString true With g 5 2 0 编译器会抛出警告falseString 而错误为trueString With cla
  • 需要使用 R 从字符串列中提取单个字符

    背景 下面是我的gamedatadput 形式的数据集 它包含一些 MLB 比赛的比分 structure list team c NYM NYM BOS NYM BOS linescore c 010000000 10 1140006x
  • 如何在 Dhall 中将动态命名记录与静态记录合并?

    我正在 Dhall 中创建 AWS Step Function 定义 但是 我不知道如何创建他们使用的通用结构Choice如下例所示 Not Variable type StringEquals Private Next Public Th
  • 如何保存并添加游戏中获得的数值?

    我正在为我的游戏制作一个商店 我正在制作一个系统 我在游戏中获得的分数被保存 每次玩时它也会添加和保存 但这最后一部分不起作用我不知道为什么 我从另一个名为的脚本中获取一个变量score它收到我得到的值 并且必须将其添加到以前的值 但它不会
  • 如何计算销售范围内的排名

    如何计算销售级别定义的类别内的排名 假设我们希望将销售额高于某个阈值的产品标记为 高 类别 将低于该阈值的产品标记为 低 类别 这是一个示例数据 let Source Table FromRows Json Document Binary
  • 将 Vuetify 工具提示 (v-tooltip) 组件与外部激活器(即未包装)一起使用

    我了解如何使用 Vuetifyv 工具提示 https vuetifyjs com en components tooltips introduction工具提示包裹着组件 但是 我不太确定如何将激活按钮放在外面 例如我有这个 非工作代码
  • request.getServletPath() 从 Spring MVC 返回 null

    我做了一个过滤器来捕获HttpServletRequest所有请求的 servlet 路径 Override public void doFilter ServletRequest req ServletResponse res Filte
  • react-native-multiple-select 存储提交时选择的项目

    我正在使用react native multiple select并尝试创建一个下拉菜单 允许用户选择多个选项 然后将他们选择的选项记录到数组中 目前 我的代码是 onSelectedItemsChange selectedItems gt
  • 使用javascript检测设备CPU/GPU性能?

    这个问题并不特定于 Three js 但我会用它作为例子 我最近一直在使用 Three js 开发 Web 应用程序界面 并在 WebGL 和 Canvas 渲染器 针对桌面浏览器 之间编写了一些不错的后备程序 但现在的问题变成了如何正确检
  • C/C++ 中 \x 是什么意思?

    Example char arr xeb x2a BTW 以下内容相同吗 xeb x2a vs xeb x2a x表示十六进制字符转义 它用于指定不可输入的字符 例如 null x00 And xeb x2a 是一个文字字符串 类型是cha
  • git pull --rebase:传递 --rebase-merges

    这是我在重新调整当前分支的基础时通常会做的事情 同时防止本地分支变平 git fetch origin git rebase r origin develop r is rebase merges 我更喜欢 preserve merges
  • 从自定义键盘/谷歌键盘在 android 中的 Edittext 中插入图像/贴纸/gif

    我尝试使用 Google 键盘等键盘插入表情符号Gboard to my edittext但它显示吐司This text field does not support GIF insertion from the keyboard 有几个关
  • 如何将共享唯一 ID 的行合并到逗号分隔的表中

    我想请求一些关于如何将共享唯一 ID 的行合并到逗号分隔表中的提示 非常感谢 Perl sed 或 awk 中的任何提示 这就是我现在的表格的样子 protein id go id 4102 GO 0003676 4125 GO 00036
  • 如何在 R 中将数据移动两个月?

    我想将我的全部数据减少两个月 例如 如果我的数据从 1 月 1 日开始 我想以数据对应于 3 月 1 日的方式移动数据 同样 11 月数据将成为下一年 1 月数据 这是我的示例代码 DF lt data frame seq as Date
  • log4net RollingFileAppender 和 IIS 7.5

    我正在尝试在 IIS 7 5 Server 2008 R2 上将 log4net 与 RollingFileAppender 一起使用 然而 我的旧 IIS 6 Server 2003 盒子中的配置似乎不再起作用 我根本没有看到任何日志文件
  • 使用 Castle Windsor 为单个接口注册多个组件

    我正在尝试使用下面的代码注册多个 NHibernate ISession 多个数据库 我收到 已经为给定密钥 Castle MicroKernel Registration GenericFactory 1 NHibernate ISess
  • 为什么我的重绘不起作用?

    考虑到扩展了 Canvas 的 Display 类 我遇到了一个问题 单个线程在同一个类中运行 在这个线程中 调用了repaint方法 然而 虽然线程工作正常 但油漆方法从未被调用 这是我的代码 我遗漏了所有不相关的内容 package d