我对Java和OOP非常陌生,我想从我的Main类调用我的GUI类,这将是我的程序的起点。
这应该很简单,但任何帮助都将不胜感激
GUIForm1代码:
import javax.swing.*;
import java.awt.*;
public class GUIForm1 {
private JPanel MainPanel;
private JPanel MenuPanel;
Private JPanel AnimationPanel;
private JButton greenTrail;
private JButton purpleTrail;
private JSeparator animationMenuDivider;
private JSlider rangeSlider;
//more components
public GUIForm1() {
JFrame frame = new JFrame("GUIForm1");
frame.setContentPane(new GUIForm1().MainPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.pack();
frame.setVisible(true);
}
}
主类代码:
public class ProjectileSim {
public static void main(String[] args){
GUIForm1 gui = new GUIForm1();
}
}
答案 0 :(得分:1)
你的代码很好。您对GUIForm类的主类实例化也是正确的。您遇到问题的原因在于:
frame.setContentPane(new GUIForm1().MainPanel);
这是您在代码中的问题。您试图在类中调用类的构造函数来设置不存在的MainPanel。
如果您正在使用NetBeans(或任何IDE),只需将JPanel拖到您的GUI上就可以了,然后您可以将帧内容框架设置为(例如):
frame.setContentPane(myNewJPanel);
试一试。注释掉你设置内容框架的行,看看我的意思。
(顺便说一句,这就是你的评论:
//frame.setContentPane(new GUIForm1().MainPanel);
您只需在不想执行的行前插入2个正斜杠。
一切顺利。让我知道结果。
答案 1 :(得分:0)
添加文本Jfield或JButton或更改您觉得新的面板的颜色。 并且主要方法必须在java中,它应该存在于公共类中。
答案 2 :(得分:0)
你的问题非常普遍。我会建议你在开始时通过https://docs.oracle.com/javase/tutorial/uiswing/start/index.html。
但是,为了获得任何可见的结果你应该做的是:
public GUIForm1() {
JFrame frame = new JFrame("GUIForm1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
通常你应该初始化GUI对象(比如JButtons,JFrame等)然后将它们添加到内容窗格,然后将所有内容设置为可见。但是请仔细阅读教程,因为它们涵盖了所有基础知识。