2016-06-13 71 views
1

我想创建应用程序,您可以在其中添加学生,然后为其中的每一个分配20本书。无法将JDialog转换为框架

我有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不能转换为图文框。

有没有简单的方法来做到这一点? 我在NetBeans设计功能中创建这些窗口。

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

谢谢。

+0

创建只有一个JDialog,从anoter动作重用(所有清除必须在调用setVisible(false)之前完成) – mKorbel

回答

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中打开。

如果你想打开一个对话框顶部对话框顶部的对话框......它可能会需要经过一些editation(JFrame的),其中

SwingUtilities.getWindowAncestor(this); 

可能必须像

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

因此,这将打开一个对话框,这是从一个从一个打开的对话框打开从JFrame打开的对话框。但我不确定它是否会起作用。没有尝试过。

相关问题