我想将目标位置显示为 组件移动到位置 - Xloc:634.0,yloc:394.0
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
public class ComponentEventDemo extends JFrame {
public ComponentEventDemo() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);
}
public static void main(String[] args) {
final ComponentEventDemo component = new ComponentEventDemo();
component.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
logLocation(component);
}
});
}
public static void logLocation(ComponentEventDemo component) {
System.out.println("Component moved to location - Xloc:" + component.getBounds().getMinX() + ", yloc:"
+ component.getBounds().getMinY());
}
}
在移动我的框架时,我想在移动完成后想要框架位置
我正在为单个移动事件获取多个日志,例如
示例输出
"组件移动到位置 - Xloc:0.0,yloc:0.0
组件移动到位置 - Xloc:5.0,yloc:2.0
组件移动到位置 - Xloc:15.0,yloc:11.0
组件移动到位置 - Xloc:29.0,yloc:24.0
组件移动到位置 - Xloc:50.0,yloc:41.0
组件移动到位置 - Xloc:76.0,yloc:64.0
组件移动到位置 - Xloc:113.0,yloc:95.0
组件移至位置 - Xloc:150.0,yloc:124.0
组件移动到位置 - Xloc:191.0,yloc:154.0
组件移至位置 - Xloc:238.0,yloc:185.0
组件移动到位置 - Xloc:288.0,yloc:214.0"
我正在寻找鼠标释放后的最后日志。
感谢您的建议。我已经对我的代码进行了更改,如下所示 `
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.Timer;
import javax.swing.JFrame;
public class ComponentEventDemo extends JFrame {
Timer timer = new Timer(500, new MyTimer());
static ComponentEventDemo component;
public ComponentEventDemo() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);
}
public static void main(String[] args) {
component = new ComponentEventDemo();
component.addListener(component);
}
public void addListener(final ComponentEventDemo component) {
component.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
timer.start();
}
});
}
class MyTimer implements ActionListener {
public void actionPerformed(ActionEvent e) {
logLocation();
timer.stop();
}
}
public void logLocation() {
System.out.println("Component moved to location - Xloc:" + component.getBounds().getMinX() + ", yloc:"
+ component.getBounds().getMinY());
}
}
` 它减少了输出中的日志数量但没有达到完整的目标。 寻找其他选择..感谢提前任何帮助..
答案 0 :(得分:1)
我正在寻找鼠标释放后的最后日志。
无法获取该信息,因为拖动帧是由操作系统控制的,并且您无法访问帧上生成的鼠标事件。
你可以尝试做的是使用Swing Timer。您安排计时器在一段时间后开火,比如500ms。
在componentMoved事件中,您可以启动/重新启动Timer。因此,如果用户不断拖动帧,Timer将不会触发。然后,如果用户没有将帧拖动500ms,将生成Timer事件,您可以获得当前帧位置。
所以,是的,使用这种解决方案,在了解帧位置时总会有一些延迟。