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

📄 editableomabstractline.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/EditableOMAbstractLine.java,v $// $RCSfile: EditableOMAbstractLine.java,v $// $Revision: 1.1.2.2 $// $Date: 2005/08/10 22:45:13 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Component;import java.awt.Graphics2D;import java.awt.Polygon;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JMenu;import javax.swing.JRadioButtonMenuItem;import com.bbn.openmap.Environment;import com.bbn.openmap.I18n;/** * The EditableOMAbstractLine encompasses an OMAbstractLine, providing * a mechanism for adding an arrowhead menu in the line editor menu. */public abstract class EditableOMAbstractLine extends EditableOMGraphic {    protected JMenu arrowheadMenu = null;        protected I18n i18n = Environment.getI18n();    public Component getGUI(GraphicAttributes graphicAttributes) {        if (graphicAttributes != null) {            JMenu ahm = getArrowHeadMenu();            graphicAttributes.setLineMenuAdditions(new JMenu[] { ahm });            return graphicAttributes.getGUI();        }        return null;    }    public JMenu getArrowHeadMenu() {        if (arrowheadMenu == null) {            arrowheadMenu = new JMenu(i18n.get(EditableOMAbstractLine.class, "Arrows", "Arrows"));            ActionListener listener = new ActionListener() {                public void actionPerformed(ActionEvent ae) {                    String command = ae.getActionCommand();                    try {                        int what = Integer.parseInt(command);                        if (what < 0) {                            ((OMAbstractLine) getGraphic()).addArrowHead(false);                        } else {                            ((OMAbstractLine) getGraphic()).addArrowHead(what);                        }                        generate(getProjection());                        repaint();                    } catch (NumberFormatException e) {                    }                }            };            boolean doArrowHead = ((OMAbstractLine) getGraphic()).hasArrowHead();            int currentDirection = OMArrowHead.ARROWHEAD_DIRECTION_FORWARD;                        if (doArrowHead) {                currentDirection = ((OMAbstractLine) getGraphic()).getArrowHead().getArrowDirectionType();            }                        int descDir = -1; // this description direction            ButtonGroup group = new ButtonGroup();            ImageIcon ii = createArrowIcon(new BasicStroke(1), 50, 20, descDir);            JRadioButtonMenuItem button = new JRadioButtonMenuItem(ii, !doArrowHead);            button.setActionCommand(String.valueOf(descDir));            group.add(button);            button.addActionListener(listener);            arrowheadMenu.add(button);            for (descDir = OMArrowHead.ARROWHEAD_DIRECTION_FORWARD; descDir <= OMArrowHead.ARROWHEAD_DIRECTION_BOTH; descDir++) {                ii = createArrowIcon(new BasicStroke(1), 50, 20, descDir);                button = new JRadioButtonMenuItem(ii, doArrowHead                        && currentDirection == descDir);                button.setActionCommand(String.valueOf(descDir));                group.add(button);                button.addActionListener(listener);                arrowheadMenu.add(button);            }        }        return arrowheadMenu;    }    /**     * Given some arrowhead parameters, 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 arrowHeadType -1 for no arrowhead, use the OMArrowHead     *        directions for other versions.     */    public ImageIcon createArrowIcon(BasicStroke stroke, int width, int height,                                     int arrowHeadType) {        BufferedImage bigImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);        Graphics2D g = (Graphics2D) bigImage.getGraphics();        int middleY = height / 2;        g.setBackground(OMColor.clear);        g.setPaint(OMColor.clear);        g.fillRect(0, 0, width, height);        g.setPaint(Color.black);        g.setStroke(stroke);        g.drawLine(0, middleY, width, middleY);        int upTip = (int) ((float) height * .25);        int downTip = (int) ((float) height * .75);        Polygon poly = null;        if (arrowHeadType == OMArrowHead.ARROWHEAD_DIRECTION_FORWARD                || arrowHeadType == OMArrowHead.ARROWHEAD_DIRECTION_BOTH) {            int rightWingX = (int) ((float) width * .75);            poly = new Polygon(new int[] { width, rightWingX, rightWingX }, new int[] {                    middleY, upTip, downTip }, 3);            g.fill(poly);            g.draw(poly); // Seems to help with rendering problem.        }        if (arrowHeadType == OMArrowHead.ARROWHEAD_DIRECTION_BACKWARD                || arrowHeadType == OMArrowHead.ARROWHEAD_DIRECTION_BOTH) {            int leftWingX = (int) ((float) width * .25);            poly = new Polygon(new int[] { 0, leftWingX, leftWingX }, new int[] {                    middleY, upTip, downTip }, 3);            g.fill(poly);            g.draw(poly); // Seems to help with rendering problem.        }        return new ImageIcon(bigImage);    }}

⌨️ 快捷键说明

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