ファイルのコピーの進行状況を示すダイアログを作成しています。私がしたいのは、ダイアログのアイコンイメージを完全に削除することです。JDialogからアイコンを完全に削除する方法は?
私はこのようなJDialog
のコンストラクタの引数としてFrameView
のアプリケーションのインスタンスを提供する前にダイアログのような種類を作成した:私が見ることができるよう
public class MyAppView extends FrameView {
// ...
@Action
public void showOptionsDialog() {
// Creating modal options' dialog
JDialog optionsDialog = new JDialog(this, true);
// ...
}
}
だから、私は私を作るために親コンポーネントが必要アイコンなしのダイアログ。私の現在のケースでは(私は親フレームのビューを持っていません)、私は透明なアイコンを設定すると、次のハックメソッドを試しましたが、期待どおりに動作しません - 私はまだダイアログのタイトルバーのアイコンの空白領域が表示されます最悪の場合)この領域をクリックすると、まだポップアップウィンドウが表示されます。
JFrame dummyFrame = new JFrame();
Image icon = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB_PRE);
dummyFrame.setIconImage(icon);
JDialog myDialog = new JDialog(dummyFrame, true);
とにかく、アイコンを削除する必要があります。作業例はJOptionPaneです:
1は、親コンポーネントがnull
に設定されている場合、通話の親を取得するために使用される静的
Frame JOptionPane.getRootFrame()
を見つけることができます
JOptionPane
のソースコードを見てみると
JOptionPane.showMessage(null, "My message");
:
public static Frame getRootFrame() throws HeadlessException {
Frame sharedFrame =
(Frame)SwingUtilities.appContextGet(sharedFrameKey);
if (sharedFrame == null) {
sharedFrame = SwingUtilities.getSharedOwnerFrame();
SwingUtilities.appContextPut(sharedFrameKey, sharedFrame);
}
return sharedFrame;
}
だから私はまた、次のようにダイアログを作成しようとしました:
JDialog myDialog = new JDialog(JOptionPane.getRootFrame(), true);
まだ成功はありません。このコードスニペットを適用しようとすると標準のJavaアイコンが表示されます。
私の質問は次のとおりです。何が間違っているのですか? JOptionPane
によって行われたJDialog
のアイコンを完全に削除する方法は?
P.私はJDK6を使用します。
タイトルバーの左に揃え、あなたのダイアログのタイトルですか?左に透明な16x16アイコンがあるように見えるので、タイトルはアイコンの幅だけ右に移動しているようです。 'setFocusableWindowState(false)'は、タイトルバーを非アクティブなように描画します。 'JOptionPane'のダイアログを見てください - 私の望むように表示されます。 – Ezze
私の答えは役に立たない。 setDecorated(false)のほかに、タイトルバー自体を描画すると、答えは別の行にあると思います。 –