2016-05-20 6 views
-1

erstellen, also versuche ich, ein Dialogfeld in einem anderen Jframe zu erstellen, aber wenn ich auf die Schaltfläche klicke, erscheint eine leere Dialogbox. Ich denke es liegt an dieser Aussage und die Erstellung des unten stehenden Dialogs kann nicht zusammen funktionieren. Ich bekomme eine Fehlermeldung, dass kein geeigneter Konstruktor für AddConsultantDialog gefunden wurde (keine Argumente) Wie kann ich stattdessen den Code schreiben ?. Die Erstellung des Dialogfelds im automatisch erstellten Code von netbeans. Danke im Voraus.Ich kann kein Dialogfeld in Java

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(); 
} 
+0

Ich weiß nicht, was Sie versuchen, mit dem zu tun die diese();" Erklärung. Hol es raus. Es sieht so aus, als ob der Compiler versucht, einen Konstruktor zu finden, der keine Argumenten enthält *, weil Sie diese Anweisung dort haben. – arcy

+0

Beachten Sie, dass Komponenten ohne Standard, 0 Argumentkonstruktoren, keine Beans sind. Wenn dieser Code automatisch generiert wurde, liegt es wahrscheinlich daran, dass Sie Ihrer IDE gesagt haben, dass Sie eine JavaBean erstellen möchten, aber das ist wahrscheinlich nicht das, was Sie wollten. Wie andere gesagt haben, nehmen Sie die 'this()' – Ironcache

+0

Wenn Sie dies jedoch eine JavaBean wollte, dann sollten Sie einen 'AddConsultantDialog()' -Konstruktor (ohne Argumente) hinzufügen. Es gibt ein paar andere Einschränkungen, aufgelistet [hier] (https://en.wikipedia.org/wiki/JavaBeans). – Ironcache

Antwort

2

Sie haben bei leat zwei Konstrukteurs bekam, eine, die die Super-Konstruktor in geeigneter Weise ruft und initComponents():

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

und das andere, das nicht der Fall ist:

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

Ich bin Erraten, dass Sie tatsächlich den zweiten Konstruktor den einen ohne die Schlüsselelemente, die in dem zweiten Konstruktor gefunden werden, nennen, und das Problem damit ist, da es den entsprechenden Superkonstruktor t nicht aufruft Der Dialog wird nicht als modaler Dialog erstellt, und er ruft auch nicht initComponents() auf, und deshalb werden Ihrer GUI keine Komponenten hinzugefügt - also beheben Sie es. Lassen Sie Ihren Konstruktor den Super-Konstruktor entsprechend aufrufen, übergeben Sie ein übergeordnetes Fenster und rufen Sie initComponents() auf.

Eine einfache Lösung ist die this(...), die zwei Parameter, eine GUI und eine Boolean nimmt.

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; 
} 
0

Versuchen Sie diesen Konstruktor ändern

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

}

dazu

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

}

Verwandte Themen