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

📄 synthspinnerui.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * with the <code>createEditor</code> method.     *      * @see #createEditor     * @see #createPropertyChangeListener     */    protected void replaceEditor(JComponent oldEditor, JComponent newEditor) {        spinner.remove(oldEditor);        updateEditorAlignment(newEditor);        spinner.add(newEditor, "Editor");        if (oldEditor instanceof JSpinner.DefaultEditor) {            JTextField tf = ((JSpinner.DefaultEditor)oldEditor).getTextField();            if (tf != null) {                tf.removeFocusListener(editorFocusHandler);            }        }        if (newEditor instanceof JSpinner.DefaultEditor) {            JTextField tf = ((JSpinner.DefaultEditor)newEditor).getTextField();            if (tf != null) {                tf.addFocusListener(editorFocusHandler);            }        }    }    private void updateEditorAlignment(JComponent editor) {        if (editor instanceof JSpinner.DefaultEditor) {            SynthContext context = getContext(spinner);            Integer alignment = (Integer)context.getStyle().get(                    context, "Spinner.editorAlignment");            JTextField text = ((JSpinner.DefaultEditor)editor).getTextField();            if (alignment != null) {                text.setHorizontalAlignment(alignment);            }            // copy across the sizeVariant property to the editor            text.putClientProperty("JComponent.sizeVariant",                    spinner.getClientProperty("JComponent.sizeVariant"));        }    }    public SynthContext getContext(JComponent c) {        return getContext(c, getComponentState(c));    }    private SynthContext getContext(JComponent c, int state) {        return SynthContext.getContext(SynthContext.class, c,                    SynthLookAndFeel.getRegion(c), style, state);    }    private Region getRegion(JComponent c) {        return SynthLookAndFeel.getRegion(c);    }    private int getComponentState(JComponent c) {        return SynthLookAndFeel.getComponentState(c);    }    public void update(Graphics g, JComponent c) {        SynthContext context = getContext(c);        SynthLookAndFeel.update(context, g);        context.getPainter().paintSpinnerBackground(context,                          g, 0, 0, c.getWidth(), c.getHeight());        paint(context, g);        context.dispose();    }    public void paint(Graphics g, JComponent c) {        SynthContext context = getContext(c);        paint(context, g);        context.dispose();    }    protected void paint(SynthContext context, Graphics g) {    }    public void paintBorder(SynthContext context, Graphics g, int x,                            int y, int w, int h) {        context.getPainter().paintSpinnerBorder(context, g, x, y, w, h);    }    /**     * A simple layout manager for the editor and the next/previous buttons.     * See the SynthSpinnerUI javadoc for more information about exactly     * how the components are arranged.     */    private static class SpinnerLayout implements LayoutManager, UIResource    {        private Component nextButton = null;        private Component previousButton = null;        private Component editor = null;        public void addLayoutComponent(String name, Component c) {            if ("Next".equals(name)) {                nextButton = c;            }            else if ("Previous".equals(name)) {                previousButton = c;            }            else if ("Editor".equals(name)) {                editor = c;            }        }        public void removeLayoutComponent(Component c) {            if (c == nextButton) {                c = null;            }            else if (c == previousButton) {                previousButton = null;            }            else if (c == editor) {                editor = null;            }        }        private Dimension preferredSize(Component c) {            return (c == null) ? new Dimension(0, 0) : c.getPreferredSize();        }        public Dimension preferredLayoutSize(Container parent) {            Dimension nextD = preferredSize(nextButton);            Dimension previousD = preferredSize(previousButton);            Dimension editorD = preferredSize(editor);            /* Force the editors height to be a multiple of 2             */            editorD.height = ((editorD.height + 1) / 2) * 2;            Dimension size = new Dimension(editorD.width, editorD.height);            size.width += Math.max(nextD.width, previousD.width);            Insets insets = parent.getInsets();            size.width += insets.left + insets.right;            size.height += insets.top + insets.bottom;            return size;        }        public Dimension minimumLayoutSize(Container parent) {            return preferredLayoutSize(parent);        }        private void setBounds(Component c, int x, int y, int width, int height) {            if (c != null) {                c.setBounds(x, y, width, height);            }        }        public void layoutContainer(Container parent) {            Insets insets = parent.getInsets();            int availWidth = parent.getWidth() - (insets.left + insets.right);            int availHeight = parent.getHeight() - (insets.top + insets.bottom);            Dimension nextD = preferredSize(nextButton);            Dimension previousD = preferredSize(previousButton);            int nextHeight = availHeight / 2;            int previousHeight = availHeight - nextHeight;            int buttonsWidth = Math.max(nextD.width, previousD.width);            int editorWidth = availWidth - buttonsWidth;            /* Deal with the spinners componentOrientation property.             */            int editorX, buttonsX;            if (parent.getComponentOrientation().isLeftToRight()) {                editorX = insets.left;                buttonsX = editorX + editorWidth;            }            else {                buttonsX = insets.left;                editorX = buttonsX + buttonsWidth;            }            int previousY = insets.top + nextHeight;            setBounds(editor, editorX, insets.top, editorWidth, availHeight);            setBounds(nextButton, buttonsX, insets.top, buttonsWidth, nextHeight);            setBounds(previousButton, buttonsX, previousY, buttonsWidth, previousHeight);        }    }    public void propertyChange(PropertyChangeEvent e) {        String propertyName = e.getPropertyName();        JSpinner spinner = (JSpinner)(e.getSource());        SpinnerUI spinnerUI = spinner.getUI();            if (spinnerUI instanceof SynthSpinnerUI) {            SynthSpinnerUI ui = (SynthSpinnerUI)spinnerUI;                if (SynthLookAndFeel.shouldUpdateStyle(e)) {                ui.updateStyle(spinner);            }        }    }    /** Listen to editor text field focus changes and repaint whole spinner */    private class EditorFocusHandler implements FocusListener{        /** Invoked when a editor text field gains the keyboard focus. */        public void focusGained(FocusEvent e) {            spinner.repaint();        }        /** Invoked when a editor text field loses the keyboard focus. */        public void focusLost(FocusEvent e) {            spinner.repaint();        }    }    /** Override the arrowbuttons focus handling to follow the text fields focus */    private class SpinnerArrowButton extends SynthArrowButton{        public SpinnerArrowButton(int direction) {            super(direction);        }        @Override        public boolean isFocusOwner() {            if (spinner == null){                return super.isFocusOwner();            } else if (spinner.getEditor() instanceof JSpinner.DefaultEditor){                return ((JSpinner.DefaultEditor)spinner.getEditor())                        .getTextField().isFocusOwner();            } else if (spinner.getEditor()!= null) {                return spinner.getEditor().isFocusOwner();            } else {                return super.isFocusOwner();            }        }    }}

⌨️ 快捷键说明

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