gpt4 book ai didi

java - 在可拖动的 jPanel 中更改 jLabel 的文本

转载 作者:行者123 更新时间:2023-12-02 06:53:12 24 4
gpt4 key购买 nike

在我的程序中,我有一个 jPanel,里面有一个 jLabel。我添加了这段代码以使 jPanel 可拖动,并且它工作得很好。

private void formMousePressed(java.awt.event.MouseEvent evt) {                                  
prevX = evt.getXOnScreen();
}

private void formMouseDragged(java.awt.event.MouseEvent evt) {
this.setLocation(this.getX() + evt.getXOnScreen() - prevX, this.getY());
prevX = evt.getXOnScreen();
// this.labBirthDate.setText(Integer.toString(this.getX()));
}

但是,当我添加注释掉的代码(该代码更新标签以显示面板的位置)时,它停止工作。具体来说,当我单击并拖动以移动面板时,面板不是跟随鼠标移动,而是有点卡顿,并且文本更改为 ~10 的值,每当我移动鼠标时都会更改。

让事情变得更加困惑,如果我更改它,使其仅将文本设置为“blah”,则不会产生错误。同样,如果我只是将变量设置为等于 this.getX(),也不会产生错误。如果我随后将标签设置为该局部变量的值,则会出现错误。

有谁知道为什么会发生这种情况?有没有一种解决方法可以达到相同的效果?

最佳答案

当您在标签上调用 setText() 方法时,会在标签上调用 revalidate()repaint() 方法。这将导致调用布局管理器,我猜测布局管理器会将面板重置为其默认位置。

如果您希望能够在屏幕上随机移动组件,那么您需要在正在拖动的面板的父级上使用空布局。完成此操作后,您还需要手动设置组件的大小和位置。

您可能会找到 Drag Layout在这种情况下使用起来很方便。

关于java - 在可拖动的 jPanel 中更改 jLabel 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756533/

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