我的程序中有两个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);
答案 0 :(得分:1)
您使用MainPanel覆盖了AnimationPanel。我评论了这一行:
frame.setContentPane(MainPanel);
我能看到你的画。
请记住将AnimationPanel放在框架上:
frame.setContentPane(AnimationPanel);
或其他方法(使用布局)