5

Ich habe einen Button & ein Bitmap wie geschaffen ..Umgang mit ButtonField & BitmapField Klicken Sie auf (Touch) Ereignisse in Blackberry Storm?

public class MyCanvas extends MainScreen implements FieldChangeListener 
    { 
    HorizontalFieldManager hfm; 
    private Bitmap startBitmap; 
    private BitmapField startBitmapField; 
    private ButtonField okButton; 

    MyCanvas() 
    { 
    hfm = new HorizontalFIeldManager(); 
    startBitmap = Bitmap.getBitmapResource("start.png"); 
    startBitmapField = new BitmapField(startBitmap); 
    startBitmapField.setChangeListener(this); 
    hfm.add(startBitmapField); 

    okButton = new ButtonField("Ok", ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY); 
    okButton.setChangeListener(this); 
    hfm.add(okButton); 
    } 

    public void fieldChanged(Field field, int context) 
    { 
    if(field == startBitmapField) 
    { 
     System.out.println("Touched START..."); 
    } 
    else if(field == okButton) 
    { 
     System.out.println("Touched Ok..."); 
    } 
    } 
} 

Aber die Button oder Bitmap Klick in Blackberry 4.7 Simulator ist nicht passiert.

Ich möchte es für Blackberry Storm bauen, so verwende ich Blackberry 4.7

Wie Veranstaltungen für Button & Bitmap für Blackberry Storm zu handhaben klicken/berühren?


Ich bin die Button & BitmapFields als

okButtonField = new ButtonField("Ok", BitmapField.HIGHLIGHT_SELECT | BitmapField.FOCUSABLE); 

startBitmapField = new BitmapField(startBitmap, BitmapField.HIGHLIGHT_SELECT | BitmapField.FOCUSABLE); 

Die Erstellung mit Arbeits ..

protected boolean touchEvent(TouchEvent event) 
{ 
    switch(event.getEvent() ) 
    { 
    case TouchEvent.DOWN: ........ 
      return true; 
    case TouchEvent.MOVE: ....... 
          return true; 
    case TouchEvent.UP: ........ 
          return true; 

    case TouchEvent.CLICK: 
     if(deleteButton.isFocus()) 
     {    
     System.out.println("Touched DEL .........."); 
     } 
     else if(okButton.isFocus()) 
     {    
     System.out.println("Touched OK .........."); 
     } 
     else if(startBitmapField.isFocus()) 
     {    
     System.out.println("Touched START .........."); 
     }   
    return true; 
    } 
    return false; 
} 

aber jedes Mal die gleiche Taste aufgerufen wird, der Brennpunkt ist.

Bedeutet, wenn "Ok" Knopf hat Fokus dann obwohl du auf "Löschen" Knopf klickst "Ok" Knopf wird genannt.

So, wie Sie den Fokus auf Button Click ändern? bedeutet, auf welches ButtonField oder BitmapField geklickt wird, sollte der Fokus erhalten?

Gibt es eine Methode zum Überprüfen von "button.isClicked() wie button.isFocus()"?

Antwort

5

Zuerst vergessen Sie nicht, hfm zum Bildschirm hinzuzufügen;)
Eigentlich funktioniert Button-Klick gut.
Um Bitmap-Klicks zu aktivieren, implementieren Sie jetzt das geschützte boolesche touchEvent (TouchEvent-Nachricht) für Ihr BitmapField. Es wird besser sein, erweiterte Klasse zu erstellen:

class MyCanvas extends MainScreen implements FieldChangeListener { 
    HorizontalFieldManager hfm; 
    private Bitmap startBitmap; 
    private BitmapField startBitmapField; 
    private ButtonField okButton; 
    private ButtonField cancelButton; 

    MyCanvas() { 
     hfm = new HorizontalFieldManager(); 
     add(hfm); 

     startBitmap = Bitmap.getBitmapResource("start.png"); 
     startBitmapField = new TouchBitmapField(startBitmap); 
     startBitmapField.setChangeListener(this); 
     hfm.add(startBitmapField); 

     okButton = new ButtonField("Ok", ButtonField.CONSUME_CLICK 
       | ButtonField.NEVER_DIRTY); 
     okButton.setChangeListener(this); 
     hfm.add(okButton); 

     cancelButton = new ButtonField("Cancel", ButtonField.CONSUME_CLICK 
       | ButtonField.NEVER_DIRTY); 
     cancelButton.setChangeListener(this); 
     hfm.add(cancelButton); 
    } 

    public void fieldChanged(Field field, int context) { 
     if (field == startBitmapField) { 
      System.out.println("Touched START..."); 
     } else if (field == okButton) { 
      System.out.println("Touched Ok..."); 
     } else if (field == cancelButton) { 
      System.out.println("Touched Cancel..."); 
     } 
    } 
} 

class TouchBitmapField extends BitmapField { 
    public TouchBitmapField(Bitmap startBitmap) { 
     super(startBitmap); 
    } 

    protected boolean touchEvent(TouchEvent message) { 
     if (TouchEvent.CLICK == message.getEvent()) { 
      FieldChangeListener listener = getChangeListener(); 
      if (null != listener) 
       listener.fieldChanged(this, 1); 
     } 
     return super.touchEvent(message); 
    } 
} 
+0

ja. Ich habe hfm zum Bildschirm hinzugefügt. Eigentlich gibt es 2 Knöpfe. So, wie man mit seinen Click-Events umgeht. Nun übergebe ich button.setChangeListener (this) und überschreibe die fieldChanged() -Methode wie oben meinen Code. Aber keine Wirkung. So, wie man Berührungsereignisse für 2 Knöpfe behandelt? Ich werde versuchen, Ihren Code für BitmapFields. – Shreyas

+0

Shreyas, Ich habe Code mit einem weiteren Knopf aktualisiert, es funktioniert immer noch ... Vielleicht kommt es auf etwas anderes an? Überprüfen Sie es, und wenn es immer noch nicht funktioniert, können Sie Ihren vollständigen Code veröffentlichen, damit wir es herausfinden werden. –

+0

können Sie ButtonFields & BitmapFields auf Simulator 4.7.0.41 berühren? – Shreyas

Verwandte Themen