当框架中有两个 JPanel 时在一个 JPanel 上绘画

Painting on one JPanel when two are in the frame

我的 GUI 程序主 JFrame 中有两个 JPanel。一个是菜单,另一个应该显示一些图形,然后是动画。我正在尝试在后一个面板内部绘制。

我使用的是 intelliJ 的网格布局管理器,这让我很难找到代码的放置位置。

我是 Java 的新手,因此非常感谢任何有关如何在 AnimationPanel 上绘画的帮助。

这是我目前的尝试 -

主要Class:

public class ProjectileSim {

public static void main(String[] args){
    GUIForm1 gui = new GUIForm1();
    AnimationPanel animationPanel = new AnimationPanel();


}

}

动画面板Class:

public class AnimationPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {

    super.paintComponent(g);

    //axis
    g.setColor(Color.BLACK);
    g.fillRect(50, 0, 5, getHeight());
    g.fillRect(0, getHeight() - 50, getWidth(), 5);


    int axisY = 0;
    int axisX = 0;
    int axisYCounter = 1;
    int axisXCounter = 1;

    //axis markers
    while (axisYCounter <= getHeight() / 10) {
        g.fillRect(35, axisY, 20, 5);
        axisY = axisY + 50;
        axisYCounter++;
    }

    while (axisXCounter <= getWidth() / 10) {
        g.fillRect(axisX, getHeight() - 50, 5, 20);
        axisX = axisX + 50;
        axisXCounter++;
    }
}
}

GUIForm1 Class:(省略了很多,因为它主要与菜单相关)

public class GUIForm1 {


private JPanel MainPanel;
private JPanel MenuPanel;
private JPanel AnimationPanel;



public GUIForm1() {


    JFrame frame = new JFrame("Projectile Motion");
    frame.setContentPane(MainPanel);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setExtendedState(Frame.MAXIMIZED_BOTH);
    frame.pack();
    frame.setVisible(true);

您用 MainPanel 覆盖了 AnimationPanel。我评论了这一行:

frame.setContentPane(MainPanel);

我看到了你的画。

记得按以下方式将 AnimationPanel 放在框架上:

frame.setContentPane(AnimationPanel);

或其他方法(使用布局)