Java手機軟體圖形介面API之低級GUI組件

來源:互聯網
上載者:User

在進階API編程時,你不能控制顯示在螢幕上的內容,甚至用編程方式幾乎無法控制這些組件。由系統實現體負責選取裝置的最佳顯示方式。然而,一些如遊戲類的應用程式可能需要對螢幕繪製有更多的控制。MIDP javax.microedition.lcdui包也提供了處理這類編程的低級API。

為了在螢幕直接繪製直線,文本和形狀,你必須使用Canvas類。該類提供了一個MIDlet可以在其上繪製的空白螢幕。例如,在螢幕上繪製字串"HelloWorld"。實現這個功能有一個簡單的辦法:子類化Canvas類(它是繼承自Displayable的一個抽象類別)並重載paint()方法。詳見程式碼片段1。

paint()方法的實現使用了javax.microedition.lcdui.Graphics類的繪圖功能。在方法paint()中,繪圖顏色置為紅色,然後用紅色畫一個長方形。其中,方法getWidth( )和getHeight( )分別返回Canvas對象的寬度和高度。接下來setColor( )方法把繪圖顏色設定為白色;之後,字串"Hello World!"繪製在螢幕的左上方。

樣本1:子類化Canvas

import javax.microedition.lcdui.*;
public class MyCanvas extends Canvas {
 public void paint(Graphics g) {
  g.setColor(255, 0, 0);
  g.fillRect(0, 0, getWidth(), getHeight( ));
  g.setColor(255, 255, 255);
  g.drawString("Hello World!", 0, 0, g.TOP | g.LEFT);
 }
}

現在,為了觀看MyCanvas,必須要把執行個體化後進行顯示。既然Canvas是Displayable的一個子類,可以用與其它screen 類使用的同樣的setCurrent( )方法來顯示它。詳見程式碼片段2。

樣本2:執行個體化和顯示MyCanvas

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MyMidlet extends MIDlet {
 public MyMidlet( ) {}
 public void startApp( ) {
  Canvas canvas = new MyCanvas( );
  Display display = Display.getDisplay(this);
  display.setCurrent(canvas);
 }
 public void pauseApp( ) {}
 public void destroyApp(boolean unconditional) {}
}

如果你在無線開發包提供的模擬器中運行,可能得到如圖1所示的效果。注意在程式碼片段5-1中,顏色被設定為紅色與白色,但是既然使用了灰階級螢幕,這裡的彩色就被映射到黑色和白色的不同的灰階級上。試著調整顯示來觀察哪一種裝置的色彩顯示更好些。

圖1.在Canvas上繪製"Hello World!"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.