JDialog无法转换为第

时间:2016-06-13 22:14:35

标签: java swing jframe jdialog

我想在应用程序中添加学生,然后分配给每本学生20本书。

我有3个窗口: 主窗口(JFrame) 书籍清单(JDialog) 添加一本书(JDialog)

我有JFrame,我可以看到所有学生的列表,然后我点击"书籍列表"我在哪里可以看到数据库中所有书籍的列表(.txt文件)。所以当我点击JFrame中的那个按钮时,我打开JDialog,这很好用。但现在我想在列表中添加一些书籍,所以我点击按钮"添加一本书"在"书籍清单"的JDialog。所以我只想打开另一个JDialog,这是以前JDialog的顶部。

所以我在窗口"书籍列表" (我从主窗口打开)我想打开窗口"添加一本书"。

现在,当我通过与从JFrame打开JDialog相同的方法执行此操作时,它显示错误:

private void pridatKnihuJButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                   
    addBookJDialog newwindow = new addBookJDialog(this, true);
    newwindow.setLocationRelativeTo(null);
    newwindow.setVisible(true);
}  

它显示:

不兼容的类型:addBookJDialog无法转换为Frame。

有一种简单的方法吗? 我在NetBeans设计函数中创建了这些窗口。

我找到了一些关于在另一个JDialog上打开一些JDialog的主题,但我不明白该怎么做:/有3行代码打开另一个JDialog。有没有办法简单地打开它?

感谢。

1 个答案:

答案 0 :(得分:0)

确定。我找到了答案......或者更可能的是,我终于明白了每个人都在发布的代码:D 2小时的寻找:D

如果有人有同样的问题。答案是:

单击对话框按钮中的按钮,然后转到该按钮的ActionPerformed部分(双击NetBeans设计部分中的该按钮)。

并写下:

JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(this);
    <target dialog> <optional name> = new <target dialog>(frame,true);
    <optional name (but same as above)>.setLocationRelativeTo(null);
    <optional name (but same as above)>pridatzaznam.setVisible(true);

导入需要导入的内容,然后你去。

它可能需要这两个: import javax.swing.JFrame; import javax.swing.SwingUtilities;

示例:

JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(this);
    dialogIWantToOpen openthis = new dialogIWantToOpen(frame,true);
    openthis.setLocationRelativeTo(null);
    openthis.setVisible(true);

将在当前对话框的顶部打开一个对话框,但前提是当前对话框是从JFrame打开的。

如果你想在对话框顶部的对话框上面打开一个对话框......它可能需要在(JFrame)之后进行一些编辑

SwingUtilities.getWindowAncestor(this);

可能必须是

SwingUtilities.getWindowsAncestor(SwingUtilities.getWindowAncestor(this));

因此,这将打开一个对话框,该对话框是从一个从JFrame打开的对话框中打开的对话框打开的。但我不确定它是否会奏效。没试过。