gpt4 book ai didi

java - 从内容区域拖动/移动 JFrame/JDialog 窗口

转载 作者:行者123 更新时间:2023-11-30 08:26:16 25 4
gpt4 key购买 nike

从它的内容区域拖动一个 jframe 窗口很简单,但问题就在这里。当我在框架上添加标签时,即使在标签上拖动也可以,但是当我为标签添加 mouseclicked 事件时,即使适配器中没有实际处理代码,当我在标签上拖动时也不会发生拖动,但在窗口的其余区域上拖动就可以了。

另一件事是我想让窗口的不透明度随着鼠标的移动而变化,与 this.setOpacity(0.9f);在标签的 mouseclicked 事件设置后,标签也不会对此做出响应..

有人知道怎么解决吗?

private void formMousePressed(java.awt.event.MouseEvent evt) {
offsetX = evt.getX();
offsetY = evt.getY();
}

private void formMouseDragged(java.awt.event.MouseEvent evt) {
java.awt.Component c = (Component) evt.getSource();
c.setLocation(evt.getXOnScreen() - offsetX, evt.getYOnScreen()- offsetY);
}

private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
// nothing actually done in the Label's mouse handler
}

private void formMouseEntered(java.awt.event.MouseEvent evt) {
this.setOpacity(0.9f);
}

private void formMouseExited(java.awt.event.MouseEvent evt) {
this.setOpacity(0.4f);
}

最佳答案

it's still ok even drag on the label, but when i add mouseclicked event for the label, even no codes actually proccessed in the adapter

正确,MouseEvent 仅传递给一个组件,因此标签阻止事件传递给窗口。

因此您需要将 MouseListener 添加到窗口和标签中才能拖动窗口。

查看 Moving Windows .它是一个监听器,允许您相对于其父级移动任何组件。因此,您可以创建一个 ComponentMover,然后注册窗口的根 Pane 以允许您拖动窗口。但您还需要注册标签。

关于java - 从内容区域拖动/移动 JFrame/JDialog 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643449/

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