JDialog
タイトルバーから閉じるボタン( "X")を削除する方法はありますか?
dialog.setUndecorated(true)
を呼び出すことでダイアログのタイトル全体を削除できますが、これはダイアログをこれ以上移動できないことを意味します。
dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
を実行して、ボタンが何もしないようにすることもできます。
それ以外に、X
を完全に削除する方法があるとは思わない。
dialog.setUndecorated(true)
を呼び出してタイトルバーを削除できると思います。ただし、「X」だけではわかりません。
ただし、ユーザーがダイアログを簡単に閉じることができるようにしたいので、「X」を削除するのは良い考えではありません。
最善の策は、dialog.setDefaultCloseOperation
またはWindowListener
を使用して、ユーザーが「X」をクリックしたときに何が起こるかを制御することです。
Java 1.7(別名DolphinまたはJava 7)の時点で、ウィンドウの閉じるボタンを無効にしたり削除したりすることはできません。 frame.setResizable(false)
のボタンを使用し、Java.awt.Dialog
またはjavax.swing.JDialog
などのボタンを拡張するクラスを使用して、最小化ボタンと最大化ボタンを削除できます。タイトルバー、境界線、 frame.setUndecorated(true)
のボタン。frame.setDefaultLookAndFeelDecorated(true)
でタイトルバーのすべてのボタンの表示を完全に制御できます(ただし、クロスプラットフォームの互換性とOSの統合は失われます)(JFrameまたはJDialog)。これは、現在のJDKで可能なすべてのコントロールです。
私の経験は次のとおりです。
setUndecorated(true)
を使用してみました:Dialog
全体を非表示にしました。setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
を試しました:これは動作をまったく変更しませんでした。私のダイアログボックスはまだ閉じています。デフォルトのクローズ操作を_DO_NOTHING_ON_CLOSE
_に設定すると、クローズ操作が登録済みWindowListener
のwindowClosing()
メソッドに委任されます。私のために働いたのは:
_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");
}
}
});
_
推測では、PL&Fで装飾されるように設定し、名前でコンポーネントを削除します。