从它的内容区域拖动一个jframe窗口很简单,但这是问题所在。 当我在框架上添加一个标签时,它甚至可以拖到标签上, 但是当我为标签添加mouseclicked事件时,即使在适配器中没有实际执行代码,当我在标签上拖动时也不会发生拖动,但拖动窗口的其余区域就可以了。
另一件事是我想让窗口的不透明度随鼠标运动而变化, with this.setOpacity(0.9f); 在标签的鼠标点击事件设置之后,标签也不会对此做出响应..
谁知道如何解决这个问题?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);
}
答案 0 :(得分:3)
它甚至可以拖动标签,但是当我为标签添加mouseclicked事件时,即使在适配器中没有实际执行代码
正确,MouseEvent只传递给一个组件,因此标签会阻止事件传递给窗口。
所以你需要将MouseListener添加到窗口和标签中以便拖动窗口。
结帐Moving Windows。它是一个侦听器,允许您相对于其父组件移动任何组件。因此,您可以创建ComponentMover
,然后注册窗口的根窗格以允许您拖动窗口。但您还需要注册标签。