我正在计时器中移动JLabel,但它正朝着错误的方向移动

时间:2016-06-10 04:43:27

标签: java timer jlabel

actionListener JButton JFrame victim==playerTwo是对此方法的调用。当victim==playerOne时,它是正确的。但是,当JLabel时,JLabel图片向错误的方向移动。在第一个场景中,if(victim==playerTwo) { ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { if(pic.getLocationOnScreen().x>1300) { ((Timer)evt.getSource()).stop(); } pic.setIcon(icon); pic.setLocation((pic.getLocationOnScreen().x+5),45); } }; new Timer(delay, taskPerformer).start(); } else { pic.setLocation(1000,500); ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { if(pic.getLocationOnScreen().x<0) { ((Timer)evt.getSource()).stop(); } pic.setIcon(icon); pic.setLocation(((pic.getLocationOnScreen().x)-5),500); } }; new Timer(delay, taskPerformer).start(); } 应该向右移动,而在第二个场景中向左移动。如果您有任何疑问,请与我们联系,并感谢您提供的任何帮助。

<form id="myform" action="https://mq-aws-us-east-1-2.iron.io/3/projects/575526342343c707/queues/testQueue1/messages?oAuth=3b33k3i4pf689wpCvQZ9CO method="get">
<a onclick="document.getElementById('myform').submit();">Send Request to IronMQ</a>

</form>

1 个答案:

答案 0 :(得分:0)

您似乎混淆了getLocationgetLocationOnScreen

的使用情况
  • getLocation使用相对于父组件
  • 的坐标
  • getLocationOnScreen使用相对于屏幕
  • 的坐标

这是一种在屏幕上移动应用程序变得更加明显的问题类型。

更改代码以坚持父坐标系应解决此问题:

pic.setLocation(((pic.getLocation().x)-5),500); // or +5 for player2