添加到编辑框弹出窗口 [英] Adding Editfield to Popup screen
本文介绍了添加到编辑框弹出窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建自己的自定义弹出窗口,以现在我想添加一个EditField中,似乎一切都很好,但问题是,我不能写在编辑栏任何
类sveetIt扩展PopupScreen实现FieldChangeListener,DialogClosedListener { 哈希表pitemData;
ButtonField字段sveetNowlabelField;
ButtonField字段sveetLaterlabelField;
WatingScreen watingScreen;
长scheduledTime;
对话updateDialog; 公共sveetIt(){
超级(新MyCustimGridFieldManager());
messageLabelField的LabelField =新的LabelField(请输入您的Sveet消息:Field.FIELD_HCENTER){
保护无效漆(图形图像){
graphics.setColor(Color.YELLOWGREEN);
super.paint(图形);
}
};
EditField中sveetTexteditField =新EditField中(NULL,Sveet消息,50,EditField.FIELD_HCENTER
| EditField.FIELD_VCENTER
| EditField.NON_SPELLCHECKABLE | EditField.NO_NEWLINE);
VerticalFieldManager buttonVFManager =新VerticalFieldManager(VerticalFieldManager.FIELD_HCENTER);
HorizontalFieldManager hfManager =新HorizontalFieldManager();
sveetNowlabelField =新ButtonField字段(现在Sveet);
sveetLaterlabelField =新ButtonField字段(Sveet后来);
sveetNowlabelField.setChangeListener(本);
sveetLaterlabelField.setChangeListener(本);
加(messageLabelField);
加(sveetTexteditField);
hfManager.add(sveetNowlabelField);
hfManager.add(sveetLaterlabelField);
buttonVFManager.add(hfManager);
加(buttonVFManager);
}
公共布尔isEditable(){
返回true;
} 保护布尔keyChar(字符C,INT的地位,诠释时间){
布尔retVal的= FALSE; 如果(C == Characters.ESCAPE){
。Ui.getUiEngine()popScreen(本);
retVal的= super.keyChar(C,状态,时间); }
返回retVal的;
} 公共无效fieldChanged(场场,诠释上下文){
如果(sveetNowlabelField ==场){ //这里直接上传启动文件
beginUpload();
}否则如果(sveetLaterlabelField ==场){
//首先拿起时上传
scheduledTime = getScheduleTime();
如果(scheduledTime!= 1L){
//现在开始上传文件
beginUpload();
}
}} 类SubscribingThread扩展StoppableThread {
INT网络= 50; 公共无效的run(){ }
} 公共无效beginUpload(){
尝试{
watingScreen =新WatingScreen(上传Sveet ......);
/ *
* UiApplication.getUiApplication()。invokeAndWait(Runnable的新(){
*公共无效的run(){Ui.getUiEngine()pushScreen(watingScreen)。 }
*});
* /
BaseScreen.pushScreen(watingScreen);
线程线程=新主题(新的Runnable(){
公共无效的run(){
uploadToServer();
}
});
thread.start();
// uploadToServer();
}赶上(例外五){
// TODO自动生成catch块
e.printStackTrace();
} {最后 }
} 私人长期getScheduleTime(){
scheduledTime = 0;
最终的DateTimePicker datePick = DateTimePicker.createInstance();
UiApplication.getUiApplication()。invokeAndWait(Runnable的新(){
公共无效的run(){
// TODO自动生成方法存根
日历currentCalendar = datePick.getDateTime();
datePick.setMinimumDate(currentCalendar);
datePick.doModal();
日历CAL = datePick.getDateTime();
如果(cal.after(currentCalendar)){
日期日期= cal.getTime();
Dialog.alert(你选择了与Date.toString +());
scheduledTime = date.getTime();
}其他{
Dialog.alert(无效的日期选择);
scheduledTime = 1L;
}
}
}); 的System.out.println(日期以毫秒为:+ scheduledTime);
返回scheduledTime;
}公共无效uploadToServer(){ }公共无效dialogClosed(对话为arg0,ARG1 INT){ }
}类MyCustimGridFieldManager扩展了VerticalFieldManager { 公共MyCustimGridFieldManager(){
超(VERTICAL_SCROLL | USE_ALL_WIDTH | FIELD_HCENTER);
} 保护无效漆(图形克){
super.paint(克);
}}
解决方案
尝试添加 Field.EDITABLE
你的风格的EditField中。
I have created my own custom popup screen to which now I am trying to add a editfield , everything seems to be fine but the problem is that I am not able to write anything in the edit field
class sveetIt extends PopupScreen implements FieldChangeListener, DialogClosedListener {
Hashtable pitemData;
ButtonField sveetNowlabelField;
ButtonField sveetLaterlabelField;
WatingScreen watingScreen;
long scheduledTime;
Dialog updateDialog;
public sveetIt() {
super(new MyCustimGridFieldManager());
LabelField messageLabelField = new LabelField("Enter your Sveet Message:",Field.FIELD_HCENTER) {
protected void paint(Graphics graphics) {
graphics.setColor(Color.YELLOWGREEN);
super.paint(graphics);
}
};
EditField sveetTexteditField= new EditField(null, "Sveet Message", 50, EditField.FIELD_HCENTER
| EditField.FIELD_VCENTER
| EditField.NON_SPELLCHECKABLE | EditField.NO_NEWLINE);
VerticalFieldManager buttonVFManager = new VerticalFieldManager(VerticalFieldManager.FIELD_HCENTER);
HorizontalFieldManager hfManager = new HorizontalFieldManager();
sveetNowlabelField = new ButtonField("Sveet Now");
sveetLaterlabelField = new ButtonField("Sveet Later");
sveetNowlabelField.setChangeListener(this);
sveetLaterlabelField.setChangeListener(this);
add(messageLabelField);
add(sveetTexteditField);
hfManager.add(sveetNowlabelField);
hfManager.add(sveetLaterlabelField);
buttonVFManager.add(hfManager);
add(buttonVFManager);
}
public boolean isEditable() {
return true;
}
protected boolean keyChar(char c, int status, int time) {
boolean retVal = false;
if (c == Characters.ESCAPE) {
Ui.getUiEngine().popScreen(this);
retVal = super.keyChar(c, status, time);
}
return retVal;
}
public void fieldChanged(Field field, int context) {
if (sveetNowlabelField == field) {
//Here directly starts uploading file
beginUpload();
} else if (sveetLaterlabelField == field) {
// first picks up time when to upload
scheduledTime = getScheduleTime();
if(scheduledTime!=1L) {
//now begins uploading file
beginUpload();
}
}}
class SubscribingThread extends StoppableThread {
int network = 50;
public void run() {
}
}
public void beginUpload() {
try {
watingScreen = new WatingScreen("Uploading Sveet...");
/*
* UiApplication.getUiApplication().invokeAndWait( new Runnable() {
* public void run() { Ui.getUiEngine().pushScreen(watingScreen); }
* });
*/
BaseScreen.pushScreen(watingScreen);
Thread thread = new Thread(new Runnable() {
public void run() {
uploadToServer();
}
});
thread.start();
// uploadToServer();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
}
private long getScheduleTime() {
scheduledTime = 0;
final DateTimePicker datePick = DateTimePicker.createInstance();
UiApplication.getUiApplication().invokeAndWait(new Runnable() {
public void run() {
// TODO Auto-generated method stub
Calendar currentCalendar = datePick.getDateTime();
datePick.setMinimumDate(currentCalendar);
datePick.doModal();
Calendar cal = datePick.getDateTime();
if (cal.after(currentCalendar)) {
Date date = cal.getTime();
Dialog.alert("You selected " + date.toString());
scheduledTime = date.getTime();
} else {
Dialog.alert("Invalid date selection");
scheduledTime = 1L;
}
}
});
System.out.println("date in MilliSeconds is:" + scheduledTime);
return scheduledTime;
}
public void uploadToServer() {
} public void dialogClosed(Dialog arg0, int arg1) {
}
}
class MyCustimGridFieldManager extends VerticalFieldManager {
public MyCustimGridFieldManager() {
super(VERTICAL_SCROLL | USE_ALL_WIDTH | FIELD_HCENTER);
}
protected void paint(Graphics gr) {
super.paint(gr);
}
}
解决方案
Try adding Field.EDITABLE
to your style for the EditField.
这篇关于添加到编辑框弹出窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文