gpt4 book ai didi

user-interface - 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 单击(触摸)事件?

转载 作者:行者123 更新时间:2023-12-04 06:40:46 30 4
gpt4 key购买 nike

我创建了一个 ButtonField 和一个 BitmapField 像..

  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...");
}
}
}

但是 ButtonField 或 BitmapField 单击在 Blackberry 4.7 模拟器中不会发生。

我想为 Blackberry Storm 构建它,所以我使用的是 Blackberry 4.7

如何处理 Blackberry Storm 的 ButtonField 和 BitmapField 的点击/触摸事件?

我正在创建 ButtonField & BitmapFields 作为

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

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

它与..

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;
}

但每次调用具有焦点的相同按钮时。

意味着如果“确定”按钮具有焦点,那么即使您单击“删除”按钮,也会调用“确定”按钮。

那么如何改变Button Click的焦点呢?意味着无论单击 ButtonField 还是 BitmapField,都应该获得焦点?

有什么方法可以检查“button.isClicked() like button.isFocus()”?

最佳答案

首先,不要忘记在屏幕上添加 hfm ;)
实际上按钮点击工作正常。
现在,要使位图单击也能正常工作,请为您的 BitmapField 实现 protected boolean touchEvent(TouchEvent message)。创建扩展类会更好:

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);
}
}

关于user-interface - 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 单击(触摸)事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351101/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com