自分に割り当てられたプロジェクトを完了しました。大学ですが、今私は自分のプロジェクトのためにMDIを作成しようとしています。私は10個のjFrameと1個のメインフォームであるjFrameを使いました。その後、メニューバー、jFrameを呼び出すための10個のjButton、およびjFrameを呼び出すための1個のjDesktopPaneを追加します。以下のコードは、10個すべてのjButtonでjFrame placeをjDesktopPaneに呼び出すために使用します。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try
{
asd t = new asd();
dskp.add(t);
t.setVisible(true);
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
}
しかし、私と一緒に働いていないと以下のエラーメッセージを出して:
java.lang.illegalargumentexception: adding a window to a container
これを行う方法とこの問題を解決する方法すべてのjInternal Frameを使用することはできないと思います。コード付きのフルGUIやjInternal Frameでのすべての作業をやり直すことはできません。私の最終プロジェクトを提出する時間の
回答:
回答№1は4WindowsをJDesktopPaneに配置する場合は、JInternalFramesを使用する必要があります。これが魅力的かどうかに関係なく、これが最善の解決策です。
このレッスンではあなたが努力するべきであるということですSwingコンポーネント、特にJFrameなどのトップレベルコンポーネントを拡張するクラスの作成を避け、代わりにJPanel、JFrame、JInternalFrame、JDialogs、JOptionPanes、その他のJPanelなどに配置できる柔軟性のあるコンポーネントを作成するクラスを作成します。 ..
kludgeはcontentPaneをから取得することです。あなたのJFrameをJInternalFrameに入れ、それをJDesktopPaneに入れるか、JInternalPanesのcontentPaneをJFrameからのcontentPaneに設定します。
asd t = new asd();
JInternalFrame internalFrame = new JInternalFrame();
internalFrame.setContentPane(t.getContentPane());
internalFrame.pack();
// set the internalFrame"s location
// ...
internalFrame.setVisible(true);
dskp.add(internalFrame);
しかし、これもまたごみであり、潜在的な罠を抱えていることに注意してください。