iconlistview.java

来自「JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流」· Java 代码 · 共 60 行

JAVA
60
字号
/**
 * 
 */
package flow.graph.gui.tree;

/**
 * @author Administrator
 *
 */
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.Icon;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListModel;

/**
 * @author matt
 */
public class IconListView extends JScrollPane {
	interface Activateable {
		public void activate();	
	}
	
	JList					list;
	IconListRenderer 	ivr;

	IconListView(ListModel model) {
		init(model);
	}
	
	IconListView(ListModel model, Icon defaultIcon) {
		init(model);
		ivr.setDefaultIcon(defaultIcon);
	}
	
	void init(ListModel model) {
		list = new JList(model);
		list.setCellRenderer(ivr = new IconListRenderer());
		this.setViewportView(list);
		list.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					int index = list.locationToIndex(e.getPoint());
					handleDoubleClick(index);
				 }
			}
		});
		list.setLayoutOrientation(JList.VERTICAL_WRAP);
		list.setVisibleRowCount(-11);
	}
	
	public void handleDoubleClick(int index) {
		Object element = list.getModel().getElementAt(index);
		
		if (element instanceof Activateable) 
			((Activateable)element).activate();
	}
}

⌨️ 快捷键说明

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