3

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

例如,当我按下“UP”键时,按钮/标签应该向上移动 5 个像素。我找不到更改按钮位置的属性。

我需要在面板内放置按钮/标签或类似的东西吗?

请帮忙,这不是功课,只是好奇:)

4

2 回答 2

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
}

}

这段代码将绘制文本并重复绘制它。您所要做的就是在 Key Listener 中或曾经使用过的东西中执行;

  X++;

或者:

  Y++;

每次都会加1。因此,当您按下键时,它会移动一个 x 像素或 y 像素或前后移动,具体取决于 ++ 或 --。然后将其添加到 JFrame 中,它将在屏幕上绘制。

于 2012-06-07T03:20:46.717 回答
0

在我正在做的应用程序中使用原始图像要好得多,但这是我在做的时候偶然发现的东西;)

这个事实可以通过标签的绝对定位(不知道按钮)来完成,即。不使用任何布局管理器。我们所要做的就是以下几点:

setLayout(null);
Jlabel testLabel = new JLabel("Test Moving label");

现在完成了。我们必须设置

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

here xCoord and yCoord are the coordinates of the top left pixel of the label. the above line can be added to the actionListener. in my case its the action for pressing UP, RIGHT and LEFT arrow keys. we can increment and decrement the xCoord and yCoord accordingly.

于 2012-06-15T19:13:45.073 回答