关闭JDialog时返回null

几百个

我有一个具有用于添加新记录的JDialog的表,当我单击以添加Button并想添加新记录并打开JDialog时,我关闭了JDialog窗口,并且该窗口返回null了我表行的所有列。

这是我的JDialog构造函数:

public class AddBookDialog extends JDialog implements ActionListener {

public AddBookDialog(JFrame owner) {
    super(owner, "Add New Book", true);
    initComponents();
    saveBtn.addActionListener(this);
    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    setVisible(true);
    }

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == cancelBtn) dispose();
    else if (e.getSource() == saveBtn) saveAction();
        }
}
    public void saveAction() {
    if (nameTf.getText().trim().length() != 0) {
        if (!haveDigit(nameTf.getText().trim())) setBookName(nameTf.getText().trim());
        else {
            JOptionPane.showMessageDialog(null, "Book Name have digit");
            return;
        }
    } else {
        JOptionPane.showMessageDialog(null, "Enter Book Name");
        return;
    }
    if (isbnTf.getText().trim().length() != 0) {
        if (haveSpace(isbnTf.getText().trim()) || haveLetter(isbnTf.getText().trim())) {
            JOptionPane.showMessageDialog(null, "Enter Correct ISBN");
            return;
        }
        setIsbn(isbnTf.getText().trim());
    } else {
        JOptionPane.showMessageDialog(null, "Enter Book ISBN");
        return;
    }

    setBorrowStatus("No");
    setDate(dateGenerate());
    dispose();
}

我尝试在我的表GUI类中控制此问题:

public class BookPage_Admin extends JFrame implements ActionListener {
...

    public void addAction() {
    AddBookDialog dialog = new AddBookDialog(this);
    if (dialog.getBookName() != null && dialog.getIsbn() != null && dialog.getBorrowStatus() != null &&
            dialog.getDate() != null) {
        Object[] added = new Object[]{dialog.getBookID(), dialog.getBookName(), dialog.getIsbn(), dialog.getBorrowStatus(), dialog.getDate()};
        model.addRow(added);
     }
   }
}

但是仍然当我关闭它时,它返回null到我的行。

null关闭时如何防止返回

马克西姆·肖汀(Maxim Shoustin)

万一没有人回答您,以防万一:

当您启动Dialog时,也AddBookDialog dialog = new AddBookDialog(this);可以ActionListener在Frame端进行覆盖,例如:

AddBookDialog dialog = new AddBookDialog(this);
dialog.setModal(true);

dialog.getSaveBtn().addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

      Object[] added = new Object[]{dialog.getBookID(), dialog.getBookName(), dialog.getIsbn(), dialog.getBorrowStatus(), dialog.getDate()};
      model.addRow(added);

            }
        });

// importent set visible after ActionListener!! 
dialog.setVisible(true);

希望能有所帮助,

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章