swing如何在java面板上移动图形元素?
我目前正在做一个简单的类似乒乓球的游戏,但我被矩形的定位绊住了。 我想把它的Y位置改为实际面板高度的一半
package com.game;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("gEngine");
Player playerOne = new Player(frame);
Player playerTwo = new Player(frame);
}
}
package com.game;
import javax.swing.*;
import java.awt.*;
public class Player {
public Player(JFrame frame) {
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.BLACK);
frame.setSize(1280, 720);
frame.setVisible(true);
}
}
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(50, 60, 20, 120);
}
}
# 1 楼答案
你的代码有很多“问题”。我建议你找些教程什么的。你可以使用
frame.setVisible(true)
和Player
的类构造函数中的内容。您是否意识到,每次创建Player
对象时,所有这些都将应用于JFrame
?这有必要吗?也许你应该只做一次。此外,为了根据组件的位置和大小来paint
组件,您可以执行g.fillRect(50, getHeight() / 2, 20, 120);
编辑(基于评论):
背景是默认的,因为
GridLayout
将屏幕分割为两个面板(在画面中间)。即使框架有BLACK
背景,这两个面板也覆盖了它。所以你看到的背景是来自面板,而不是框架。要更改它,您必须更改面板的背景(并使其不透明):