我无法在Java

时间:2016-05-20 16:36:36

标签: java swing

所以我试图在另一个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();
}

2 个答案:

答案 0 :(得分:2)

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

public AddConsultantDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
}

和另一个没有:

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

我猜你实际上是在调用第二个构造函数而没有在第二个构造函数中找到的关键元素,而问题是,因为它没有调用appriate超级构造函数,所以对话框不会创建为一个模态对话框,它也不会调用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;
}

答案 1 :(得分:0)

尝试更改此构造函数

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;

}