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