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

📄 stringitem.java

📁 用于移动设备上的java虚拟机源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     */    int callPreferredHeight(int w) {        if (w == -1) {            w = DEFAULT_WIDTH;        }        if (isButton()) {            int buttonPad = 2 * (BUTTON_BORDER + BUTTON_PAD);            int prefH     = Text.getTwoStringsHeight(label, str,                                                      LABEL_FONT, font,                                                     w - buttonPad,                                                      LABEL_PAD);            return (prefH > 0 ? prefH + buttonPad : 0);        }        return Text.getTwoStringsHeight(label, str, LABEL_FONT, font,                                        w, LABEL_PAD);    }    /**     * Determine if this Item should have a newline before it     *     * @return true if it should have a newline before     */    boolean equateNLB() {        // If label starts with a\n,        // put this StringItem on a newline no matter what        if (label != null && label.length() > 0) {            if (label.charAt(0) == '\n') {                return true;            }        } else if (str != null && str.length() > 0) {            // If there is no label and our content starts with a \n,            // this StringItem starts on a newline            if (str.charAt(0) == '\n') {                return true;            }        } else {            // empty StringItem            return false;        }        if ((layout & Item.LAYOUT_2) == Item.LAYOUT_2) {            return ((layout & Item.LAYOUT_NEWLINE_BEFORE)                            == Item.LAYOUT_NEWLINE_BEFORE);        }                    // in MIDP1.0 new any StringItem with a non-null label would        // go on a new line        return label != null && label.length() > 0;    }    /**     * Determine if this Item should have a newline after it     *     * @return true if it should have a newline after     */    boolean equateNLA() {        // If content ends with a \n,        // there is a newline after this StringItem no matter what        if (str != null && str.length() > 0) {            if (str.charAt(str.length() - 1) == '\n') {                return true;            }        } else if (label != null && label.length() > 0) {            // If there is no content and our label ends with a \n,             // there is a newline after this StringItem            if (label.charAt(label.length() - 1) == '\n') {                return true;            }        } else {            // empty StringItem            return false;        }        if ((layout & Item.LAYOUT_2) == Item.LAYOUT_2) {            return ((layout & Item.LAYOUT_NEWLINE_AFTER)                            == Item.LAYOUT_NEWLINE_AFTER);        }        return false;    }    /**     * Determine if Form should not traverse to this StringItem     *     * @return true if Form should not traverse to this StringItem     */    boolean shouldSkipTraverse() {        if ((label == null || label.length() == 0) &&             (str == null || str.length() == 0)) {            return true;        }        return skipTraverse;    }    /**     * Paint this StringItem     *     * @param g the Graphics object to paint to     * @param width the width of this item     * @param height the height of this item     */    void callPaint(Graphics g, int width, int height) {        int w = width;        int h = height;                int translateY = 0;        int translateX = 0;        if (isButton()) {            translateX = translateY = BUTTON_BORDER + BUTTON_PAD;            w -= 2*translateX;            h -= 2*translateY;            g.translate(translateX, translateY);        }        Font lFont = (LABEL_BOLD_ON_TRAVERSE && !hasFocus) ?                     Screen.CONTENT_FONT : LABEL_FONT;        int labelHeight = getLabelHeight(w);        int offset = Text.paint(label, lFont,                                 g, w, labelHeight, 0, Text.NORMAL, null);        if (offset > 0) {            offset += LABEL_PAD;        }        int mode = Text.NORMAL;        if (numCommands > 0 && appearanceMode == Item.HYPERLINK) {             mode = hasFocus ? (Text.INVERT | Text.HYPERLINK) :                              (Text.NORMAL | Text.HYPERLINK);        }        int yOffset = labelHeight;        if (labelHeight > 0) {            yOffset -= (lFont.getHeight() < font.getHeight() ?                        lFont.getHeight() : font.getHeight());        }        g.translate(0, yOffset);        translateY += yOffset;        Text.paint(str, font, g, w, h - yOffset, offset, mode, null);        g.translate(-translateX, -translateY);        if (isButton()) {            drawButtonBorder(g, 0, 0, width, height, hasFocus);        }    }    /**     * Called by the system to signal a key press     *     * @param keyCode the key code of the key that has been pressed     * @see #getInteractionModes     */    void callKeyPressed(int keyCode) {        if (keyCode != Display.KEYCODE_SELECT) {            return;        }        // StringItem takes focus only if there are one or more Item Commands        // attached to it        if (!(getCommandCount() > 0) || commandListener == null) {            return;        }        ItemCommandListener cl = null;        Command defaultCmd = null;        synchronized (Display.LCDUILock) {            cl = commandListener;            defaultCmd = defaultCommand;        } // synchronized        // SYNC NOTE: The call to the listener must occur outside        // of the lock        if (cl != null) {            try {                // SYNC NOTE: We lock on calloutLock around any calls                // into application code                synchronized (Display.calloutLock) {                    if (defaultCmd != null) {                        cl.commandAction(defaultCmd, this);                    } else {                        // REMINDER : Needs HI decision                        // either call the first command                        // from  the command list or                        // invoke the menu                    }                }            } catch (Throwable thr) {                Display.handleThrowable(thr);            }        }    }    /**     *  Adds a context sensitive Command to the item.     * @param cmd the command to be removed     */    void addCommandImpl(Command cmd) {        synchronized (Display.LCDUILock) {            // The super class will update the command set of the Form            super.addCommandImpl(cmd);            if ((numCommands >= 1) && (appearanceMode == Item.PLAIN)) {                // restore the value of the original appearanceMode                // if it is a button                // otherwise simple change the appearanceMode                // to hyperlink                this.appearanceMode =                    originalAppearanceMode == Item.BUTTON ?                    Item.BUTTON : Item.HYPERLINK;            }            checkTraverse();            invalidate();        } // synchronized    }    /**     *  Removes the context sensitive command from item.     * @param cmd the command to be removed     */    void removeCommandImpl(Command cmd) {        synchronized (Display.LCDUILock) {            // The super class will update the command set of the Form            super.removeCommandImpl(cmd);            if ((numCommands < 1) && (appearanceMode != Item.PLAIN)) {                // store value of the original appearanceMode                originalAppearanceMode = this.appearanceMode;                // change the appearanceMode to plain                this.appearanceMode = Item.PLAIN;            }            checkTraverse();            invalidate();        } // synchronized    }    /**     * Check that given the label, text, and commands, Form     * should traverse this StringItem. Updates the internal     * 'skipTraverse' variable.     */    private void checkTraverse() {        if (str == null && label == null) {            skipTraverse = true;        } else if (str == null && label.trim().equals("")) {            skipTraverse = true;        } else if (label == null && str.trim().equals("")) {            skipTraverse = true;        } else {            skipTraverse = false;        }    }    /**     * Determines if this StringItem should be rendered with the button border.     * @return true if the StringItem should be rendered with      *         the button border, false - otherwise     */    private boolean isButton() {        return (numCommands > 0 && appearanceMode == Item.BUTTON);    }    /** The text of this StringItem */    private String str;    /** The Font to render this StringItem's text in */    private Font font;    /** The appearance hint */    private int appearanceMode;    /** The original appearance hint before switching */    private int originalAppearanceMode;    /** Minimum height for one line */    private int minimumLineHeight;    /**     * An internal flag. True if Form should not traverse     * to this StringItem     */    private boolean skipTraverse;  }

⌨️ 快捷键说明

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