基本上,我尝试使用箭头键在帧内移动JButton
(或甚至JLabel
)。 我已经成功地找出了检测箭头键按下的部分。现在我想要做的就是根据按下的按键来改变按钮(或标签)的位置。在事件中更改帧内按钮的位置
E.G.当我按下“UP”键时,按钮/标签应该向上移动5个像素。我无法找到该属性来更改按钮的位置。
我需要在面板内放置按钮/标签吗?
请帮助,它不是一门功课,只是好奇:)
基本上,我尝试使用箭头键在帧内移动JButton
(或甚至JLabel
)。 我已经成功地找出了检测箭头键按下的部分。现在我想要做的就是根据按下的按键来改变按钮(或标签)的位置。在事件中更改帧内按钮的位置
E.G.当我按下“UP”键时,按钮/标签应该向上移动5个像素。我无法找到该属性来更改按钮的位置。
我需要在面板内放置按钮/标签吗?
请帮助,它不是一门功课,只是好奇:)
我会怎么做就是用图形来代替面板。所以代码绘制该位则可能是:
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中,它将在屏幕上绘制它。
使用原始图像的是我做的应用程序要好得多,但这里的东西,在做的,我无意中发现;)
这INFACT可以通过标签的绝对定位来完成(不知道按钮)即。而不使用任何布局管理器。 所有我们要做的是follwing:
setLayout(null);
Jlabel testLabel = new JLabel("Test Moving label");
现在与做
。我们必须设置
testLabel.setBounds(XCoord+ insets().left, yCoord+ insets().top, 150, 25);
这里xCoord
和yCoord
是标签的左上角像素的坐标。上面的行可以被添加到actionListener。在我的情况下,它是按下向上,向右和向左箭头键的动作。 我们可以相应地增加和减少xCoord和yCoord。
这是什么目的? –
可以说有一个迷宫。我想让用户使用箭头键将jButton/jLabel移动到迷宫中。 – md1hunox
请勿使用标签或按钮。使用原始图像并在自定义组件中随时随地进行绘制。 –