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

📄 layoutcontrolpanel.java

📁 主要为一个空间信息管理系统
💻 JAVA
字号:
/* * Copyright (c) 2003 Sun Microsystems, Inc. All  Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * -Redistributions of source code must retain the above copyright *  notice, this list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduct the above copyright *  notice, this list of conditions and the following disclaimer in *  the documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that Software is not designed, licensed or intended for * use in the design, construction, operation or maintenance of any nuclear * facility. *//* * @(#)LayoutControlPanel.java	1.6 03/01/23 */package com.sunking.swing;import javax.swing.*;import javax.swing.text.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;import java.util.*;/* * The LayoutControlPanel contains controls for setting an * AbstractButton's horizontal and vertical text position and * horizontal and vertical alignment. */public class LayoutControlPanel extends JPanel implements SwingConstants {    private boolean  absolutePositions;    private DirectionPanel textPosition = null;    private DirectionPanel labelAlignment = null;    private ButtonDemo demo = null;    // private ComponentOrientChanger componentOrientChanger = null;    LayoutControlPanel(ButtonDemo demo) {        this.demo = demo;        // this.componentOrientationChanger = componentOrientationChanger;	setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));	setAlignmentX(LEFT_ALIGNMENT);	setAlignmentY(TOP_ALIGNMENT);        JLabel l;        // If SwingSet has a ComponentOrientationChanger, then include control        // for choosing between absolute and relative positioning.  This will        // only happen when we're running on JDK 1.2 or above.        //        // if(componentOrientationChanger != null ) {        //     l = new JLabel("Positioning:");        //     add(l); 	//        //    ButtonGroup group = new ButtonGroup();        //    PositioningListener positioningListener = new PositioningListener();        //    JRadioButton absolutePos = new JRadioButton("Absolute");        //    absolutePos.setMnemonic('a');        //    absolutePos.setToolTipText("Text/Content positioning is independant of line direction");        //    group.add(absolutePos);        //    absolutePos.addItemListener(positioningListener);        //    add(absolutePos);        //        //    JRadioButton relativePos = new JRadioButton("Relative");        //    relativePos.setMnemonic('r');        //    relativePos.setToolTipText("Text/Content positioning depends on line direction.");        //    group.add(relativePos);        //    relativePos.addItemListener(positioningListener);        //    add(relativePos);        //        //    add(Box.createRigidArea(demo.VGAP20));        //        //    absolutePositions = false;        //    relativePos.setSelected(true);        //        //    componentOrientationChanger.addActionListener( new OrientationChangeListener() );        //} else {            absolutePositions = true;        //}        textPosition = new DirectionPanel(true, "E", new TextPositionListener());        labelAlignment = new DirectionPanel(true, "C", new LabelAlignmentListener());        // Make sure the controls' text position and label alignment match        // the initial value of the associated direction panel.        for(int i = 0; i < demo.getCurrentControls().size(); i++) {            Component c = (Component) demo.getCurrentControls().elementAt(i);            setPosition(c, RIGHT, CENTER);            setAlignment(c,CENTER,CENTER);        }        l = new JLabel("Text Position:");        add(l);        add(textPosition);        add(Box.createRigidArea(demo.VGAP20));        l = new JLabel("Content Alignment:");        add(l);        add(labelAlignment);        add(Box.createGlue());    }    class OrientationChangeListener implements ActionListener {        public void actionPerformed( ActionEvent e ) {            if( !e.getActionCommand().equals("OrientationChanged") ){                return;            }            if( absolutePositions ){                return;            }            String currentTextPosition = textPosition.getSelection();            if( currentTextPosition.equals("NW") )                textPosition.setSelection("NE");            else if( currentTextPosition.equals("NE") )                textPosition.setSelection("NW");            else if( currentTextPosition.equals("E") )                textPosition.setSelection("W");            else if( currentTextPosition.equals("W") )                textPosition.setSelection("E");            else if( currentTextPosition.equals("SE") )                textPosition.setSelection("SW");            else if( currentTextPosition.equals("SW") )                textPosition.setSelection("SE");            String currentLabelAlignment = labelAlignment.getSelection();            if( currentLabelAlignment.equals("NW") )                labelAlignment.setSelection("NE");            else if( currentLabelAlignment.equals("NE") )                labelAlignment.setSelection("NW");            else if( currentLabelAlignment.equals("E") )                labelAlignment.setSelection("W");            else if( currentLabelAlignment.equals("W") )                labelAlignment.setSelection("E");            else if( currentLabelAlignment.equals("SE") )                labelAlignment.setSelection("SW");            else if( currentLabelAlignment.equals("SW") )                labelAlignment.setSelection("SE");        }    }    class PositioningListener implements ItemListener {	public void itemStateChanged(ItemEvent e) {	    JRadioButton rb = (JRadioButton) e.getSource();	    if(rb.getText().equals("Absolute") && rb.isSelected()) {		absolutePositions = true;	    } else if(rb.getText().equals("Relative") && rb.isSelected()) {		absolutePositions = false;	    }	    for(int i = 0; i < demo.getCurrentControls().size(); i++) {		Component c = (Component) demo.getCurrentControls().elementAt(i);                int hPos, vPos, hAlign, vAlign;                if( c instanceof AbstractButton ) {                   hPos = ((AbstractButton)c).getHorizontalTextPosition();                   vPos = ((AbstractButton)c).getVerticalTextPosition();                   hAlign = ((AbstractButton)c).getHorizontalAlignment();                   vAlign = ((AbstractButton)c).getVerticalAlignment();                } else if( c instanceof JLabel ) {                   hPos = ((JLabel)c).getHorizontalTextPosition();                   vPos = ((JLabel)c).getVerticalTextPosition();                   hAlign = ((JLabel)c).getHorizontalAlignment();                   vAlign = ((JLabel)c).getVerticalAlignment();                } else {                    continue;                }                setPosition(c, hPos, vPos);                setAlignment(c, hAlign, vAlign);	    }	    demo.invalidate();	    demo.validate();	    demo.repaint();	}    };    // Text Position Listener    class TextPositionListener implements ActionListener {	public void actionPerformed(ActionEvent e) {	    JRadioButton rb = (JRadioButton) e.getSource();	    if(!rb.isSelected()) {                return;            }            String cmd = rb.getActionCommand();            int hPos, vPos;            if(cmd.equals("NW")) {                    hPos = LEFT; vPos = TOP;            } else if(cmd.equals("N")) {                    hPos = CENTER; vPos = TOP;            } else if(cmd.equals("NE")) {                    hPos = RIGHT; vPos = TOP;            } else if(cmd.equals("W")) {                    hPos = LEFT; vPos = CENTER;            } else if(cmd.equals("C")) {                    hPos = CENTER; vPos = CENTER;            } else if(cmd.equals("E")) {                    hPos = RIGHT; vPos = CENTER;            } else if(cmd.equals("SW")) {                    hPos = LEFT; vPos = BOTTOM;            } else if(cmd.equals("S")) {                    hPos = CENTER; vPos = BOTTOM;            } else /*if(cmd.equals("SE"))*/ {                    hPos = RIGHT; vPos = BOTTOM;            }            for(int i = 0; i < demo.getCurrentControls().size(); i++) {                Component c = (Component) demo.getCurrentControls().elementAt(i);                setPosition(c, hPos, vPos);            }            demo.invalidate();            demo.validate();            demo.repaint();	}    };    // Label Alignment Listener    class LabelAlignmentListener implements  ActionListener {	public void actionPerformed(ActionEvent e) {	    JRadioButton rb = (JRadioButton) e.getSource();	    if(!rb.isSelected()) {                return;            }            String cmd = rb.getActionCommand();            int hPos, vPos;            if(cmd.equals("NW")) {                    hPos = LEFT; vPos = TOP;            } else if(cmd.equals("N")) {                    hPos = CENTER; vPos = TOP;            } else if(cmd.equals("NE")) {                    hPos = RIGHT; vPos = TOP;            } else if(cmd.equals("W")) {                    hPos = LEFT; vPos = CENTER;            } else if(cmd.equals("C")) {                    hPos = CENTER; vPos = CENTER;            } else if(cmd.equals("E")) {                    hPos = RIGHT; vPos = CENTER;            } else if(cmd.equals("SW")) {                    hPos = LEFT; vPos = BOTTOM;            } else if(cmd.equals("S")) {                    hPos = CENTER; vPos = BOTTOM;            } else /*if(cmd.equals("SE"))*/ {                    hPos = RIGHT; vPos = BOTTOM;            }            for(int i = 0; i < demo.getCurrentControls().size(); i++) {                Component c = (Component) demo.getCurrentControls().elementAt(i);                setAlignment(c,hPos,vPos);                c.invalidate();            }            demo.invalidate();            demo.validate();            demo.repaint();	}    };    // Position    void setPosition(Component c, int hPos, int vPos) {        boolean ltr = true;        ltr = c.getComponentOrientation().isLeftToRight();        if( absolutePositions ) {            if( hPos == LEADING ) {                hPos = ltr ? LEFT : RIGHT;            } else if( hPos == TRAILING ) {                hPos = ltr ? RIGHT : LEFT;            }        } else {            if( hPos == LEFT ) {                hPos = ltr ? LEADING : TRAILING;            } else if( hPos == RIGHT ) {                hPos = ltr ? TRAILING : LEADING;            }        }        if(c instanceof AbstractButton) {            AbstractButton x = (AbstractButton) c;            x.setHorizontalTextPosition(hPos);            x.setVerticalTextPosition(vPos);        } else if(c instanceof JLabel) {            JLabel x = (JLabel) c;            x.setHorizontalTextPosition(hPos);            x.setVerticalTextPosition(vPos);        }    }    void setAlignment(Component c, int hPos, int vPos) {        boolean ltr = true;        ltr = c.getComponentOrientation().isLeftToRight();        if( absolutePositions ) {            if( hPos == LEADING ) {                hPos = ltr ? LEFT : RIGHT;            } else if( hPos == TRAILING ) {                hPos = ltr ? RIGHT : LEFT;            }        } else {            if( hPos == LEFT ) {                hPos = ltr ? LEADING : TRAILING;            } else if( hPos == RIGHT ) {                hPos = ltr ? TRAILING : LEADING;            }        }        if(c instanceof AbstractButton) {            AbstractButton x = (AbstractButton) c;            x.setHorizontalAlignment(hPos);            x.setVerticalAlignment(vPos);        } else if(c instanceof JLabel) {            JLabel x = (JLabel) c;            x.setHorizontalAlignment(hPos);            x.setVerticalAlignment(vPos);        }    }}

⌨️ 快捷键说明

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