2016-06-13 11 views
1

生徒を追加して各自に20冊の本を割り当てることができます。JDialogをフレームに変換することはできません

私は3つの窓があります。私は "私はすべての生徒のリストを見ることができたJFrameを持って、私は上をクリックし メインウィンドウ(JFrameの)図書の 一覧(JDialogの) は、書籍(JDialogの)

を追加します。私はデータベース(.txtファイル)内のすべての書籍のリストを見ることができます。だから私はJFrameでそのボタンをクリックすると、私はJDialogを開いて、うまく動作します。しかし今はリストにいくつかの本を追加したいので、 "List of Books" JDialogの "Add a book"ボタンをクリックします。だから私は別のJDialogを前のJDialogの一番上に開くだけです。

私はウィンドウ "ブックのリスト"(私はメインウィンドウから開いた) "ブックを追加"ウィンドウを開きたいと思います。

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

それは示しています:

互換性のないタイプ:私はJFrameのからのJDialogを開くと、私は同じ方法でそれを行う際に

は今、それがエラーを示しaddBookJDialogがフレームに変換することはできません。

これを行う簡単な方法はありますか? NetBeansのデザイン機能でこれらのウィンドウを作成しています。

別のJDialogでいくつかのJDialogを開くことに関するいくつかのトピックが見つかりましたが、私はそれを行う方法を理解しませんでした:/別のJDialogを開く3行のコードがあります。それを開くだけの方法はありますか?

ありがとうございました。

+0

ただ1つのJDialogを作成するには、anoterアクションから再利用してください(setVisible(false)が呼び出される前にすべてクリアする必要があります) – mKorbel

答えて

0

私は答えを見つけました...またはもっと可能性があります、最終的に誰もが投稿しているコードを理解しました: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); 

インポートは、インポートする必要があり、そこに行きます。

おそらくこの2つが必要になります。 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のから開かれた場合にのみ。

ダイアログの上部にあるダイアログの上にダイアログを開く場合は...それはおそらく

SwingUtilities.getWindowAncestor(this); 

はおそらくだから、これはダイアログを開きます

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

のようなものにする必要があります場合は、それがから開かれたダイアログから開かれた(JFrameの)後に、いくつかのeditationが必要になりますJFrameから開いたダイアログ。しかし、それがうまくいくかどうかは分かりません。 didntはそれを試みた。

関連する問題