我该如何为Jframe自动更新我的油漆?
-
22-10-2019 - |
题
目前,我有一个 JFrame
其中包含一个 JPanel
. 。这 JPanel
是我程序的油漆。绘画意思是我所有的 Graphics g
.drawString事物。现在,只有在用户与 JFrame
, ,但我希望它不断更新(repaint()
)本身无需使用一段时间循环(CPU使用过多)。
有人知道我该怎么做吗?
解决方案
每当您知道面板上图像的一部分更改时,您需要做的是通知秋千组件。正常的方法是,正如您所说的那样, repaint()
而且,如果您知道“无效”的矩形,您也可以指出。
取决于导致内容的事件 JPanel
, ,您需要更改应用程序设计,以使应用程序的演示部分“倾听”到发生这些更改时的数据和重新粉刷的更改。
还有另一种称为 paintImmediately()
这可能在某些情况下可以做到,但是您必须更多地描述您的场景,并且在哪些情况下您需要连续重新粉刷。
其他提示
我已经实施了功能齐全的互联网中继聊天系统,该系统涉及油漆以查看您和其他人在说什么
听起来您正在尝试从服务器“提取”更新,然后您可以使用Swingworker查询服务器以获取更新,然后将更新脉动到GUI。您将希望Swingworker睡觉,以免连续对服务器进行轮询。
阅读《摇摆教程》的部分 工人线和摇摆工人 了解更多信息。
也许更好的设计是为服务器“推”更新到客户端,客户应聆听更改然后重新粉刷自身。也许是 关于插座的所有内容 部分将为您提供帮助。
编辑:
这是我5年来未研究的一些旧代码。 “客户端”是一个简单的文本窗格,将每个字符发送到“服务器”。然后,服务器将每个字符发送到连接到服务器的任何其他客户端。服务器具有最新文档的想法。当一个客户发送更改时,所有其他客户端都会通知更改。这样,所有客户端总是包含相同的数据。您的代码应该更简单,因为您只会向服务器发送完整的消息。运行代码打开DOS窗口并键入:
Java Documentserver 1234
这将启动一台倾听端口1234的服务器
然后打开另一个窗口并输入
Java DocumentClient 1234 3
这将创建连接到服务器的3个客户端帧。在任何一个帧中键入将更新服务器。
您可以在此处获取zip文件: