我无法用Java创建对话框

我无法用Java创建对话框,java,swing,Java,Swing,因此,我试图在另一个jframe中创建一个对话框,但当我单击按钮时,会出现一个空对话框。我想这是因为这句话,下面的对话不能一起创建。我得到一个错误,没有为AddConsultantDialog找到合适的构造函数(没有参数),我怎样才能编写代码呢?。在netbeans自动创建的代码中创建对话框。提前谢谢 public class AddConsultantDialog extends javax.swing.JDialog { private ConsultantDAO consultantDA

因此,我试图在另一个jframe中创建一个对话框,但当我单击按钮时,会出现一个空对话框。我想这是因为这句话,下面的对话不能一起创建。我得到一个错误,没有为AddConsultantDialog找到合适的构造函数(没有参数),我怎样才能编写代码呢?。在netbeans自动创建的代码中创建对话框。提前谢谢

public class AddConsultantDialog extends javax.swing.JDialog {

private ConsultantDAO consultantDAO;

private ConsultantSearchApp consultantSearchApp;    

public AddConsultantDialog(ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
    this();
    consultantDAO = theConsultantDAO;
    consultantSearchApp = theConsoltantSearchApp;
}


    /**
 * Creates new form AddConsultantDialog
 * @param parent
 * @param modal
 */
public AddConsultantDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
}

您至少有两个构造函数,一个适当地调用super的构造函数和
initComponents()

而另一个没有:

public AddConsultantDialog(ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
    this();
    consultantDAO = theConsultantDAO;
    consultantSearchApp = theConsoltantSearchApp;
}
我猜您实际上调用的是第二个构造函数,即第二个构造函数中没有找到关键元素的构造函数,问题是,由于它没有调用相应的超级构造函数,因此对话框不是作为模式对话框创建的,而且它也没有调用
initComponents()
这样就不会在GUI中添加任何组件——所以请修复它。让您的新构造函数适当地调用super的构造函数,传入父窗口,并调用
initComponents()

一个简单的修复方法是调用
this(…)
,它接受两个参数,一个GUI和一个布尔值

public AddConsultantDialog(ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
    // you will need to pass in the parent window as a parameter for this to work
    this(parentWindow, true);  // note change. It calls the first constructor above
    consultantDAO = theConsultantDAO;
    consultantSearchApp = theConsoltantSearchApp;
}

尝试更改此构造函数

public AddConsultantDialog(ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
     this();
     consultantDAO = theConsultantDAO;
     consultantSearchApp = theConsoltantSearchApp;
}

对此

public AddConsultantDialog(java.awt.Frame parent, boolean modal, ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
     super(parent, modal);
     initComponents();
     consultantDAO = theConsultantDAO;
     consultantSearchApp = theConsoltantSearchApp;

}

我不知道您想用“this();”语句做什么。把它拿出来。编译器似乎正在尝试查找无参数构造函数,因为其中包含该语句。请注意,没有默认值的组件、0参数构造函数不是bean。如果这段代码是自动生成的,可能是因为您告诉您的IDE您想要创建一个JavaBean,但这可能不是您想要的。正如其他人所说,去掉
this()
但是,如果您确实希望它是一个JavaBean,那么您应该添加
AddConsultantDialog()
构造函数(没有参数)。下面列出了一些其他约束条件。
public AddConsultantDialog(java.awt.Frame parent, boolean modal, ConsultantSearchApp theConsoltantSearchApp, ConsultantDAO theConsultantDAO) {
     super(parent, modal);
     initComponents();
     consultantDAO = theConsultantDAO;
     consultantSearchApp = theConsoltantSearchApp;