2013-08-20 41 views
0

我正在構建諾基亞S40應用程序。我已將此應用設置爲全屏模式,並且我注意到當我設置全屏模式時,我失去了本機後退按鈕。諾基亞S40 LWUIT後退按鈕

我需要建立一個後退按鈕,像本機後退按鈕(始終在屏幕上,在屏幕的右下角)。我嘗試過使用borderlayout並將它放在南面,但中心容器中的文本不會出現在此...上並具有透明背景。

如果有人有一些示例代碼,它會很好。

回答

1

該代碼只是在屏幕右下角放置一個按鈕。它工作得很好。

public void startApp() { 
    Display.init(this); 
    Form f = new Form(); 
    //Create a ComponentGroup for all components except backbutton 
    final ComponentGroup cg = new ComponentGroup(); 
    final Button backButton = new Button("BackButton"); 
    // add this part to your code 
    f.addOrientationListener(new ActionListener() { 

     public void actionPerformed(ActionEvent evt) { 
      Dimension d = new Dimension(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayHeight()); 
      cg.setPreferredSize(d); 
      backButton.setX(Display.getInstance().getDisplayWidth() - backButton.getPreferredW()); 
     } 
    }); 
    //set CoordinateLayout to f 
    f.setLayout(new CoordinateLayout(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayHeight())); 


    //Dimension d = new Dimension(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayHeight()); 
    cg.setPreferredH(Display.getInstance().getDisplayHeight()); 
    cg.setPreferredW(Display.getInstance().getDisplayWidth()); 
    cg.setLayout(new BorderLayout()); 
    cg.addComponent(BorderLayout.NORTH, new Button("NORTH")); 
    cg.addComponent(BorderLayout.EAST, new Button("ESET")); 
    cg.addComponent(BorderLayout.WEST, new Button("WEST")); 
    cg.addComponent(BorderLayout.CENTER, new TextArea("sdsdsd")); 

    cg.setX(0); 
    cg.setY(0); 
    backButton.getStyle().setBgColor(0x2233ff); 

    backButton.setX(Display.getInstance().getDisplayWidth() - backButton.getPreferredW()); 
    backButton.setY(Display.getInstance().getDisplayHeight() - backButton.getPreferredH() - f.getTitleArea().getLayoutHeight()); 
    f.addComponent(cg); 
    f.addComponent(backButton); 
    f.show(); 
} 

你可以這樣做到任何形式。 如果你想回來按鈕顯示在所有的形式,你可以寫一些OOP編程來做到這一點。 它運作良好。

+0

適用於單一方向的作品,如果您更改方向,則問題更爲複雜,因爲必須通知佈局更改人機界面的尺寸 – Mun0n

+1

將OrientationListener設置爲您的表單,如下所示:f.addOrientationListener(new ActionListener( ){ 公共無效的actionPerformed(ActionEvent的EVT){ 尺寸d =新尺寸(Display.getInstance()getDisplayWidth(),Display.getInstance()getDisplayHeight()); cg.setPreferredSize(d); 返回按鈕.setX(Display.getInstance()。getDisplayWidth() - backButton.getPreferredW()); } }); –

+1

我改變了我的答案。 –