2016-05-20 2 views
-1

, поэтому я пытаюсь создать диалоговое окно в другом jframe, но когда я нажимаю на кнопку, появляется пустое диалоговое окно. Я думаю, что это из-за этого утверждения, и создание диалогового окна ниже не может работать вместе. Я получаю сообщение об ошибке, которую не нашел подходящий конструктор для AddConsultantDialog (без аргументов). Как я могу написать код вместо этого ?. Создание диалогового окна в автоматически создаваемом коде netbeans. Заранее спасибо.Я не могу создать диалоговое окно в 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

Я не знаю, что вы пытаетесь сделать с «this()»; заявление. Вытащите его. Похоже, что компилятор пытается найти конструктор no-arg *, потому что * у вас есть это заявление там. – arcy

+0

Обратите внимание, что компоненты, не содержащие по умолчанию, конструкторы аргументов 0, не являются компонентами. Если этот код был автоматически сгенерирован, вероятно, потому, что вы сказали своей среде IDE, что хотите создать JavaBean, но это, вероятно, не то, что вы хотели. Как говорили другие, выньте 'this()' – Ironcache

+0

Однако, если вы хотите, чтобы это был JavaBean, вам следует добавить конструктор 'AddConsultantDialog()' (без аргументов). Есть еще несколько ограничений, перечисленных [здесь] (https://en.wikipedia.org/wiki/JavaBeans). – Ironcache

ответ

2

Вы получили в Лит два конструктора, один, который соответствующим образом вызывает конструктор супер и initComponents():

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

, а другой, который не делает:

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

Я угадав, что вы на самом деле называете второй конструктор тем, у кого нет ключевых элементов, найденных во втором, и проблема с этим заключается в том, что он не вызывает соответствующий супер-конструктор, t он не создается как модальный диалог, а также не вызывает initComponents(), поэтому компоненты не добавляются в ваш графический интерфейс - так что исправьте его. Попросите вашего нового конструктора соответствующим образом вызвать конструктор супер, передав родительское окно и позвонив initComponents().

Одним из простых исправлений является вызов this(...), который принимает два параметра, графический интерфейс и логическое значение.

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

Попробуйте изменить этот конструктор

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; 

}

Смежные вопросы