2012-08-28 72 views
1

我正在嘗試使用LWUIT編寫一個應用程序,我希望在單擊按鈕時顯示圖像。 我有以下代碼。但是如果按鈕被點擊兩次,我會得到一個異常。 請幫助我顯示圖像,無任何例外情況。如何使用LWUIT單擊按鈕來顯示圖像

 final Form f = new Form("Static TAF"); 

     Button TrackMe = new Button("TrackMe"); 

     Image TrackMeicon = null; 
     TrackMeicon = Image.createImage("/hello/follow.jpeg"); 
     final Label TrackMeLabel = new Label(TrackMeicon);  

     TrackMe.addActionListener(new ActionListener() 
     { 

     public void actionPerformed(ActionEvent ae) 
     { 
       System.out.println("Removing the previous Images"); 
       f.addComponent(TrackMeLabel); 
     } 
     }); 

請幫助

回答

1

當你點擊的第一次按鈕,圖像被添加到窗體。當您第二次點擊時,該圖像已經存在於表單中。所以,它會拋出"Component already exists"異常。

你的動作偵聽器應該是

TrackMe.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent ae) { 
       System.out.println("Removing the previous Images"); 
       f.removeComponent(TrackMeLabel); 
       f.addComponent(TrackMeLabel); 
     } 
}); 
+0

對不起,這段代碼不起作用f.removeComponent(TrackMeLabel);這行永久刪除組件,並且永遠不會將它添加到下一行代碼中。除了用標籤顯示圖像...是否還有其他邏輯? – swatijoshi

+0

在您的程序中試用此代碼。它會工作。 –

+0

根據我的經驗,最好只向LWUIT Form添加一個組件,或者使用removeAll()然後重新添加它們。 – Ajibola

0
TrackMe.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent ae) { 
      System.out.println("Removing the previous Images"); 
      final Label TrackMeLabel = new Label(TrackMeicon); 
      f.removeAll(); 
      f.addComponent(TrackMeLabel); 
    } 

});

+0

僅當TrackMeLabel是表單中的唯一組件時,f.removeAll()纔會有效。如果已經有一些形式爲f的組件意味着也將被刪除。 –

0

如果你想喲只添加一個圖像,你可以使用這個:

....

TrackMe.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent ae) { 
      if(!f.containes(TrackMeLabel)) 
      f.addComponent(TrackMeLabel); 
    } 

,如果你想要一些imges你需要類似的東西:

...

TrackMe.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent ae) { 
       Image TrackMeicon = null; 
       TrackMeicon = Image.createImage("/hello/follow.jpeg"); 
       Label TrackMeLabel = new Label(TrackMeicon); 
       f.addComponent(TrackMeLabel); 
     } 
相關問題