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

我使用的是intelliJ的网格布局管理器,这使我很难找到在哪里放置什么代码。

我是Java的新手,因此非常感谢您对在AnimationPanel上进行绘制的任何帮助。

到目前为止,这是我的尝试-

主类:

public class ProjectileSim {

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


}


}

AnimationPanel类:

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类:(由于主要与菜单相关,因此省略了很多)

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);

或其他方法(使用布局)

10-01 18:51