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

📄 jtpbutton.java

📁 这也是我在论坛上看见的一个程序。感觉非常好
💻 JAVA
字号:
package com.sunking.tp.swing;import javax.swing.*;import java.awt.*;import java.util.*;import com.sunking.tp.framework.*;import com.sunking.tp.util.*;/** * * <p>Title: </p> * <p>Description: 按钮</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a> * @version 1.0 */public class JTPButton extends JLabel implements JTPComponent{    private static final long serialVersionUID = -3000000000000000008L;    /**     *当前是否选取     */    protected boolean isSelected = false;    /**     *连接器     */    protected Vector vecAssociator = new Vector();    /**     *被连接的组件     */    protected Vector vecButton = new Vector();    public JTPButton() {        this(null);    }    public JTPButton(String text) {        this.getInputMap().clear();        this.getActionMap().clear();        setText(text);        setOpaque(false);        setHorizontalAlignment(SwingConstants.CENTER);        setBorder(UIManager.getBorder("Button.border"));    }    /**     *设置选取状态     * @param isSelect     * @return     */    public boolean setSelect(boolean isSelect){        if(isSelected == isSelect){            return true;        }        isSelected = isSelect;        repaint();        return true;    }    /**     *判断当前是否已选取     * @return     */    public boolean isSelected(){        return isSelected;    }    /**     *添加连接器     * @param tpc     * @param associateType     */    public void addAssociator(JTPComponent tpc,int associateType){        if(tpc == this)            return;        if(!isAssociator(tpc)&&!tpc.isAssociator(this)){            vecButton.add(tpc);            vecAssociator.add(new Assoicator(tpc,associateType));        }    }    /**     *移除连接器     * @param tpc     */    public void removeAssociator(JTPComponent tpc){        for (int i = vecAssociator.size()-1; i>=0; i--) {            if(((Assoicator)vecAssociator.get(i)).getAssoicator() == tpc){                vecButton.remove(tpc);                vecAssociator.remove(i);            }        }    }    /**     * 是否已连接     * @param tpc     * @return     */    public boolean hasAssociator(JTPComponent tpc){        for (int i = vecAssociator.size()-1; i>=0; i--) {            if(((Assoicator)vecAssociator.get(i)).getAssoicator() == tpc){                return true;            }        }        return false;    }    /**     *是否已连接组件     * @param tpc     * @return     */    public boolean isAssociator(JTPComponent tpc){        return vecButton.contains(tpc);    }    /**     *取得所有连接器     * @return     */    public Assoicator[] getAssociator(){        Assoicator assocator[]=new Assoicator[vecAssociator.size()];        vecAssociator.copyInto(assocator);        return assocator;    }    /**     *复制     * @return     */    public Object clone(){        JTPButton cloneObject = new JTPButton(getText());        cloneObject.setSelect(isSelected);        cloneObject.setSize(getSize());        return cloneObject;    }    /**     *绘制按钮和其的句柄     * @param g     */    public void paint(Graphics g){        g.setColor(UIManager.getColor("Panel.background"));        int w=getWidth();        int h=getHeight();        g.fillRect(0,0,w,h);        super.paint(g);        g.setColor(Color.black);        if(isSelected){            Rectangle[]rec=getHandleRectangles();            for (int i = 0; i < rec.length; i++) {                g.drawRect(rec[i].x,rec[i].y,rec[i].width,rec[i].height);            }        }    }    /**     *取得句柄的位置     * @return     */    public Rectangle[] getHandleRectangles(){        int w=getWidth();        int h=getHeight();        return new Rectangle[]{            new Rectangle(0,h-HANDLE_SIZE-1,HANDLE_SIZE,HANDLE_SIZE),//SW_RESIZE_CURSOR 4            new Rectangle(w-HANDLE_SIZE-1,h-HANDLE_SIZE-1,HANDLE_SIZE,HANDLE_SIZE),//SE_RESIZE_CURSOR 5            new Rectangle(0,0,HANDLE_SIZE,HANDLE_SIZE), //NW_RESIZE_CURSOR 6            new Rectangle(w-HANDLE_SIZE-1,0,HANDLE_SIZE,HANDLE_SIZE),//NE_RESIZE_CURSOR 7            new Rectangle((w-HANDLE_SIZE)/2-1,0,HANDLE_SIZE,HANDLE_SIZE),  //N_RESIZE_CURSOR 8            new Rectangle((w-HANDLE_SIZE)/2-1,h-HANDLE_SIZE-1,HANDLE_SIZE,HANDLE_SIZE), // S_RESIZE_CURSOR 9            new Rectangle(0,(h-HANDLE_SIZE)/2-1,HANDLE_SIZE,HANDLE_SIZE),   // W_RESIZE_CURSOR 10            new Rectangle(w-HANDLE_SIZE-1,(h-HANDLE_SIZE)/2-1,HANDLE_SIZE,HANDLE_SIZE), //E_RESIZE_CURSOR 11        };    }    /**     *取得某点上句柄的序号     * @param p     * @return     */    public int getHandle(java.awt.Point p){        Rectangle[]rec=getHandleRectangles();        for (int i = 0; i < rec.length; i++) {            if(rec[i].contains(p))                return i;        }        return -1;    }    /**     *拖动句柄以调整按钮大小     * @param index     * @param oldRec     * @param mx     * @param my     */    public void moveHandle(int index,Rectangle oldRec,int mx,int my){        setBounds(JTPUtil.getNewBounds(index,oldRec,mx,my));    }    /**     *取得鼠标状态     * @param handleIndex     * @return     */    public Cursor getAdjustCursor(int handleIndex){        return new Cursor(handleIndex + 4);    }}

⌨️ 快捷键说明

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