Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用调用组件私有初始化的构造函数_Java_Swing - Fatal编程技术网

Java 调用调用组件私有初始化的构造函数

Java 调用调用组件私有初始化的构造函数,java,swing,Java,Swing,我刚刚发现netbeans有内置的swing工具,所以我在玩弄它,但遇到了一些麻烦。如何从主方法调用初始化。因为没有main方法,程序不会执行,但是有了它,我不能只调用构造函数,也不能只调用initComponents(),因为它是私有的。我怎样才能让它工作 public static void main(String [] args){ } /** * Creates new form password */ public password() { initComponents

我刚刚发现netbeans有内置的swing工具,所以我在玩弄它,但遇到了一些麻烦。如何从主方法调用初始化。因为没有main方法,程序不会执行,但是有了它,我不能只调用构造函数,也不能只调用initComponents(),因为它是私有的。我怎样才能让它工作

public static void main(String [] args){


}
/**
 * Creates new form password
 */
public password() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jLabel2 = new javax.swing.JLabel();
...
publicstaticvoidmain(字符串[]args){
}
/**
*创建新表单密码
*/
公共密码(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:请勿修改此代码。此方法的内容始终是
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
jPanel1=newjavax.swing.JPanel();
jLabel1=newjavax.swing.JLabel();
jTextField1=newjavax.swing.JTextField();
jLabel2=newjavax.swing.JLabel();
...

正如@MadProgrammer已经提到的,您只需创建类的实例,调用其构造函数,如下所示:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class Class extends JFrame
{
    private JButton btn;
    private JTextArea txtArea;

    public static void main(String[] a)
    {
        EventQueue.invokeLater(new Runnable() {
            public void run()
            {
                new Class();// Creating an instance of Class
            }
        });
    }

    public Class()
    {
        super("Title");

        initialize();

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        pack();
        setLocationRelativeTo(null);
    }

    private void initialize()
    {
        btn = new JButton("Click me");
        txtArea = new JTextArea();

        add(btn, BorderLayout.NORTH);
        add(txtArea, BorderLayout.CENTER);
    }
}

如果不这样做,您将创建一个新的对象实例,该实例将创建它。如果您添加了其他构造函数,它们将需要调用默认构造函数(根据您的结构,通过
this
super
)试着用它来解决未来的问题,考虑提供一个演示你的问题的方法。这会导致更少的混乱和更好的响应。我试过这个,因为我觉得它是这样的。我以前在做同样的事情,不同的项目,这次我只是使用了一个JPANE VS较早的JFrice。它工作得很好。因为我重新开始,虽然这回答了我的问题