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

📄 jtpbutton.java

📁 java画图源码
💻 JAVA
字号:
package com.sunking.tp.swing;
import java.util.*;

import java.awt.*;
import javax.swing.*;

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);
        //加了下面这句语句在XP下不能正常保存,所以删除了
//        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 + -