gpt4 book ai didi

java - JLabel 明文

转载 作者:行者123 更新时间:2023-11-30 02:30:23 35 4
gpt4 key购买 nike

我正在编写一个程序来 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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com