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

📄 basicstrokeeditor.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/BasicStrokeEditor.java,v $// $RCSfile: BasicStrokeEditor.java,v $// $Revision: 1.5.2.2 $// $Date: 2005/08/09 21:17:46 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;/*  Java Core  */import java.awt.BasicStroke;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Graphics2D;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.beans.PropertyChangeSupport;import java.util.Enumeration;import java.util.Vector;import javax.swing.BoxLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.bbn.openmap.util.PaletteHelper;import com.bbn.openmap.util.PropUtils;/** * The BasicStrokeEditor provides a GUI to adjust BasicStroke * parameters. It can provide a default button to launch itself, or a * button can be set. This class is being replaced by the * BasicStrokeEditorMenu. */public class BasicStrokeEditor extends JDialog implements ActionListener {    protected BasicStroke basicStroke = null;    protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);    protected float width; // must be >= 0f    protected int endCaps; //CAP_ROUND, CAP_BUTT, CAP_SQUARE    protected int lineJoins; //JOIN_BEVEL, JOIN_MITER, JOIN_ROUND    protected float miterLimit; // 10f default, must be >= 1f    protected float[] dash;    protected float dashPhase;    public BasicStrokeEditor() {        basicStroke = new BasicStroke(1f);    }    public BasicStrokeEditor(BasicStroke bs) {        if (bs != null) {            basicStroke = bs;        } else {            basicStroke = new BasicStroke(1f);        }        setStrokeWidth(basicStroke.getLineWidth());        setMiterLimit(basicStroke.getMiterLimit());        setDash(basicStroke.getDashArray());        setDashPhase(basicStroke.getDashPhase());        setEndCaps(basicStroke.getEndCap());        setLineJoins(basicStroke.getLineJoin());    }    public void resetStroke() {        BasicStroke oldStroke = basicStroke;        setMiterLimit(miterLimit);        basicStroke = new BasicStroke(width, endCaps, lineJoins, miterLimit, dash, dashPhase);        pcs.firePropertyChange("line", oldStroke, basicStroke);    }    protected void widgetsToSettings() {        try {            float w = new Float(widthField.getText()).floatValue();            if (w < 0)                w = 0;            width = w;        } catch (NumberFormatException nfe) {            width = 1f;        }        try {            setMiterLimit(new Float(miterLimitField.getText()).floatValue());        } catch (NumberFormatException nfe) {            setMiterLimit(10f);        }        dash = stringToDashArray(dashField.getText());        try {            float dp = new Float(dashPhaseField.getText()).floatValue();            if (dp < 0f)                dp = 0f;            dashPhase = dp;        } catch (NumberFormatException nfe) {            dashPhase = 0f;        }        endCaps = capBox.getSelectedIndex();        lineJoins = joinBox.getSelectedIndex();    }    protected transient JTextField widthField, miterLimitField, dashField,            dashPhaseField;    protected transient JPanel palette = null;    protected transient JButton closebutton;    protected transient JButton applybutton;    protected transient JComboBox capBox;    protected transient JComboBox joinBox;    public void setGUI() {        if (palette == null) {            setTitle("Modify Line Stroke Parameters");            palette = new JPanel();            palette.setLayout(new BoxLayout(palette, BoxLayout.Y_AXIS));            JPanel capPanel = PaletteHelper.createPaletteJPanel("Line Cap Decoration");            String[] capStrings = { "Butt", "Round", "Square" };            capBox = new JComboBox(capStrings);            capBox.addActionListener(this);            capPanel.add(capBox);            palette.add(capPanel);            JPanel joinPanel = PaletteHelper.createPaletteJPanel("Line Joint Decoration");            String[] joinStrings = { "Miter", "Round", "Bevel" };            joinBox = new JComboBox(joinStrings);            joinBox.addActionListener(this);            joinPanel.add(joinBox);            palette.add(joinPanel);            JPanel widthPanel = new JPanel();            widthPanel.setLayout(new GridLayout(0, 1));            JLabel widthLabel = new JLabel("Line Width");            widthField = new JTextField(Float.toString(basicStroke.getLineWidth()), 4);            widthField.setToolTipText("Enter pixel width of line.");            widthPanel.add(widthLabel);            widthPanel.add(widthField);            JPanel mlPanel = new JPanel();            mlPanel.setLayout(new GridLayout(0, 1));            JLabel miterLimitLabel = new JLabel("Miter Limit");            miterLimitField = new JTextField(Float.toString(basicStroke.getMiterLimit()), 4);            miterLimitField.setToolTipText("Min angle for corner decorations.");            mlPanel.add(miterLimitLabel);            mlPanel.add(miterLimitField);            JPanel dlPanel = new JPanel();            dlPanel.setLayout(new FlowLayout());            JLabel dashLabel = new JLabel("Dash Pattern");//            float[] da = basicStroke.getDashArray();//            String dashArrayString = dashArrayToString(da);            dashField = new JTextField(dashArrayToString(basicStroke.getDashArray()), 15);            dashField.setToolTipText("Number of pixels on off on ...");            dlPanel.add(dashLabel);            dlPanel.add(dashField);            JPanel dpPanel = new JPanel();            dpPanel.setLayout(new GridLayout(0, 1));            JLabel dashPhaseLabel = new JLabel("Dash Phase");            dashPhaseField = new JTextField(Float.toString(basicStroke.getDashPhase()), 4);            dashPhaseField.setToolTipText("Phase to start dash array.");            dpPanel.add(dashPhaseLabel);            dpPanel.add(dashPhaseField);            JPanel textFieldPanel = new JPanel();            textFieldPanel.setLayout(new GridLayout(0, 3));            textFieldPanel.add(widthPanel);            textFieldPanel.add(dpPanel);            textFieldPanel.add(mlPanel);            palette.add(textFieldPanel);            palette.add(dlPanel);            JPanel buttonPanel = new JPanel();            buttonPanel.setLayout(new GridLayout(0, 2));            closebutton = new JButton("Cancel");            closebutton.addActionListener(this);            applybutton = new JButton("OK");            applybutton.addActionListener(this);            buttonPanel.add(applybutton);            buttonPanel.add(closebutton);            palette.add(buttonPanel);            getContentPane().add(palette);            this.pack();        } else {            widthField.setText(Float.toString(basicStroke.getLineWidth()));            miterLimitField.setText(Float.toString(basicStroke.getMiterLimit()));            dashField.setText(dashArrayToString(basicStroke.getDashArray()));            dashPhaseField.setText(Float.toString(basicStroke.getDashPhase()));        }        // Set palette to current conditions;        capBox.setSelectedIndex(basicStroke.getEndCap());        joinBox.setSelectedIndex(basicStroke.getLineJoin());    }    public final static String NONE = "No Dash Pattern";    public static String dashArrayToString(float[] da) {        if (da == null) {            return NONE;        }        StringBuffer sb = new StringBuffer();        for (int i = 0; i < da.length; i++) {            sb.append(Float.toString(da[i]) + " ");        }        return sb.toString();    }    public static float[] stringToDashArray(String das) {        if (das == null || das.equals(NONE) || das.equals("")) {            return null;        }        Vector floats = PropUtils.parseSpacedMarkers(das);        float[] ret = new float[floats.size()];        int index = 0;        Enumeration thing = floats.elements();        while (thing.hasMoreElements()) {            String f = (String) thing.nextElement();            try {                ret[index++] = (new Float(f)).floatValue();            } catch (NumberFormatException nfe) {                return null;            }        }        return ret;    }    public final static String LaunchCmd = "LAUNCH";    public void actionPerformed(ActionEvent event) {        if (event.getSource() == applybutton) {            widgetsToSettings();            resetStroke();            this.setVisible(false);        } else if (event.getSource() == closebutton) {            this.setVisible(false);        } else if (event.getActionCommand() == LaunchCmd) {            setGUI();            this.setVisible(true);        } else {            widgetsToSettings();            resetStroke();        }    }    public BasicStroke getBasicStroke() {        return basicStroke;    }    public void setBasicStroke(BasicStroke bs) {        basicStroke = bs;        if (launchButton != null) {            //          float buttonHeight = (bs == null?11:bs.getLineWidth() +            // 10f);            float buttonHeight = 20;            launchButton.setIcon(createIcon(getBasicStroke(),                    40,                    (int) buttonHeight,                    true));        }    }    JButton launchButton;    public void setLaunchButton(JButton lb) {        launchButton = lb;    }    public JButton getLaunchButton() {        if (launchButton == null) {//            BasicStroke bs = getBasicStroke();//            float buttonHeight = (bs == null ? 11 : bs.getLineWidth() + 10f);            float buttonHeight = 20;            ImageIcon icon = createIcon(getBasicStroke(),                    40,                    (int) buttonHeight,                    true);            launchButton = new JButton(icon);            launchButton.setToolTipText("Modify Line Stroke");            launchButton.addActionListener(this);            launchButton.setActionCommand(LaunchCmd);        }        return launchButton;    }    public void setPropertyChangeSupport(                                         PropertyChangeSupport propertyChangeSupport) {        pcs = propertyChangeSupport;    }    public PropertyChangeSupport getPropertyChangeSupport() {        return pcs;    }    /**     * Given a BasicStroke, create an ImageIcon that shows it.     *      * @param stroke the BasicStroke to draw on the Icon.     * @param width the width of the icon.     * @param height the height of the icon.     * @param horizontalOrientation if true, draw line on the icon     *        horizontally, else draw it vertically.     */    public static ImageIcon createIcon(BasicStroke stroke, int width,                                       int height, boolean horizontalOrientation) {        BufferedImage bigImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);        Graphics2D g = (Graphics2D) bigImage.getGraphics();        g.setBackground(OMColor.clear);        g.setPaint(OMColor.clear);        g.fillRect(0, 0, width, height);        g.setPaint(Color.black);        g.setStroke(stroke);        if (horizontalOrientation) {            g.drawLine(0, height / 2, width, height / 2);        } else {            g.drawLine(width / 2, 0, width / 2, height);        }        return new ImageIcon(bigImage);    }    public void setStrokeWidth(float w) {        if (w < 1)            w = 1;        width = w;    }    public float getStrokeWidth() {        return width;    }    public void setMiterLimit(float ml) {        if (ml < 1f)            miterLimit = 10f;        else            miterLimit = ml;    }    public float getMiterLimit() {        return miterLimit;    }    public void setDash(float[] da) {        dash = da;    }    public float[] getDash() {        return dash;    }    public void setDashPhase(float dp) {        dashPhase = dp;    }    public float getDashPhase() {        return dashPhase;    }    public void setEndCaps(int ec) {        endCaps = ec;    }    public int getEndCaps() {        return endCaps;    }    public void setLineJoins(int lj) {        lineJoins = lj;    }    public int getLineJoins() {        return lineJoins;    }}

⌨️ 快捷键说明

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