JDialog
タイトルバーから閉じるボタン(「X」)を削除する方法はありますか?Swing JDialogの「X」ボタンを削除
答えて
PL & Fを装飾し、名前でコンポーネントを削除するように設定します。
PL&Fとは何ですか?ありがとう。 – kenshinji
PL&Fはプラガブルルックアンドフィールです。スイングは醜い方法で任意のルックアンドフィールをとることができます。 –
なぜ醜いのですか?それを行う正しい方法は何でしょうか? –
dialog.setUndecorated(true)を呼び出してダイアログタイトル全体を削除することはできますが、これはダイアログをもう移動できないことを意味します。
ボタンが何もしないようにdialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)を実行することもできます。
それ以外にも、Xを完全に削除する方法はないと思います。
私はdialog.setUndecorated(true)
に電話してタイトルバーを削除できると思います。しかし、ちょうど 'X'についてはわからない。
ユーザーがダイアログを簡単に閉じることができるようにするには、「X」を削除することは効果的ではありません。
dialog.setDefaultCloseOperation
またはWindowListener
を使用してユーザーが「X」をクリックしたときの状況を制御することをお勧めします。
Java 1.7(AKA DolphinまたはJava 7)では、ウィンドウの閉じるボタンを無効または削除できません。最大化ボタンはframe.setResizable(false)
で削除/無効にすることができ、またはそれを拡張するクラス(javax.swing.JDialog
など)を使用して、最小化および最大化ボタンを削除できます。 frame.setUndecorated(true)
でタイトルバー、枠線、ボタンを削除することができます。タイトルバーのすべてのボタンの可視性を完全に制御できます(プラットフォーム間の互換性とOS統合を失うことがあります)。frame.setDefaultLookAndFeelDecorated(true)
(JFrameまたはJDialog)。これは現在のJDKで可能なすべてのコントロールです。
これは[バグパレード](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5085932)の「修正されません」です。 –
これは完全に正しいわけではありません。 OS XでJDialogをサブクラス化/インスタンス化すると(El Capitanでテストされても)、タイトルバーからボタンが削除されることはありません。また設定の組み合わせもありません(すべての組み合わせを試しました)。 'setUndecorated(true)'だけがそれらをすべて削除しますが、タイトルバーに沿って移動します。あなたは確かにタイトルバーのボタンの動作を変更することができますが、外観については...私が不満足な解決策や移植性のないコードに時間をかけすぎてしまったのは非常に難しい状況です。 – EntangledLoops
@EntangledLoopsあなたのコメントをお寄せいただきありがとうございます! JDialogがOS Xダイアログの最小化/「最大化」ボタンを_remove_しないのは事実ですが、最小化を無効にします。私はこれをテストするためのMacを手にしていませんが、最大化ボタンでサイズを変更するだけです。dialog.setResizable(false)を設定すると、緑のボタンも無効になります!とにかく、私が答えて言ったように、これを完全に支配していないのはうんざりですが、JSEクリエイターがすべてのプラットフォームでどのようにプログラムを作っているのか想像することができます。 ; 3 – Supuhstar
static public void removeButtons(Component c){
if (c instanceof AbstractButton){
String accn = c.getAccessibleContext().getAccessibleName();
Container p=c.getParent();
//log.debug("remove button %s from %s",accn,p.getClass().getName());
c.getParent().remove(c);
}
else if (c instanceof Container){
//log.debug("processing components of %s",c.getClass().getName());
Component[] comps = ((Container)c).getComponents();
for(int i = 0; i<comps.length; ++i)
removeButtons(comps[i]);
}
}
これは、ダイアログのクローズボタンではなく、ダイアログに追加されたボタンをすべて削除します。 –
タイトルバーボタン(OS X)には影響しません。 – EntangledLoops
これは実際にはおかしなことですが、あなたがボタンx3を使用すると、あなたのアプリは陽気に使えない状態になります – Supuhstar
は、ここに私の経験です:
setUndecorated(true)
を使用してみました
- :全体
Dialog
は目に見えないメイド。 - 試しました
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
:これは動作をまったく変更しませんでした。私のダイアログボックスは閉じたままです。デフォルトのクローズ操作をDO_NOTHING_ON_CLOSE
に設定すると、WindowListener
のメソッドにクローズ操作が委譲されます。私のために働いた何
:
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//Remove any existing WindowListeners
for (WindowListener wl : this.getWindowListeners())
this.removeWindowListener(wl);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if ("Optional condition") {
JOptionPane.showMessageDialog(null, "You cannot close this window");
}
}
});
- 1. 親ダイアログから子jdialog参照を削除する方法Java Swing
- 2. angular2gridster右端の削除ボタン(x)を追加
- 3. X個のボタンからサブビューを削除するには
- 4. OS XのNSTableViewの追加/削除ボタンの場所
- 5. JDialogからアイコンを完全に削除する方法は?
- 6. TTLauncherView削除ボタンを削除する
- 7. UITableView - 削除ボタン
- 8. Laravel - 削除ボタン
- 9. 削除]ボタン
- 10. Extjs、削除ボタン
- 11. Javascriptボタンの削除
- 12. ボタンをクリックしてJDialogを開く
- 13. Swing - AddボタンJList
- 14. JDialogキャンセルボタン
- 15. BSD/OS Xでs行目のX行を削除/削除する方法
- 16. Swing JDialogボックス自体が表示されますか?
- 17. 削除「詳細」ボタン
- 18. CMFCToolBarComboBoxEditハンドル削除ボタン
- 19. RecyclerView swipeToDismiss削除ボタン
- 20. Rのデータフレームの "x"を削除R
- 21. ユーザアカウントを削除するボタン
- 22. ABUnknownPersonViewController「テキストメッセージ」ボタンを削除
- 23. ekeventviewcontroller削除ボタンを隠す
- 24. JQueryテーブル/ボタンの削除
- 25. テーブルの削除ボタン、jQuery
- 26. Ajaxアップロードの削除ボタン
- 27. クエリのUITableViewは、「削除」ボタン
- 28. 削除ボタンの確認ダイアログ
- 29. ブートストラップスタイルのボタン削除リンク
- 30. 各フィールドの削除ボタン
私はあなたの代わりに他のボタンのいずれかを押すように言って閉じるボタンを押すと、別のダイアログを表示するいくつかのアプリケーションを見てきました。天才! –