我正在創建一個顯示文件複製進度的對話框。我想要做的是完全刪除對話框的圖標圖像。如何從JDialog中完全刪除圖標?
我創造了這樣一種對話的提供FrameView
應用程序的實例作爲論據JDialog
的構造像在此之前:
public class MyAppView extends FrameView {
// ...
@Action
public void showOptionsDialog() {
// Creating modal options' dialog
JDialog optionsDialog = new JDialog(this, true);
// ...
}
}
所以,我所看到的,我需要一個父組件,使我沒有圖標的對話框。在我目前的情況下(當我沒有父框架視圖),我嘗試了下面的hack方法設置透明圖標,但它不工作,因爲我期望 - 我仍然看到對話框的標題欄中的圖標的空白區域和(什麼是最糟糕的)當我點擊這個區域時,我仍然有一個彈出窗口。
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:
JOptionPane.showMessage(null, "My message");
望着JOptionPane
的源代碼可以發現,靜態Frame JOptionPane.getRootFrame()
當父組件設置爲null
被用來獲取調用父:
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圖標。
而我的問題是:我做錯了什麼? 如何完全刪除JDialog
的圖標,因爲它是由JOptionPane
完成的?
P.S.我使用JDK6。
是您的對話框的標題對齊標題欄的左邊?我看到左側有一個透明的16x16圖標,所以標題似乎會按圖標的寬度向右移動。 `setFocusableWindowState(false)`畫一個標題欄,就像它不活動一樣,這也是不想要的行爲。請看看`JOptionPane`的對話框 - 它們看起來像我想要的。 – Ezze 2011-12-14 19:29:13
然後我的回答沒有幫助。除了setDecorated(false)和自己畫標題欄之外,我認爲答案在另一行。 – 2011-12-15 07:47:15