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

📄 palettehelper.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/util/PaletteHelper.java,v $// $RCSfile: PaletteHelper.java,v $// $Revision: 1.2.2.1 $// $Date: 2004/10/14 18:27:46 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.util;/*  AWT & Schwing  */import java.awt.Component;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentListener;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JInternalFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ScrollPaneConstants;import javax.swing.event.InternalFrameListener;import com.bbn.openmap.Layer;/** * Helps create palette GUI widgets. */public class PaletteHelper {    /**     * This class has only static methods, so there isn't any need to     * instantiate an object.     */    private PaletteHelper() {}    /**     * Create a panel containing a checkbox.     *      * @param boxlabel the string to use for the box title     * @param buttons the list of button names     * @param checked the initial state of each checkbox item     * @param al the actionlistener to invoke for a button. the     *        actioncommand is set to a string containing the integer     *        index of the button.     * @return the JPanel the the buttons are placed in     * @see javax.swing.AbstractButton#setActionCommand(String)     * @see javax.swing.JCheckBox     */    public static JPanel createCheckbox(String boxlabel, String[] buttons,                                        boolean[] checked, ActionListener al) {        JPanel jp = createPaletteJPanel(boxlabel);        for (int j = 0; j < buttons.length; j++) {            JCheckBox jcb = new JCheckBox(buttons[j]);            jcb.setActionCommand(Integer.toString(j));//index of                                                      // checked            if (al != null)                jcb.addActionListener(al);            jcb.setSelected(checked[j]);            jp.add(jcb);        }        return jp;    }    /**     * Create a panel containing a radiobox.     *      * @param boxlabel the string to use for the box title     * @param buttons the list of button names     * @param initiallySelected the index of the initially selected     *        button. -1 for no button initially selected.     * @param al the actionlistener to invoke for a button. the     *        actioncommand is set to a string containing the integer     *        index of the button.     * @return the JPanel the the buttons are placed in     * @see javax.swing.AbstractButton#setActionCommand(String)     * @see javax.swing.ButtonGroup     */    public static JPanel createRadiobox(String boxlabel, String[] buttons,                                        int initiallySelected, ActionListener al) {        JPanel jp = createPaletteJPanel(boxlabel);        ButtonGroup buttongroup = new ButtonGroup();        for (int j = 0; j < buttons.length; j++) {            JRadioButton jrb = new JRadioButton(buttons[j]);            jrb.setActionCommand("" + j);//index in list            jp.add(jrb);            buttongroup.add(jrb);            if (al != null) {                jrb.addActionListener(al);            }            if (j == initiallySelected) {                jrb.setSelected(true);            } else {                jrb.setSelected(false);            }        }        return jp;    }    /**     * Create a panel that does horizontal layout     *      * @param title the title of the panel (null allowed)     * @return the panel that got created     */    public static JPanel createHorizontalPanel(String title) {        JPanel panel = new JPanel();        //      panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));        panel.setLayout(new GridLayout(1, 0));        if (title != null) {            panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),                    title));        } else {            panel.setBorder(BorderFactory.createEtchedBorder());        }        return panel;    }    /**     * Create a panel that does vertical layout     *      * @param title the title of the panel (null allowed)     * @return the panel that got created     */    public static JPanel createVerticalPanel(String title) {        JPanel panel = new JPanel();        //      panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));        panel.setLayout(new GridLayout(0, 1));        if (title != null) {            panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),                    title));        } else {            panel.setBorder(BorderFactory.createEtchedBorder());        }        return panel;    }    /**     * Create a panel with a border and title     *      * @param title the title of the panel (null allowed)     * @return the panel that got created     */    public static JPanel createPaletteJPanel(String title) {        JPanel panel = new JPanel();        if (title != null) {            panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),                    title));        } else {            panel.setBorder(BorderFactory.createEtchedBorder());        }        panel.setLayout(new GridLayout(0, 1));        return panel;    }    /**     * Create and add a text entry field to a JComponent.     *      * @param title the title of the frame     * @param entry the name of the entry field     * @param parent the component to add ourselves to     * @return the text field     */    public static JTextField createTextEntry(String title, String entry,                                             JComponent parent) {        JPanel pal = PaletteHelper.createHorizontalPanel(null);        JLabel label = new JLabel(title);        label.setHorizontalTextPosition(JLabel.RIGHT);        JTextField tf = new JTextField(entry);        label.setLabelFor(tf);        pal.add(label);        pal.add(tf);        parent.add(pal);        return tf;    }    /**     * Create and add a text area to a JComponent.     *      * @param title the title of the frame     * @param entry the name of the entry field     * @param parent the component to add ourselves to     * @param rows the number of rows     * @param cols the number of columns     * @return the text area     */    public static JTextArea createTextArea(String title, String entry,                                           JComponent parent, int rows, int cols) {        JPanel pal = PaletteHelper.createHorizontalPanel(null);        JLabel label = new JLabel(title);        label.setHorizontalTextPosition(JLabel.RIGHT);        JTextArea ta = new JTextArea(entry, rows, cols);        JScrollPane jsp = new JScrollPane(ta);        label.setLabelFor(jsp);        pal.add(label);        pal.add(jsp);        parent.add(pal);        return ta;    }    /**     * Get a layer's associated palette as an internal window     *      * @param layer the layer to get the palette for     * @param ifl the listener to associate with the palette     * @return the frame that the palette is in     */    public static JInternalFrame getPaletteInternalWindow(                                                          Layer layer,                                                          InternalFrameListener ifl) {        return getPaletteInternalWindow(layer.getGUI(), layer.getName()                + " Palette", ifl);    }    /**     * Get a layer's associated palette as a top-level window     *      * @param layer the layer to get the palette for     * @param cl the listener to associate with the palette     * @return the frame that the palette is in     */    public static JFrame getPaletteWindow(Layer layer, ComponentListener cl) {        Component layerGUI = getLayerGUIComponent(layer);        JPanel dismissBox = new JPanel();        dismissBox.setLayout(new BoxLayout(dismissBox, BoxLayout.X_AXIS));        dismissBox.setAlignmentX(Component.LEFT_ALIGNMENT);        dismissBox.setAlignmentY(Component.BOTTOM_ALIGNMENT);        dismissBox.add(Box.createHorizontalGlue());        JButton dismiss = new JButton("Close");        dismissBox.add(dismiss);        dismissBox.add(Box.createHorizontalGlue());        JPanel pane = new JPanel();        pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));        pane.setAlignmentX(Component.CENTER_ALIGNMENT);        pane.setAlignmentY(Component.BOTTOM_ALIGNMENT);        pane.add(layerGUI);        pane.add(dismissBox);        final JFrame frame = getPaletteWindow(pane, layer.getName()                + " Palette", cl);        dismiss.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                frame.hide();            }        });        return frame;    }    /**     * Get a Component that represents a layer's GUI.     *      * @param layer the layer to get the palette for     * @return the Component that represents the GUI for the layer.     */    public static Component getLayerGUIComponent(Layer layer) {        Component pal = layer.getGUI();        if (pal == null) {            pal = new JLabel("No Palette");        }        JPanel p = new JPanel();        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));        p.setAlignmentX(Component.LEFT_ALIGNMENT);        p.setAlignmentY(Component.BOTTOM_ALIGNMENT);        p.add(pal);        return p;    }    /**     * Get a layer's associated palette as an internal window     *      * @param gui the Component to place in the window     * @param ifl the listener to associate with the palette     * @return the frame that the palette is in     */    public static JInternalFrame getPaletteInternalWindow(                                                          Component gui,                                                          String windowName,                                                          InternalFrameListener ifl) {        JInternalFrame paletteWindow;        // create the palette's scroll pane        JScrollPane scrollPane = new JScrollPane(gui, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);        scrollPane.setAlignmentX(Component.LEFT_ALIGNMENT);        scrollPane.setAlignmentY(Component.TOP_ALIGNMENT);        // create the palette internal window        paletteWindow = new JInternalFrame(windowName, true, //resizable                true, //closable                false, //maximizable                true //iconifiable        );        // add a window listener that destroys the palette when        // the window is closed        paletteWindow.addInternalFrameListener(ifl);        paletteWindow.getContentPane().add(scrollPane);        paletteWindow.setOpaque(true);        //layout all the components        paletteWindow.pack();        return paletteWindow;    }    /**     * Get a layer's associated palette as a top-level window     *      * @param gui the Component to place in the window     * @param cl the listener to associate with the palette     * @return the frame that the palette is in     */    public static JFrame getPaletteWindow(Component gui, String windowName,                                          ComponentListener cl) {        JScrollPane scrollPane = new JScrollPane(gui, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);        scrollPane.setAlignmentX(Component.LEFT_ALIGNMENT);        scrollPane.setAlignmentY(Component.TOP_ALIGNMENT);        // create the palette internal window        JFrame paletteWindow = new JFrame(windowName);        paletteWindow.addComponentListener(cl);        paletteWindow.getContentPane().add(scrollPane);        //layout all the components        paletteWindow.pack();        return paletteWindow;    }    /**     * Get a layer's associated palette as a top-level window     *      * @param gui the Component to place in the window     * @param cl the listener to associate with the palette     * @return the frame that the palette is in     */    public static JFrame getNoScrollPaletteWindow(Component gui,                                                  String windowName,                                                  ComponentListener cl) {        JPanel pane = new JPanel();        pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));        pane.setAlignmentX(Component.CENTER_ALIGNMENT);        pane.setAlignmentY(Component.BOTTOM_ALIGNMENT);        pane.add(gui);        JFrame paletteWindow = new JFrame(windowName);        paletteWindow.addComponentListener(cl);        paletteWindow.getContentPane().add(pane);        paletteWindow.pack();        return paletteWindow;    }}

⌨️ 快捷键说明

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