如何在JFrame中移动对象



我一直致力于构建一个简单的游戏,使用JFrame、JLabel和按钮来执行不同的命令。然而,我一直遇到的问题是,无论我做什么,我都无法在JFrame中移动项目。如果有什么不同,我会在replit中这样做。

这就是我的一个标签的当前代码,但setLocation和setBounds似乎不起作用。我也尝试过setX和Y对齐方法,但它们都不起作用。

ImageIcon darm = new ImageIcon("Sprites/front.png");
JLabel dLabel = new JLabel(front);
Dimension dSize = dLabel.getPreferredSize();
dLabel.setBounds(400, 400, 500, 500);
dLabel.setLocation(400,150);
window.getContentPane().add(dLabel);
dLabel.setVisible(true); 
window.setLayout(null);

通常在创建游戏时;游戏面板";它包含了你所有的游戏逻辑。然后你要么:

  1. 将组件添加到游戏面板或
  2. 在游戏面板上绘制对象

当使用Swing组件时,组件将被创建并添加到您的";GamePanel";班基本逻辑如下:

setLayout(null);
label = new JLabel( icon );
label.setSize( label.getPreferredSize() );
label.setLocation(100, 100);
add(label);

然后,您的游戏逻辑将只使用label.setLocation(…(根据需要动态移动组件。

然后在创建框架的main((方法中,基本逻辑是:

GamePanel panel = new GamePanel();
JFrame frame = new JFrame();
frame.add(panel);
frame.setVisible( true );

然而,大多数人更喜欢在游戏中绘制对象,因为这比创建Swing组件更有效。查看:获取类外JPanel的宽度和高度,以获取多个对象的动画示例。

最新更新