2012-07-29 91 views
4

簡單地說,JMenu.setHorizo​​ntalAligment(SwingConstants.CENTER)什麼也不做,文本仍然左對齊(使用Windows LAF)。在JMenu組件中設置標題文本的對齊方式

是否有任何方法對齊菜單標題中的文本(而不是JMenuItem - JMenus自己)?

我正在使用JDK1.7。

什麼我與它的JMenus的JMenuBar看起來像目前:

Current JMenuBar with JMenus (and a single JMenuItem

+1

請嘗試setHorizo​​ntalTextPosition? – MadProgrammer 2012-07-29 20:36:31

+0

@MadProgrammer你打我吧 – ghostbust555 2012-07-29 20:40:39

+0

爲什麼你想讓你的用戶感到驚訝? – kleopatra 2012-07-30 07:23:36

回答

1

我已經使用CSS來定位和設置菜單中的文字。 style="text-align:center;"CSS,用於將文本放置在底部示例圖像的中心位置。在我的情況下,我在<p>段落標籤中封裝了JMenu標題;

clientFilter = new JMenu("<html><p style='text-align:center;'>Client</p></html>"); 
siteFilter = new JMenu("<html><p style='text-align:center;'>Site</p></html>"); 
employeeFilter = new JMenu("<html><p style='text-align:center;'>Employee</p></html>"); 
jobtypeFilter = new JMenu("<html><p style='text-align:center;'>Job Type</p></html>"); 

看起來像這樣;

enter image description here

值得一提的是,圖像上面我也用的樣式屬性width:90px;color:blue;,但我刪除了這兩個風格從上面簡單的代碼示例。希望這可以幫助。

這個答案或多或少是我原來的答案here的副本。

+0

謝謝,沒有考慮到! – Gorbles 2014-03-06 10:10:31

1

嘗試setHorizo​​ntalTextPosition(SwingConstants.CENTER);其次是invalidate();

+0

+1使它成爲答案;) – MadProgrammer 2012-07-29 21:06:59

+0

對不起,這對我不起作用。 試圖調用它在任何和所有的JMenus你可以看到上面(mainMenu.setHorizo​​ntalTextPosition(等),mainMenu.invalidate()),沒有骰子。 – Gorbles 2012-08-10 01:11:30

1

假如你試圖對上述JMenu設置Margin,如果我這樣做:

JMenu optionsMenu = new JMenu("Option"); 
optionsMenu.setMargin(new Insets(5, 50, 5, 5)); 

這是輸出我得到:

MARGIN OUTPUT

MESSENGER IMAGE

+0

這對我的佈局也沒有任何作用。我認爲Windows LAF的默認行爲是阻止它做任何事情。 我不認爲我可以做很多研究Windows LAF是如何構建和/或定義我自己的(並非我想在一百萬年內這樣做,*不寒而慄*)。 – Gorbles 2012-08-10 01:13:12

+0

@Gorb:好的,如果我把'LookAndFeel'改爲windows,我仍然可以得到和前面一樣的結果。請看看最新的編輯,並比較圖像,第一個是NIMBUS和第二個是WINDOWS。 – 2012-08-10 10:59:26

+0

正如我所說,它不會改變我的GUI上的任何東西,不幸的是:( 您正在使用Java SE 7? – Gorbles 2012-08-13 10:37:40

相關問題