2012-01-08 27 views
2

我在Box(具有BoxLayout)中水平放置[OK]和[Cancel]按鈕。稍後,我將此框添加到JDialog的內容窗格中的BorderLayout.PAGE_END。這在Windows中很適用,所以[確定]在[取消]左側 - 就像我添加的一樣。水平放置BoxLayout中的按鈕,具體取決於操作系統

當我在Linux中測試時,按鈕的位置與Windows相同 - [取消]左側的[確定]。這又一次來自代碼。

但是,在Linux(Ubuntu)中,按鈕的默認位置是[OK]左側的[取消]。這與我的代碼和按鈕的位置形成鮮明對比。

所以,我的問題是:Java是否有某種常量 - 比如OS_PLACEMENT,可以在某個地方設置,這會讓[Cancel]按鈕出現在Linux的[OK]左側?我問這是因爲我知道Java支持RTL和LTR佈局的常量。因此,我認爲,可能存在一些與這種放置有關的常量。

我想提一提,我就設定爲L &˚F我的Swing應用程序到系統L & F.以下是我在main()

UIManager.setLookAndFeel第一行(UIManager.getSystemLookAndFeelClassName());

回答

2

當你說Linux(Ubuntu)時,你的意思是Gnome,對吧? Gnome(Gtk)的默認按鈕位置(OS)將取消按鈕置於左側。

你可以嘗試改變揮杆的外觀和風格: How to Set the Look and Feel

+0

是的,我的意思是Ubuntu Linux操作系統和GNOME。你是對的。 我已經在我的Swing應用程序中更改了L&F。以下是我在main()中的第一行() UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName()); 行爲仍然存在。你能幫我嗎? – txx28 2012-01-09 02:55:42

1

不,Java將不會自動爲你做這個。

考慮使用免費的「JGoodies Form」庫。它有一個名爲「ButtonBarBuilder」的類,它將根據用戶的操作系統以正確的順序佈置按鈕。

否則,您必須手動檢查System.getProperty(「os.name」)的值並根據該值佈置按鈕。

+0

謝謝。我將使用System.getProperty(「os.name」),並根據操作系統設計按鈕,因爲我的JDialog的設計已完成。不過,我會看看JGoodies。 – txx28 2012-01-09 13:33:20

0

一些LayoutManagers會自動爲您執行此操作,例如DesignGridLayout和MigLayout檢測應用程序正在運行的操作系統,並根據它爲OK和Cancel(以及其他特定按鈕)選擇正確的位置。

例如,DesignGridLayout你會做:

DesignGridLayout layout = new DesignGridLayout(myDialog); 
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL); 
相關問題