2012-06-03 28 views
3

基本上,我尝试使用箭头键在帧内移动JButton(或甚至JLabel)。 我已经成功地找出了检测箭头键按下的部分。现在我想要做的就是根据按下的按键来改变按钮(或标签)的位置。在事件中更改帧内按钮的位置

E.G.当我按下“UP”键时,按钮/标签应该向上移动5个像素。我无法找到该属性来更改按钮的位置。

我需要在面板内放置按钮/标签吗?

请帮助,它不是一门功课,只是好奇:)

+0

这是什么目的? –

+0

可以说有一个迷宫。我想让用户使用箭头键将jButton/jLabel移动到迷宫中。 – md1hunox

+4

请勿使用标签或按钮。使用原始图像并在自定义组件中随时随地进行绘制。 –

回答

1

我会怎么做就是用图形来代替面板。所以代码绘制该位则可能是:

public class panel extends JPanel{ 
public int X = 50; //Starting x 
public int Y = 50; //Starting y 
public panel(){ 

} 
public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    this.setBackground(Color.WHITE); 
    g.drawString("Hello this will be moved", X, Y);//<--- This draws the text 
} 

}

这段代码将绘制文本,并多次绘制。所有你需要做的就是在关键的听者或者曾经使用过的东西,

X++; 

或:

Y++; 

这将增加1次每次。所以当你按下键时,它会移动一个x像素或y像素或前后移动,这取决于++或 - 。然后将其添加到JFrame中,它将在屏幕上绘制它。

0

使用原始图像的是我做的应用程序要好得多,但这里的东西,在做的,我无意中发现;)

这INFACT可以通过标签的绝对定位来完成(不知道按钮)即。而不使用任何布局管理器。 所有我们要做的是follwing:

setLayout(null); 
Jlabel testLabel = new JLabel("Test Moving label"); 
现在与做

。我们必须设置

testLabel.setBounds(XCoord+ insets().left, yCoord+ insets().top, 150, 25); 

这里xCoordyCoord是标签的左上角像素的坐标。上面的行可以被添加到actionListener。在我的情况下,它是按下向上,向右和向左箭头键的动作。 我们可以相应地增加和减少xCoord和yCoord。