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

时间:2015-04-17 12:10:26

标签: java swing user-interface intellij-idea paintcomponent

我的程序中有两个JPanel,是我GUI的主要JFrame。一个是菜单,另一个应该显示一些图形,然后是动画。我试图在后一个小组内画画。

我正在使用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);

1 个答案:

答案 0 :(得分:1)

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

frame.setContentPane(MainPanel);

我能看到你的画。

请记住将AnimationPanel放在框架上:

frame.setContentPane(AnimationPanel);

或其他方法(使用布局)