2016-11-22 74 views
-1

我想要完成的事情很简单,我按JButton(称为'right'),并且JLabel的x边界增加100,有效地移动JLabel向右100像素。我一直在东西尝试,如:如何在按下按钮时添加到jlabel的x边界

 if(clicked == right) { 
      piece.getBounds().x = +100; 
     } 

,我尝试:

 if(clicked == right) { 
      piece.addBounds(100,0,0,0); 
     } 

方法addBounds是未定义类型的JLabel 所以我尝试:

 if(clicked == right) { 
      piece.setBounds(+100,0,0,0); 
     } 

,并明确所有的上述不起作用,但值得一试。有没有办法做我想做的事?

+0

看来,通过改变应用于单个标签的EmptyBorder值,或者完全放弃使用组件并自定义绘制字符串或图像,可能会更好。所有这些“移动标签”的最终目的是什么?另请参见[什么是XY问题?](http://meta.stackexchange.com/q/66377) –

+0

标签所在组件的'LayoutManager'是什么?一个最小的,完整的例子可以帮助你。 – hendrik

回答

0

的界限实际上是一个矩形,这样你就可以得到JLabel的界限,推进其x位置,然后通过调用适当的方法设定的界限:

Rectangle bounds = piece.getBounds(); // get the bounds 
bounds.x += 100; // increment the x value 
piece.setBounds(bounds); // re-set the new bounds 

repaint(); // call repaint on the container that holds the JLabel so it is repainted 
+0

谢谢!我对java还不太了解,还在学习,感谢你的回应! –

0

如果我没有记错,摆动Java中的组件需要在对它们进行更改时重新绘制。

尝试只是在按下按钮时调用“repaint()”方法,并且应该更新组件的更改。