Java JDialog窗口不显示

Java JDialog窗口不显示,java,swing,jtable,jdialog,Java,Swing,Jtable,Jdialog,我有一个JFrame,它有一个addButton 当用户单击按钮时,AddDialog窗口必须显示,但我看不到它,也不能添加行 这是我的密码: public class AddDialogS extends JDialog{ BookInformation bookinform=new BookInformation(); public AddDialogS(JFrame owner){ super(owner,"Add New Book!", true); JButton O

我有一个JFrame,它有一个addButton

当用户单击按钮时,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();
   }
}
它将向jtable添加新行。

您应该添加dialog.setVisibletrue;在主类的actionPerformed方法中:

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

        BookInformation B_info=adddialog.getBookInfos();
        ...
您应该添加dialog.setVisibletrue;在主类的actionPerformed方法中:

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

        BookInformation B_info=adddialog.getBookInfos();
        ...
仅仅创建JDialog的对象并不会显示它。必须使用setVisibletrue将其设置为可见

此外,我看不到设置为对话框的大小。您可以使用setSizewidth,height来进行此操作。

仅创建JDialog的对象不会显示它。必须使用setVisibletrue将其设置为可见


此外,我看不到设置为对话框的大小。您可以使用setSizewidth,height进行此操作。

您忘记添加行,addpanel/包装/setVisibletrue;,在AddDisposgs``类的构造函数中。需要注意的是,1在EDT上运行UI 2不扩展JFrame或JDialog。而是在类中创建一个JFrame实例/包装/setVisibletrue;,在AddDisposgs``类的构造函数中。需要注意的是,1在EDT上运行UI 2不扩展JFrame或JDialog。而是在类中创建一个JFrame实例,但在此之前,还必须将JPanel添加到JDialog中,并调用它的pack方法+1表示其余:-但在此之前,您还必须将JPanel添加到JDialog中,并调用它的pack方法+1其余的:-