我想知道如何更改上下文菜單中出現的文本的字體,這源於右鍵單擊JFrames標題欄左側的圖標使用默認外觀和裝飾(JFrame.setDefaultLookAndFeelDecorated(true);
)。Swing·更改JFrame的標題欄圖標的上下文菜單的字體
我四處搜索,什麼也沒找到。我認爲我可以使用我所瞭解的關於更改標題欄標題字體的知識,但這並不奏效。
在此先感謝。
我想知道如何更改上下文菜單中出現的文本的字體,這源於右鍵單擊JFrames標題欄左側的圖標使用默認外觀和裝飾(JFrame.setDefaultLookAndFeelDecorated(true);
)。Swing·更改JFrame的標題欄圖標的上下文菜單的字體
我四處搜索,什麼也沒找到。我認爲我可以使用我所瞭解的關於更改標題欄標題字體的知識,但這並不奏效。
在此先感謝。
經過一些更多的混亂,我終於做到了!我非常喜歡Java,這讓我有點難過,要做這樣的事情有多難。無論如何,我發現了一種方法here以遞歸方式從JFileChooser中更改所有組件的字體,但它不適用於從標題欄圖標彈出的JPopupMenu(現在我知道該名稱)。所以我搞砸圍繞與方法,使用了一些鑄造,並能夠改變JMenuItems'字體:
public static void setSubComponentFont (Component comp[], Font font) {
for (int x = 0; x < comp.length; x++) {
if (comp[x] instanceof Container) {
setSubComponentFont(((Container)comp[x]).getComponents(), font);
}
try {
//comp[x].setFont(font);
if (comp[x].toString().contains("JMenu")) {
for (Component y : ((JMenu)comp[x]).getPopupMenu().getComponents()) {
if (y.toString().contains("JMenu")) {
y.setFont(font);
}
}
}
} catch (Exception ex) {}
}
}
我的靈感來自於this線程使用.toString().contains()
。
我還與嵌套循環做了這一點,所以路徑菜單項可以看出:
for (Component a : frame.getLayeredPane().getComponents()) {
System.out.println(a.toString());
if (a.toString().contains("MetalTitlePane")) {
for (Component b : ((Container)a).getComponents()) {
System.out.println(b.toString());
if (b.toString().contains("SystemMenuBar")) {
for (Component c : ((Container)b).getComponents()) {
System.out.println(c.toString());
for (Component d : ((JMenu)c).getPopupMenu().getComponents()) {
System.out.println(d.toString());
if (d.toString().contains("JMenu")) {
d.setFont(font);
}
}
}
}
}
}
}
每System.out.println()
給出了一個暗示,應該在以下if
的條件是什麼,因此他們應該被使用一次一個。但這對JFileChooser的標題字體不起作用。當我有時間的時候,我會仔細研究它或者提出另一個問題。
所以,如果有人需要它像我一樣,在這裏。作爲提示,System.out.println()
和.toString()
是你的朋友!這就是我學習每個對象所包含的內容的方式,以及我需要採取什麼樣的途徑才能找到感興趣的對象。
無論如何,謝謝!
*「提前致謝。」*錯誤..不客氣。但是你有問題嗎? –
@安德魯·湯普森我認爲長篇第一段應該是個問題。 – async
框架邊框和圖標通常由操作系統提供,它佔用了我們控制的一面。你使用什麼外觀和感覺?靈氣或金屬? – MadProgrammer