Java Netbeans:如何从另一个类打开JPanel?

时间:2018-02-05 22:15:56

标签: java swing

我有一个main.java文件,我喜欢用它来调用JPanel中的GUI。 这是我的第一次NetBeans体验,所以要温柔:-) ......

无法编译;我得到的错误是:Erroneous sym type: main.GUI.GUI(这在解释时是有意义的。)

但是现在:我如何修复它?

我也试过了GUI.GUI();,但没有得到正面结果.. (我以前习惯于编写C ++,但是因为导入不是java中的一个真正选项(或者是吗?)。

我的main.java:

package main;
public class Main {
    public static void main(String[] args) {
        GUI obj = new GUI();
        obj.GUI();
    }  
}

我的GUI.java文件:

package main;

public class GUI extends javax.swing.JPanel {
    public GUI() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
    }                                
}

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望显示Main类的GUI。要记住的一件事是无法显示JPanel本身。它必须在显示之前添加到JFrame中。尝试类似:

package main;
public class Main {
    public static void main(String[] args) {
        GUI obj = new GUI(); // creates your panel
        JFrame frame = new JFrame("some title"); // creates the frame
        frame.add(obj);
        frame.setSize(200,300);
        frame.setVisible(true);

    }  
}

答案 1 :(得分:-1)

GUI obj = new GUI(); 它创建了GUI的新对象。因此,构造函数已经运行。构造函数方法是特殊方法,在从类创建新对象时播放。