JPanel
があります。これはマウスのクリックに応答してからJDialog
を開きます。 JDialog
のコンストラクタではJPanel
ではなくJFrame
のインスタンスが必要です。これを回避するにはどうすればよいですか?JPanelからJDialogをインスタンス化する
答えて
引数を必要としないコンストラクタがあります:
JDialog dialog = new JDialog();
何がしたいことは、ダイアログモーダルにするのであれば、多分あなたはあなたのメインのJFrameの静的参照を取得することができ、のようなもの:
は、JDialog dialog = new JDialog(MyMainJFrame.getInstance());
パラメータのないコンストラクタを使用すると、ダイアログはオーナーなしになります。私は、あなたのパネルを所有するFrameをダイアログの所有者にするのが最善の方法だと考えています。
これは、JPanelのgetParent()を使用して所有者を見つけ、このオブジェクトをJFrameの所有者として送信する必要があることを意味します。
そのため、粗コードは、私はこのコードをテストしていない
java.awt.Container c = myPanel.getParent();
while (!(c instanceof javax.swing.JFrame) && (c!=null)) {
c = c.getParent();
}
if (c!=null) {
JFrame owner=(javax.swing.JFrame) c;
JDialog myDialog=new JDialog(owner);
}
だろうが、あなたのアイデアを理解するためにenought良いです。
JOptionPaneを使用することに決めた場合、mouseAdapter内部クラスを使用してMouseListenerをJPanelに追加して、mouseClickedイベントを処理できます。内部クラスからパネルにアクセスするには、最終パネルを宣言する必要があります。
final JPanel testPanel = new JPanel();
testPanel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
JOptionPane.showMessageDialog(testPanel,"Title","InformationMessage",JOptionPane.INFORMATION_MESSAGE);
}});//end of mouseClicked method
あなたは本当にあなたがしたい場合は特に、それはモーダル(親ウィンドウを渡すことで、ダイアログがあなたのウィンドウに添付されますと、親をもたらすこともたらす、親ダイアログまたはフレームに使って、JDialogを添付するようにしてください子ダイアログも同様)。そうでなければ、ユーザ体験は本当に間違って行くことができます。
JPanel panel = new JPanel();
Window parentWindow = SwingUtilities.windowForComponent(panel);
// or pass 'this' if you are inside the panel
Frame parentFrame = null;
if (parentWindow instanceof Frame) {
parentFrame = (Frame)parentWindow;
}
JDialog dialog = new JDialog(parentFrame);
...
:失われたダイアログを、等...
があなたのJPanelの親ウィンドウを見つけるには、モーダルダイアログを表示せずにウィンドウをブロックし、あなたが必要なのは、このコードですフレームまたはダイアログにいるかどうかわからない場合は、両方のクラスの "instanceof"テストを行います。
- 1. JTabbedPaneのJPanel上のJDialog
- 2. JDialogまたはJPanelに最小化/最大化ボタンを追加するには
- 3. JPanelとGroupLayoutマネージャでJDialogをサイズ変更
- 4. JDialogのJPanelに別のJPanelと共にMapViewを追加するには
- 5. java - JDialogでJPanelで実行されたアクションを検出
- 6. JPanelのインスタンスを変更する
- 7. JSONオブジェクトからクラスをインスタンス化する
- 8. クラス・タイプからクラスをインスタンス化する
- 9. matplotilib - matplotlib.axis.pyから軸をインスタンス化する
- 10. JFrameを開く難読化JDialog
- 11. JPanelを別のJPanelから再描画する
- 12. JFrameにあるJPanelからJPanelを呼び出す - ネットバンで
- 13. JPanelからJInternalFrameを隠す
- 14. GUIでJPanelを再有効化する
- 15. JFrameからJPanelを削除する
- 16. XIBからUITabelViewCellをさらにインスタンス化する
- 17. AS3/OpenLaszlo内からFlexアプリケーションをインスタンス化
- 18. セッションクッキーからASP.NETセッションをインスタンス化
- 19. CからBSD jailをインスタンス化
- 20. 閉じるJDialogオブジェクトからJframeオブジェクトを呼び出す
- 21. JDialogからアイコンを完全に削除する方法は?
- 22. C#で配列をインスタンス化する - VBから変換する
- 23. JPanelインスタンスをJScrollPaneに動的に追加する
- 24. テンプレート内の指定されたインスタンスからモデルフォームをインスタンス化する
- 25. Python:クラスのリストからクラスの新しいインスタンスをインスタンス化する
- 26. 親オブジェクトからのJavaインスタンス化子オブジェクト
- 27. JLabelからJPanelへドラッグアンドドロップ
- 28. JComboBoxでJDialogのJPanelを更新する際に問題が発生しました。
- 29. JFrameのメソッドにJDialogからアクセスするには?
- 30. JDialogキャンセルボタン
JOptionPaneの使用を検討しましたか? – ChadNC