2011-06-25 73 views
1

如何設置JavaHelp WindowJFrame Icon(外部JFrame的左上角)。我知道如何設置類別和主題Images(toc.xml),但我沒有成功設置JFrame IconJavaHelp框架圖標

我可以通過查找框架並設置圖標以編程方式執行此操作,但我正在尋找一種使用JavaHelp配置文件以聲明方式執行此操作的方法。

+0

是你的意思http://download.oracle.com/javase/6/docs/api/javax/swing/JFrame.html#setIconImage%28java.awt.Image%29 – mKorbel

+0

我編輯了你的文章,請回復,如果不是... – mKorbel

+0

@mKorbel:嗯,我不太確定它是一個Swing的名聲,我用術語'框架'來表示一般意義上的框架,而不必明確地表達關於類型。如果你確定它是一個Swing框架,那麼它的編輯是可以的。 –

回答

1

在谷歌上最多的答案是明顯錯誤的。在helpset xml的大多數示例中,標記的順序都是錯誤的,如果將它與dtd進行比較,您會注意到元素必須位於元素的末尾,而不是像大多數示例那樣位於開頭。步驟2和步驟3是衆所周知的,步驟1在任何地方都不可見。 (1)將<presentation>元素放在正確的位置,(2)添加一個<image>元素,(3)在地圖文件中聲明它。

模因是工作在互聯網上:

  • 添加顯示名稱時 請求從 幫助集代理。
  • 從 代理獲取幀不再有效,API 已更改。
0

創建一個名爲Help的類和一個名爲setIconImage(String IconPath)的public/protected方法,該方法接受類(Help)中的字符串參數。

注意:您的幫助類是您調用(初始化)您的JavaHelp API的類。

內,您的setIconImage()方法複製和粘貼下面的代碼:

frame.setIconImage(new ImageIcon(getClass().getResource(imagePath)).getImage()); 

public void setIconImage(String imagePath) 
{ 
    frame.setIconImage(new ImageIcon(getClass().getResource(imagePath)).getImage()); 
} 

現在你可以從另一個類調用你的幫助類。

調用類:

Help help = new Help(); 
help.setIconImage("/path_to_your_icon_image/myHelpFrameIcon_45x45.png"); 

幫助類:

public class Help{ 

JHelp helpViewer = null; 
JFrame frame; 

public Help(){ 
    try 
    { 
    ClassLoader cl = Help.class.getClassLoader(); 
     URL url = HelpSet.findHelpSet(cl, "jhelpset.hs"); 
     helpViewer = new JHelp(new HelpSet(cl, url)); 
     helpViewer.setCurrentID("Simple.Introduction"); 
} catch (Exception e) 
    { 
    System.err.println("API Help Set not found"); 
    } 

    frame = new JFrame(); 
    frame.setSize(800,700); 
    frame.getContentPane().add(helpViewer); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    frame.setVisible(true); 

    } 

    public void setIconImage(String imagePath){ 
    frame.setIconImage(new ImageIcon(getClass().getResource(imagePath)).getImage()); 
    } 

    public static void main(String args[]){ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() 
     { 
      new Help(); 
     } 
    }); 
    } 

}  

完成!玩得開心:)