gpt4 book ai didi

blackberry - 在黑莓中创建对话框

转载 作者:行者123 更新时间:2023-12-04 18:19:33 26 4
gpt4 key购买 nike

enter image description here
嗨,我想创建一个包含用户名和密码的登录屏幕
和一个登录按钮
但是,当用户未能在用户名或密码的 TextField 中输入正确信息时,应该会从 TextField 右侧的一角弹出一个类似图像聊天对话框的弹出窗口,并显示相应的消息 如何实现此自定义?

最佳答案

我给你一个简单的方法。如果它对您的问题不完美,您只需忽略此答案。

在这里,我做了如下的逻辑。我给了你两个按钮
1)登录
2)删除

我想你知道如何验证你的文本字段是对还是错;保留一个 if 条件,如果正确,请编写您的逻辑不需要任何字段
else wrong 那么你有三个条件

1) id 错误
2)密码错误
或 3) 都错了

根据两个条件,您可以在上面的文本字段上添加特定的工具提示框。

我也为错误条件和删除条件提供样本

使其成为您的要求

资源:

背景需要 chat.png 图片 enter image description here

示例代码:

package mypackage;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.XYEdges;
import net.rim.device.api.ui.component.BasicEditField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.Border;
import net.rim.device.api.ui.decor.BorderFactory;

/**
* A class extending the MainScreen class, which provides default standard
* behavior for BlackBerry GUI applications.
*/
public final class MyScreen extends MainScreen implements FieldChangeListener
{
/**
* Creates a new MyScreen object
*/
private BasicEditField id,password;
private ButtonField login,cancel;
private VerticalFieldManager id_mgr,pass_mgr;
private PopupField id_hint,pass_hint;
public static Bitmap img;
public MyScreen()
{
img=Bitmap.getBitmapResource("chat.png");
// Set the displayed title of the screen
setTitle("Login Page");
Border b=BorderFactory.createRoundedBorder(new XYEdges(5, 5, 5, 5), Border.STYLE_SOLID);
id_hint=new PopupField("Wrong Id", img);

pass_hint=new PopupField("Wrong password", img);
id_mgr=new VerticalFieldManager();

id=new BasicEditField(){
protected void layout(int width, int height) {
super.layout(120, 40);
setExtent(120, 40);

}
};
id.setBorder(b);
add(id_mgr);
add(id);
pass_mgr=new VerticalFieldManager();
password=new BasicEditField(){
protected void layout(int width, int height) {
super.layout(120, 40);
setExtent(120, 40);

}
};
password.setBorder(b);
add(pass_mgr);
add(password);



login=new ButtonField("Login");
login.setChangeListener(this);
add(login);

cancel=new ButtonField("Remove");
cancel.setChangeListener(this);
add(cancel);

}
public void fieldChanged(Field field, int context) {
if(field==login)
{
try {
// id_mgr.add(new NullField(Field.FOCUSABLE));
id_mgr.add(id_hint);
id_mgr.setPadding(0, 0, 0, 50);
pass_mgr.add(pass_hint);
pass_mgr.setPadding(0, 0, 0, 50);
id_hint.setFocus();
} catch (IllegalStateException e) {
return;
}
}else if(cancel==field)
{
synchronized (UiApplication.getEventLock()) {
id_mgr.deleteAll();
pass_mgr.deleteAll();
}
}

}
}

PopupField.java 的类是
package mypackage;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.BitmapField;

public class PopupField extends BitmapField{
private Bitmap img,scalled_img;
private String message;
private int layout_width;

public PopupField(String message,Bitmap img)
{
this.message=message;
layout_width=this.getFont().getAdvance(message)+40;
scalled_img=new Bitmap(layout_width, img.getHeight());
img.scaleInto(scalled_img, Bitmap.FILTER_BILINEAR);
this.img=scalled_img;
}

protected void layout(int width, int height) {

super.layout(img.getWidth(), img.getHeight());
setExtent(img.getWidth(), img.getHeight());

}

protected void paint(Graphics graphics) {
graphics.drawBitmap(0, 0, img.getWidth(), img.getHeight(), img,0,0);
graphics.setColor(Color.RED);
graphics.drawText(message,20,20);
super.paint(graphics);
}

}

输出图像: enter image description here

继续帮助他人

其他解决方案是这个链接会告诉你
http://v4ks1n.wordpress.com/2011/01/28/tooltips-class-for-blackberry/

关于blackberry - 在黑莓中创建对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962766/

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