2013-02-07 1 views
1

У меня есть JFrame, у которого есть addButton.JDialog window не показывает

Когда пользователь нажимает кнопку, окно AddDialog должен показать, но я не могу видеть его и не может добавить строку

Вот мой код:

public class AddDialogS extends JDialog{ 
BookInformation bookinform=new BookInformation(); 

public AddDialogS(JFrame owner){ 
    super(owner,"Add New Book!", true); 
    JButton OkButton=new JButton("Ok"); 
    final JTextField nameTF=new JTextField(10); 
    final JTextField dateTF=new JTextField(10); 
    final JTextField idTF=new JTextField(10); 

    OkButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      bookinform.setBookName(nameTF.getText()); 
      bookinform.setBookDate(dateTF.getText()); 
      bookinform.setBookID(idTF.getText()); 
      AddDialogS.this.dispose(); 
     } 
    }); 

    JPanel panel=new JPanel(new FlowLayout()); 
    panel.add(OkButton); 
    panel.add(nameTF); 
    panel.add(dateTF); 
    panel.add(idTF); 
} 

public BookInformation getBookInfos(){ 
    return bookinform; 
} 
} 

А мне главный класс:

public class MainS extends JFrame{ 

    final AllBooks allBooks=new AllBooks(); 
    final JTable Btable=new JTable(allBooks); 

    public MainS(){ 
     JButton AddBookButton=new JButton("Add New Book"); 
     AddBookButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 

      AddDialogS adddialog=new AddDialogS(MainS.this); 
      BookInformation B_info=adddialog.getBookInfos(); 
      if(B_info != null){ 
       allBooks.AddRow(B_info); 
      } 
     } 
    }); 

    JPanel Bpanel=new JPanel(); 
    Bpanel.setLayout(new FlowLayout()); 
    JScrollPane sp=new JScrollPane(Btable); 
    Bpanel.add(sp); 
    Bpanel.add(AddBookButton); 
    this.add(Bpanel); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setBounds(300, 60, 550, 550); 
    this.setVisible(true); 
    } 

    public static void main(String[] args){ 
     new MainS(); 
    } 
} 

Это wolud Добавить новую строку в jtable.

+0

Вы забыли добавить строки: 'add (panel);/pack();/setVisible (true) ;, в конструкторе' AddDislogS''Class. –

+1

Некоторые примечания: 1) Запустите _UI_ на 'EDT' 2) Не расширяйте' JFrame' или 'JDialog'. Вместо этого создайте экземпляр 'JFrame' в классе. – Amarnath

ответ

3

Вы должны добавить dialog.setVisible(true); в actionPerformed() метод основного класса:

public class MainS extends JFrame{ 
... 
    public MainS(){ 
     AddDialogS adddialog=new AddDialogS(MainS.this); 
     adddialog.setVisible(true); 

     BookInformation B_info=adddialog.getBookInfos(); 
     ... 
+1

Но перед этим вам нужно добавить 'JPanel' в' JDialog' и вызвать метод 'pack()'. +1 для ОТДЫХА :-) –

3

Просто создать объект JDialog не собирается показывать. Вы должны установить его видимым с помощью setVisible(true).

Также я не вижу размер, установленный в вашем диалоговом окне. Вы можете использовать setSize(width, height).

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

  • Нет связанных вопросов^_^