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

📄 itemdisplayscreen.java

📁 一个J2ME编写的Pim卡电话本的读写Demo软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        final TextField[] textFields = new TextField[a.length];                        for (int i = 0; i < a.length; i++) {                            String elementLabel = item.getPIMList().getArrayElementLabel(field, i);                            textFields[i] = new TextField(elementLabel, a[i], 128, TextField.ANY);                        }                        Form form = new Form(label, textFields);                        final Command okCommand = new Command("OK", Command.OK, 1);                        final Command cancelCommand = new Command("Cancel", Command.CANCEL, 1);                        form.addCommand(okCommand);                        form.addCommand(cancelCommand);                        form.setCommandListener(new CommandListener() {                                public void commandAction(Command command, Displayable d) {                                    if (command == okCommand) {                                        for (int i = 0; i < textFields.length; i++) {                                            a[i] = textFields[i].getString();                                        }                                        item.setStringArray(field, 0, item.getAttributes(field, 0),                                            a);                                        ((StringItem)formItem).setText(joinStringArray(a));                                    }                                    Display.getDisplay(midlet).setCurrent(ItemDisplayScreen.this);                                }                            });                        Display.getDisplay(midlet).setCurrent(form);                    } else if (command == removeField) {                        try {                            item.removeValue(field, 0);                        } catch (IllegalArgumentException iae) {                            System.out.println(iae.toString());                        }                        try {                            populateForm();                        } catch (PIMException e) {                        }                        /*                        for (int i = size() - 1; i >=0; i--) {                            if (get(i) == formItem) {                                delete(i);                                break;                            }                        }*/                    }                }            }).start();    }    private void commit() {        new Thread(new Runnable() {                public void run() {                    try {                        getUserData();                        item.commit();                        populateForm();                    } catch (Exception e) {                        midlet.reportException(e, ItemDisplayScreen.this);                    }                }            }).start();    }    private void getUserData() throws NumberFormatException {        int itemCount = size();        for (int i = 0; i < itemCount; i++) {            Item formItem = get(i);            int field = ((Integer)fieldTable.get(formItem)).intValue();            if (item.countValues(field) < 1) {                // No data in field. This can happen if, for example, a                // value is adding to PUBLIC_KEY, causing values of                // PUBLIC_KEY_STRING to be erased.                continue;            }            int dataType = item.getPIMList().getFieldDataType(field);            switch (dataType) {            case PIMItem.STRING: {                String s = ((TextField)formItem).getString();                try {                    item.setString(field, 0, PIMItem.ATTR_NONE, s);                } catch (IllegalArgumentException e) {                    // this was a read-only field (UID)                }                break;            }            case PIMItem.DATE: {                long time = ((DateField)formItem).getDate().getTime();                try {                    item.setDate(field, 0, PIMItem.ATTR_NONE, time);                } catch (IllegalArgumentException e) {                    // this was a read-only field (REVISION)                }                break;            }            case PIMItem.INT: {                String s = ((TextField)formItem).getString();                int j = Integer.parseInt(s);                item.setInt(field, 0, PIMItem.ATTR_NONE, j);                break;            }            }        }    }    private void addField() {        int[] allFields = item.getPIMList().getSupportedFields();        final Vector unusedFields = new Vector();        for (int i = 0; i < allFields.length; i++) {            if ((item.countValues(allFields[i]) == 0) && !isClassField(allFields[i])) {                unusedFields.addElement(new Integer(allFields[i]));            }        }        final List fieldList = new List("Select a field to add", List.IMPLICIT);        for (Enumeration e = unusedFields.elements(); e.hasMoreElements();) {            int field = ((Integer)e.nextElement()).intValue();            fieldList.append(item.getPIMList().getFieldLabel(field), null);        }        fieldList.addCommand(new Command("Cancel", Command.CANCEL, 1));        fieldList.setSelectCommand(new Command("Add", Command.OK, 1));        fieldList.setCommandListener(new CommandListener() {                public void commandAction(final Command c, Displayable d) {                    new Thread(new Runnable() {                            public void run() {                                if (c.getCommandType() == Command.OK) {                                    try {                                        int index = fieldList.getSelectedIndex();                                        int field =                                            ((Integer)unusedFields.elementAt(index)).intValue();                                        addField(field);                                    } catch (IllegalArgumentException iae) {                                        midlet.reportException(iae, ItemDisplayScreen.this);                                    }                                    try {                                        getUserData();                                        populateForm();                                    } catch (Exception e) {                                        midlet.reportException(e, ItemDisplayScreen.this);                                    }                                }                                Display.getDisplay(midlet).setCurrent(ItemDisplayScreen.this);                            }                        }).start();                }            });        Display.getDisplay(midlet).setCurrent(fieldList);    }    private void addField(int field) {        switch (item.getPIMList().getFieldDataType(field)) {        case PIMItem.STRING:            item.addString(field, PIMItem.ATTR_NONE, "");            break;        case PIMItem.STRING_ARRAY: {            int[] supportedElements = item.getPIMList().getSupportedArrayElements(field);            int arraySize = 0;            for (int i = 0; i < supportedElements.length; i++) {                arraySize = Math.max(arraySize, supportedElements[i] + 1);            }            String[] a = new String[arraySize];            for (int i = 0; i < a.length; i++) {                a[i] = "";            }            item.addStringArray(field, PIMItem.ATTR_NONE, a);            break;        }        case PIMItem.BINARY:            item.addBinary(field, PIMItem.ATTR_NONE, new byte[16], 0, 16);            break;        case PIMItem.BOOLEAN:            item.addBoolean(field, PIMItem.ATTR_NONE, false);            break;        case PIMItem.DATE:            item.addDate(field, PIMItem.ATTR_NONE, new Date().getTime());            break;        case PIMItem.INT:            item.addInt(field, PIMItem.ATTR_NONE, 0);        }    }    private void showItem(final String format) {        new Thread(new Runnable() {                public void run() {                    try {                        getUserData();                        populateForm();                        ByteArrayOutputStream baos = new ByteArrayOutputStream();                        PIM.getInstance().toSerialFormat(item, baos, "UTF-8", format);                        String s = new String(baos.toByteArray(), "UTF-8");                        Alert a = new Alert(format, s, null, AlertType.INFO);                        a.setTimeout(Alert.FOREVER);                        Display.getDisplay(midlet).setCurrent(a, ItemDisplayScreen.this);                    } catch (Exception e) {                        midlet.reportException(e, ItemDisplayScreen.this);                    }                }            }).start();    }    private String joinStringArray(String[] a) {        StringBuffer sb = new StringBuffer();        for (int i = 0; i < a.length; i++) {            if ((a[i] != null) && (a[i].length() > 0)) {                if (sb.length() > 0) {                    sb.append(", ");                }                sb.append(a[i]);            }        }        return sb.toString();    }}

⌨️ 快捷键说明

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