?? jtpbutton.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 + -