2010-03-11 51 views
1

我編寫了一個在Windows,Mac OS X,Ubuntu和Open Suse上運行的Java桌面應用程序。我在Linux中有不同的定位問題。Java在不同的操作系統中以不同的方式定位元素

我使用設計人員開發了NetBeans應用程序,它看起來和我在Windows和Mac OS X中預期的一樣,但在Linux發行版中,某些標籤控件已轉移到不同的位置。

這是否有一個共同的原因?

+0

您是否在Linux上使用Sun JRE? – 2010-03-11 11:18:40

+0

如果我做了一個「java -version」。它報告爲Ubuntu中的JRE 1.6.0_15-b03和OpenSuse中的OpenJDK RE(IcedTea6 1.6.2) – Dan 2010-03-11 11:37:33

+0

您可以發佈一些代碼供我們審閱嗎?當然不是全部。 – Ascalonian 2010-03-11 11:45:05

回答

0

我改變了佈局樣式從「免費設計」到「絕對」

+0

從長遠來看,絕對佈局可能會導致與免費設計一樣多的問題。我強烈建議您轉儲它們並學習使用標準的J2SE佈局,根據需要將它們嵌套在一起。有關詳細信息,請參閱Java教程中的[使用佈局管理器](http://download.oracle.com/javase/tutorial/uiswing/layout/using.html)頁面。可以在Netbeans表單設計器中使用J2SE佈局。 – 2011-03-25 13:45:48

2

也許Linux使用不同的字體。一個字母寬度不同的字母。

你可以嘗試明確設置一個特定的字體爲你的外觀&感覺。它應該是一個安裝在所有目標平臺上的字體。

+0

我不認爲它是這樣的,標籤中沒有文字,它們被用作圖像的容器。位置變化也相當大。 – Dan 2010-03-11 11:32:58

0

我假設你在Windows或Mac上開發了這個東西,這就是爲什麼它看起來「如預期」。你可以編譯/運行你的IDE在Linux上的代碼,看看它看起來如何?

我的猜測是容器的一個實現是有缺陷的。我有時看到了這種情況,當時我進行了交叉開發,並且大多進行了反覆修改以修復它(通過更改爲使用其他類)。它還有助於讓一名開發人員在Windows中工作,另一名開發人員在Linux中工作,以便我們能夠輕鬆找到並修復問題區域。

1

最有可能的是,你使用不同的外觀和感覺爲每個平臺。如果您在Windows中進行開發,則只能進行佈局以適應Window樣式。但是Linux有不同的L & F,GUI組件具有不同的邊距和字體。金屬風格(基本爲Linux)及其後代(Nimbus和GTK +)具有較大的組件默認系統字體和高度。我想,這一定是你換班的原因。

解決方法是檢查兩個平臺上的程序。我建議開發Metal風格,因爲Windows具有較小的字體,因此,適合於Metal的所有內容都適用於Windows。

相關問題