2013-03-27 32 views
1

首先,我想強調的是,我在談論J2ME(javax.microedition.lcdui.TextField)中的TextField而不是AWT中的TextField(java.awt.TextField)。在J2ME中更改TextField的寬度和字體?

你能告訴我這是否可以在J2ME中使用嗎?我想更改TextField的字體(字體系列,字體大小,字體顏色),我也想更改它在窗體上呈現的寬度。我嘗試使用setMaxSize(),但這也限制了TextField可以包含的字符數。我想要的是在不限制字符數的情況下更改TextField的寬度。

如果這些不能完成,我不認爲程序員可以使他們的J2ME應用程序看起來最好。或者至少他們會有另一個支持這些功能的控件。

+0

無法更改高級UI元素的外觀可確保所有LCDUI應用在同一設備上看起來相同。由製造商決定高級元素應該是什麼樣子。所以如果你不喜歡它的外觀,那就責怪製造商。 但是之前許多人對此並不滿意,所以大量的LCDUI可供選擇,LWUIT已經成爲最受歡迎的之一。你想要LWUIT。 – 2013-03-28 06:49:32

+0

也許,我沒有其他選擇,我想到了一些控制這個,但不是LCDUI中的TextField。謝謝。 – 2013-03-28 10:45:44

回答

3

您不能在Java ME中更改TextField的寬度和字體,API Javadocs此類與字體沒有任何關係(實際上,這些文檔中未提及字體字體)。

如果這些不能完成,我不認爲程序員可以使他們的J2ME應用程序看起來最好。

你是正確的,但這個限制的原因是,TextField和其他高級UI API旨在允許程序員編寫簡單的高度可移植的代碼(留下的細節上大/小屏幕上使用的系統是什麼字體)。

這在lcdui package API docs很好解釋,在MIDP UI API的部分結構:

高層API是專爲商業應用,其客戶端部分的MID上運行。對於這些應用程序,跨設備的可移植性很重要。爲了實現這種可移植性,高級API採用高級抽象,並且對外觀和感覺提供很少的控制。這種抽象進一步表現在以下幾個方面:

  • MID的顯示的實際繪圖是由實現來執行的。應用程序不定義組件的可視外觀(例如,形狀,顏色,字體等)。
  • 導航,滾動和其他原始交互由實現封裝,應用程序不知道這些交互。
  • 應用程序無法訪問具體的個人密鑰等具體輸入設備。

換句話說,使用高層次的API時,假定底層的實現會做必要的適應設備的硬件和原生UI風格。

關於字體,的高級UI API類Choice實現(如ListChoiceGroup)具有一些功能,但這些功能非常有限,如果您有興趣,請參閱API文檔以獲取詳細信息。


爲你尋找功能更全面的訪問,研究API的「低水平」的一部分,在包的文檔描述上面提到:

這個API是專爲需要的應用程序精確放置和控制圖形元素,以及訪問低級輸入事件。某些應用程序還需要訪問特殊的,特定於設備的功能...編程爲低級API的應用程序不能保證可移植,因爲低級API提供了訪問特定設備特定細節的方法...

尤其Graphics類有方法來獲取和設置字體 - 分別稱爲,getFontsetFont

請注意,圖形提供的功能可以使用CustomItem API「嵌入」窗體內。

+0

謝謝,你的解釋很清楚。我還有一個問題,如果我使用低級API,我怎麼知道它支持哪些設備? (我猜LWUIT是低級的,不是嗎?)。 – 2013-03-28 10:43:49

+0

@KingKing低級別的API在高級別的設備上受到支持 - 您只需編寫代碼以確保您繪製的內容與設備屏幕大小相匹配(高級API可爲您提供這一功能,但代價是靈活性不夠)。正如fo [tag:lwuit],它是第三方庫,UI工具包。爲了您的目的,它看起來值得考慮。如果您對詳細信息感興趣,請查看[lwuit tag wiki](http://stackoverflow.com/tags/lwuit/info)和此標籤中的問題 – gnat 2013-03-28 11:04:02

+0

當您說「低級API在相同設備上受支持爲高第一級「是否意味着無論使用什麼API(低級別或高級別),我的J2ME應用程序都將在MIDP支持的設備上運行正常,但如果設備的功能有限,使用低級API將使我的J2ME應用程序看起來不同於我在設計時看到了什麼?從你的回答中引用的這條線是什麼意思?「因爲低級API提供了訪問特定設備的特定細節的方法......」。據我瞭解,這表明少MIDP設備支持低層API比高層API。謝謝! – 2013-03-28 12:26:24

4

如果您想在J2ME中自定義組件TextField,我強烈建議您使用LWUIT(輕量級用戶界面工具包)。您可以通過LWUIT爲Java手機創建良好的用戶界面,並根據需要對其進行自定義。正如名字所說,這真的很輕巧。

自定義文本字段中LWUIT簡單的代碼如下:

TextField myTextField = new TextField(); 
myTextField.getStyle().setPadding(9,9,9,9); // Top , Left , Bottom , Right padding 
myTextField.getStyle().setMargin(7,7,7,7); // Top , Left , Bottom , Right padding 
myTextField.getStyle().setFont(*use the font whatever you wish*); 

注:請參閱有關.res文件和資源編輯器,用於在改變應用程序的外觀和感覺每一個幫助。您可以將字體導入.RES文件並在代碼中使用它。

+0

我認爲這是我想要的。謝謝。 – 2013-03-28 10:44:25

+0

@KingKing如果它對您有幫助,請單擊「打勾」符號並將其作爲答案接受爲答案。 – 2013-03-28 10:59:25

+0

對不起,但我只能接受1個答案:(我希望你同意我的決定,讓我們看看gnat的努力,他試圖向我解釋許多重要的事情,而不僅僅是一種解決方法,我真的很感激。也贊成你們兩位,謝謝... – 2013-03-30 08:58:36