【问题标题】:Change the position of a button inside a frame on event在事件的框架内更改按钮的位置
【发布时间】:2012-06-03 06:29:04
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这样做的目的是什么?
  • 假设有一个迷宫。我想允许用户使用箭头键在迷宫中移动 jButton/jLabel。
  • 不要使用标签或按钮。使用原始图像并在自定义组件中的任何需要处绘制它。
  • 好的,谢谢,试试看。
  • 不如考虑这个WONDERFUL EXAMPLE,由@trashgod 共享,它使用KeyBinding 而不是KeyListeners,因为您使用的是Swing 而不是AWT 和这个简单的example

标签: java swing jbutton jlabel layout-manager


【解决方案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 中,它会在屏幕上绘制它。

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2011-03-17
      相关资源
      最近更新 更多