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

📄 selectbutton.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 JAVA
字号:
/**
 * 
 */
package flow.graph.gui.tools;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Point2D;
import java.util.Enumeration;

import javax.swing.ButtonGroup;
import javax.swing.DefaultButtonModel;
import javax.swing.Icon;

/**
 * @author Administrator
 *
 */
public class SelectButton extends BaseButton{
	private boolean selected = false;
	
	public SelectButton(Icon icon){
		this("", icon);
	}
	
	public SelectButton(String value){
		this(value, null);
	}
	
	public void actionPerformed(Point2D point){
		//System.out.println("actionPerformed...");
	}
	
	public Object performedAction(Point2D point){
		return null;
	}
	
	private void refreshGroup(){
		//SelectButton sb = (SelectButton)e.getSource();

		//refresh other buttons to normal status
		DefaultButtonModel model = (DefaultButtonModel)getModel();
		if(model.getGroup() != null){
			JButtonGroup group = (JButtonGroup)model.getGroup();
			Enumeration buttons = group.getElements();
			while(buttons.hasMoreElements()){
				SelectButton select = (SelectButton)buttons.nextElement();
				//System.out.println("1------"+selected);
				if(!select.equals(this)){
					//System.out.println("2------"+selected);
					select.setSelected(false);
					/*
					//select.fireStateChanged();
					MouseListener[] m = select.getMouseListeners();
					for(int i=0;i<m.length;i++){
						if(m[i].toString().indexOf("SelectButton") > 0){
							//m[i].mouseReleased(e);
							m[i].mouseExited(e);
						}
					}
					*/
					select.setBorder(null);
				}
				else{
					//System.out.println("3------"+selected);
					group.setSelected(this, selected);
				}
			}
		}
	}
	
	
	public void doClick(Point2D point){
		//refresh other buttons to normal status
		DefaultButtonModel model = (DefaultButtonModel)getModel();
		if(model.getGroup() != null){
			JButtonGroup group = (JButtonGroup)model.getGroup();
			Enumeration buttons = group.getElements();
			while(buttons.hasMoreElements()){
				SelectButton select = (SelectButton)buttons.nextElement();
				if(!select.equals(this)){
					select.setSelected(false);
					select.setBorder(null);
					/*
					//select.fireStateChanged();
					MouseListener[] m = select.getMouseListeners();
					for(int i=0;i<m.length;i++){
						if(m[i].toString().indexOf("SelectButton") > 0){
							//m[i].mouseReleased(e);
							//m[i].mouseExited(e);
						}
					}*/
				}
				else{
					if(point != null)
						actionPerformed(point);
					select.setSelected(true);
					group.setSelected(this, true);
					//select.fireStateChanged();
					/*
					MouseListener[] m = select.getMouseListeners();
					for(int i=0;i<m.length;i++){
						if(m[i].toString().indexOf("SelectButton") > 0){
							//m[i].mouseReleased(e);
							//m[i].mouseClicked(e);
						}
					}*/
					select.setBorder(pressStatus);
				}
			}
			//updateUI();
		}
	}
	
	public void unSelect(){
		setSelected(false);
		setBorder(null);
	}
	
	public SelectButton(String name, Icon icon){
		super(name, icon);
		addMouseListener(new MouseListener(){
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				//System.out.println("Click..."+isSelected());
				selected = !isSelected();
				refreshGroup();
			}

			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				//System.out.println("Pressed..."+isSelected());
				if(isEnabled() == true){
					setBorder(pressStatus);
				}
			}

			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				//System.out.println("Released..."+isSelected());
				if(isEnabled() == true){
					SelectButton sb = (SelectButton)e.getSource();
					if(sb.contains(e.getPoint())){
						if(selected == false){
							setBorder(pressStatus);
						}
						else{
							setBorder(enterStatus);
						}
					}
				}
				
			}

			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				//System.out.println("Entered..."+isSelected());
				if(isEnabled() == true){
					if(selected == false)
						setBorder(enterStatus);
					else
						setBorder(pressStatus);
				}
			}

			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				//System.out.println("Exited..."+isSelected());
				if(isEnabled() == true){
					if(selected == true)
						setBorder(pressStatus);
					else
						setBorder(null);	
				}
			}}
		);
	}

	public void setSelected(boolean flag){
		selected = flag;
		//updateUI();
	}
	
	public boolean isSelected(){
		return selected;
	}
}

⌨️ 快捷键说明

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