我的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);
或其他方法(使用布局)