- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序来 ping 服务器并返回一个值。
我一直在尝试将 ping 覆盖到 JFrame,其中 JLabel 在透明窗口中显示 ping。
但是,每次我调用方法 DrawOverlay()
时,JLabel 都会在之前绘制的标签之上重新绘制。
对于上下文,从另一个类 PingTest
调用 DrawOverlay()
。
void DrawOverlay(String ping)
{
JLabel lbl_ping = new JLabel(ping);
lbl_ping.removeAll();//attempts at clearing the previously drawn label
lbl_ping.revalidate();
lbl_ping.repaint();
if (!frame.isUndecorated())
{
frame.setUndecorated(true);
}
frame.setFocusableWindowState(false);
frame.setBackground(new Color(0, 0, 0, 0));
frame.setAlwaysOnTop(true);
frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);
frame.getContentPane().setLayout(new java.awt.BorderLayout());
lbl_ping.setFont(new Font("serif", Font.PLAIN, 48));
lbl_ping.setForeground(Color.WHITE);
lbl_ping.setText(ping);
frame.add(lbl_ping);
frame.setVisible(true);
frame.pack();
}
有没有办法重绘JFrame或JLabel来删除以前的数据?
最佳答案
每次调用 DrawOverlay 时,都会创建一个新 JLabel:
JLabel lbl_ping = new JLabel(ping);
设置属性后,您可以调用 frame.add(lbl_ping);
,这会将您的新 JLabel 添加到 JFrame 中。
您的 JLabel 不会被覆盖或删除。
您想要做的是将 JLabel lbl_ping;
声明为类中的私有(private)成员,然后在创建 JFrame 时您还希望初始化 JLabel 并设置所有这些属性:
lbl_ping = new JLabel();
frame.setFocusableWindowState(false);
frame.setBackground(new Color(0, 0, 0, 0));
frame.setAlwaysOnTop(true);
frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);
frame.getContentPane().setLayout(new java.awt.BorderLayout());
lbl_ping.setFont(new Font("serif", Font.PLAIN, 48));
lbl_ping.setForeground(Color.WHITE);
lbl_ping.setText(ping);
frame.add(lbl_ping);
// pack() first then setVisible()
frame.pack();
frame.setVisible(true);
看看this 。它解释了 pack() 的作用。
然后在 DrawOverlay 中,您只需设置文本值并更新 JFrame:
void DrawOverlay(String ping)
{
lbl_ping.setText(ping);
frame.getContentPane().validate(); // You modified child component lbl_ping (changed its size by setting a new text) so you need to recalculate all the child components
frame.getContentPane().repaint(); // Redraws the content pane and all of its children
}
关于java - JLabel 明文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44418897/
我正在使用 将文本显示在屏幕上 text.setText(text.getText().toString()+"binary message sent: "+ msg + "\n"); 如何从屏幕上删
我正在编写一个程序来 ping 服务器并返回一个值。 我一直在尝试将 ping 覆盖到 JFrame,其中 JLabel 在透明窗口中显示 ping。 但是,每次我调用方法 DrawOverlay()
我正在尝试从 JTextPane 中删除所有文本。我以为你可以简单地使用: textPane.setText(""); 这确实有效,但由于某种原因,调用该方法后总是有一个空行。为什么会这样?我该如何预
更新到新发布的 Xcode 7 版本后,我遇到了这个问题。 应用程序传输安全性已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时异
我试图在单击单选按钮时清除简单文本框中的文本。这是我的 CoffeeScript ... $("#selection_single").click -> $("#from_date_tex
复制代码 代码如下: Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /c @runas /use
TortoiseSVN 需要打开哪些端口进行身份验证(基本)才能提交?我知道这不是一件好事,但我相信用户名和密码现在是清楚的。 让我尽可能多地描述一下我所知道的设置以及似乎正在发生的情况。 我是一名承
我正在使用速度模板为通知系统生成纯文本电子邮件。我有一个“收件人”POJO 列表,其中包含用户 ID 和电子邮件地址。我想迭代这些 POJO 并在一行中输出用户 ID(最终用逗号等分隔符分隔)。我在格
我正在尝试围绕 CNG 的 AES 实现 AES-OFB 包装器以进行对称加密。 我遇到了一个我无法理解的问题...我创建了一个 AES 算法句柄 (BCRYPT_AES_ALGORITHM) 并导入
dat.gui.js 我尝试使用DAT.GUI.js中的文本输入,当我单击输入框时,如果有默认值,文本输入框应该是清晰的。完成后,会弹出一个确认框(Message Box),告知用户输入的消息。 现在
我正在使用原生脚本的 angular 版本并尝试为我的网络创建登录系统。 下面是我尝试登录网络的代码。 home.component.ts import { LoginService } from
我有一个从 Nib 加载的屏幕外 UITextView 实例,当用户点击“评论”按钮时,它会移动到屏幕框架中。输入使用的任何文本都是不可见的。如果用户旋转设备,文本就会出现。 我试过设置 setNee
我正在尝试使用 pyaes 进行 AES 加密。 我的下面的代码运行完美。 text = 'Hello world !!!!' encrypter = pyaes.AESModeOfOperation
我在 Stack Overflow 中看到了很多答案,解释了我们如何通过监听 keydown 事件并将焦点重定向到位于屏幕外的文本区域来删除文本粘贴的格式。这个解决方案很好,但没有解决使用上下文菜单或
正如标题所说。使用 iPhone SDK,我想使用服务器提供的现有 key 和指数对一些(小)明文进行 RSA 加密以进行身份验证。这肯定是一项简单的任务,需要一个库导入和几行代码?如果没有,为什
我是一名优秀的程序员,十分优秀!