在事件中更改框架内按钮的位置

时间:2012-06-03 06:29:05

标签: java swing jbutton jlabel layout-manager

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

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

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

请帮忙,这不是作业,只是好奇:)

2 个答案:

答案 0 :(得分:1)

我将如何使用图形而不是Panel。因此,绘制它的代码可能是:

    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中,它将在屏幕上绘制。

答案 1 :(得分:0)

使用原始图像在我正在进行的应用程序中要好得多,但这是我在做这件事时意外发现的事情;)

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

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

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

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

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