微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 JFrame 中移动对象?

如何解决如何在 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 组件更有效。查看:get width and height of JPanel outside of the class 了解多个对象的动画示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。