⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itemdisplayscreen.java

📁 一个J2ME编写的Pim卡电话本的读写Demo软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package example.pim;import java.io.ByteArrayOutputStream;import java.util.Date;import java.util.Enumeration;import java.util.Hashtable;import java.util.Vector;import javax.microedition.lcdui.Alert;import javax.microedition.lcdui.AlertType;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.DateField;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Item;import javax.microedition.lcdui.ItemCommandListener;import javax.microedition.lcdui.List;import javax.microedition.lcdui.StringItem;import javax.microedition.lcdui.TextField;import javax.microedition.pim.Contact;import javax.microedition.pim.Event;import javax.microedition.pim.PIM;import javax.microedition.pim.PIMException;import javax.microedition.pim.PIMItem;import javax.microedition.pim.ToDo;/** * Demonstrate the use of JSR 75 PIM APIs */public class ItemDisplayScreen extends Form implements CommandListener, ItemCommandListener {    private final Command editArrayCommand = new Command("Edit", Command.OK, 1);    private final Command editBooleanCommand = new Command("Edit", Command.OK, 1);    private final Command commitCommand = new Command("Commit", Command.OK, 2);    private final Command backCommand = new Command("Back", Command.BACK, 1);    private final Command showVCard = new Command("Show vCard", Command.SCREEN, 5);    private final Command showVCalendar = new Command("Show vCalendar", Command.SCREEN, 5);    private final Command addField = new Command("Add Field", Command.SCREEN, 2);    private final Command removeField = new Command("Remove Field", Command.SCREEN, 3);    private final PIMDemo midlet;    private final ItemSelectionScreen caller;    private final PIMItem item;    private final Hashtable fieldTable = new Hashtable(); // maps field indices to items    public ItemDisplayScreen(PIMDemo midlet, ItemSelectionScreen caller, PIMItem item)        throws PIMException {        super("PIM Item");        this.midlet = midlet;        this.caller = caller;        this.item = item;        populateForm();        addCommand(backCommand);        addCommand(commitCommand);        setCommandListener(this);    }    private boolean isClassField(int field) {        return (item instanceof Contact && (field == Contact.CLASS)) ||        (item instanceof Event && (field == Event.CLASS)) ||        (item instanceof ToDo && (field == ToDo.CLASS));    }    private void populateForm() throws PIMException {       deleteAll();        fieldTable.clear();        int[] fields = item.getPIMList().getSupportedFields();        boolean allFieldsUsed = true;        for (int i = 0; i < fields.length; i++) {            int field = fields[i];            // exclude CLASS field            if (isClassField(field)) {                continue;            }            if (item.countValues(field) == 0) {                allFieldsUsed = false;                continue;            }            int dataType = item.getPIMList().getFieldDataType(field);            String label = item.getPIMList().getFieldLabel(field);            Item formItem = null;            switch (dataType) {            case PIMItem.STRING: {                String sValue = item.getString(field, 0);                if (sValue == null) {                    sValue = "";                }                int style = TextField.ANY;                // cater for specific field styles                if (item instanceof Contact) {                    switch (field) {                    case Contact.EMAIL:                        style = TextField.EMAILADDR;                        break;                    case Contact.TEL:                        style = TextField.PHONENUMBER;                        break;                    case Contact.URL:                        style = TextField.URL;                        break;                    }                }                try {                    formItem = new TextField(label, sValue, 128, style);                } catch (IllegalArgumentException e) {                    formItem = new TextField(label, sValue, 128, TextField.ANY);                }                break;            }            case PIMItem.BOOLEAN: {                formItem = new StringItem(label, item.getBoolean(field, 0) ? "yes" : "no");                formItem.setDefaultCommand(editBooleanCommand);                break;            }            case PIMItem.STRING_ARRAY: {                String[] a = item.getStringArray(field, 0);                if (a != null) {                    formItem = new StringItem(label, joinStringArray(a));                    formItem.setDefaultCommand(editArrayCommand);                }                break;            }            case PIMItem.DATE: {                long time = item.getDate(field, 0);                int style = DateField.DATE_TIME;                // some fields are date only, without a time.                // correct for these fields:                if (item instanceof Contact) {                    switch (field) {                    case Contact.BIRTHDAY:                        style = DateField.DATE;                        break;                    }                }                formItem = new DateField(label, style);                ((DateField)formItem).setDate(new Date(time));                break;            }            case PIMItem.INT: {                formItem = new TextField(label, String.valueOf(item.getInt(field, 0)), 64,                        TextField.DECIMAL);                break;            }            case PIMItem.BINARY: {                byte[] data = item.getBinary(field, 0);                if (data != null) {                    formItem = new StringItem(label, data.length + " bytes");                }                break;            }            }            if (formItem != null) {                append(formItem);                fieldTable.put(formItem, new Integer(field));                formItem.addCommand(removeField);                formItem.setItemCommandListener(this);            }        }        if (item instanceof Contact) {            addCommand(showVCard);        } else {            addCommand(showVCalendar);        }        if (!allFieldsUsed) {            addCommand(addField);        } else {            removeCommand(addField);        }    }    public void commandAction(final Command command, Displayable displayable) {        if (command == backCommand) {            new Thread(new Runnable() {                    public void run() {                        try {                            getUserData();                        } catch (Exception e) {                            // ignore; store what can be stored of the data                        }                        try {                            caller.populateList();                        } catch (Exception e) {                            // ignore again; show what can be shown of the list                        }                        Display.getDisplay(midlet).setCurrent(caller);                    }                }).start();        } else if (command == commitCommand) {            commit();        } else if (command == showVCard) {            showItem("VCARD/2.1");        } else if (command == showVCalendar) {            showItem("VCALENDAR/1.0");        } else if (command == addField) {            addField();        }    }    public void commandAction(final Command command, final Item formItem) {        new Thread(new Runnable() {                public void run() {                    final int field = ((Integer)fieldTable.get(formItem)).intValue();                    if (command == editBooleanCommand) {                        boolean newValue = !item.getBoolean(field, 0);                        item.setBoolean(field, 0, PIMItem.ATTR_NONE, newValue);                        ((StringItem)formItem).setText(newValue ? "yes" : "no");                    } else if (command == editArrayCommand) {                        String label = item.getPIMList().getFieldLabel(field);                        final String[] a = item.getStringArray(field, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -