我正在用Java swing制作2D游戏。我试着进行方形移动,但没有加载任何内容,因为我不记得方形Java上的类了。
public class tile {
tile(int widthScreen, int heightScreen) throws IOException {
JFrame tileframe = new JFrame("tileframe");
tileframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
FirstLevel connect = new FirstLevel(widthScreen, heightScreen, tileframe);
public FirstLevel(int widthScreen, int heightScreen, JFrame tileframe) // Constructor is passed the size of the parent frame
{
// // Start the timer
// shapeTimer.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
xBound = (windowWidth - squareSize);
yBound = (windowHeight - squareSize);
}
我运行游戏,但无法正常工作。JFrame不会被召回
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java Swing中,创建一个可移动的方形并显示在JFrame上,你需要确保几个关键点被正确实现。从你的代码片段来看,你已经尝试定义了一个tile
类和一个FirstLevel
类,但似乎缺少了实际绘制方形以及处理键盘事件来移动方形的逻辑。下面是一个简化的例子,展示了如何在一个Swing应用中实现一个可移动的方形:
首先,确保你的方形(或任何形状)能够被绘制。通常,我们会使用JPanel
的paintComponent(Graphics g)
方法来完成绘制任务。
import javax.swing.*;
import java.awt.*;
public class MovingSquare extends JPanel implements KeyListener {
private int squareSize = 50; // 方形的大小
private int x = 50; // 方形初始X坐标
private int y = 50; // 方形初始Y坐标
public MovingSquare() {
setFocusable(true);
addKeyListener(this);
setPreferredSize(new Dimension(800, 600)); // 设置面板尺寸
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE); // 设置颜色
g.fillRect(x, y, squareSize, squareSize); // 绘制方形
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_UP: y -= 10; break;
case KeyEvent.VK_DOWN: y += 10; break;
case KeyEvent.VK_LEFT: x -= 10; break;
case KeyEvent.VK_RIGHT: x += 10; break;
}
repaint(); // 重绘以更新画面
}
// KeyListener的其他方法需要实现,即使它们在这里不做任何事
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Moving Square");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MovingSquare());
frame.pack();
frame.setVisible(true);
});
}
}
这个例子中,我们创建了一个名为MovingSquare
的类,它继承自JPanel
并实现了KeyListener
接口。在paintComponent
方法中,我们绘制了一个蓝色的方形,并在keyPressed
方法中根据键盘输入改变方形的位置,最后调用repaint()
方法来更新界面。
请注意,为了使键盘监听生效,你需要确保窗口获得了焦点。在上面的例子中,通过setFocusable(true)
和requestFocusInWindow()
(虽然未直接展示,但在实际应用中可能需要调用)来实现这一点。
请尝试将上述代码与你的项目结合,或者作为参考来修改你的现有代码,以实现方形的移动功能。