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

📄 list.java

📁 kaffe是一个java虚拟机的源代码。里面包含了一些java例程和标准的java包。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package java.awt;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.util.BitSet;import java.util.Vector;/** * class List - * * Copyright (c) 1998 *      Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution * of this file. */public class List  extends Container  implements ItemSelectable{	final private static long serialVersionUID = -3304312411574666869L;	ActionListener aListener;	ItemListener iListener;	ItemPane ip = new ItemPane();	Vector selections = new Vector( 1);	boolean multipleMode;	boolean selMouse;	int sel = -1;	BitSet multiSel;	int nSel;class ItemPane  extends RowCanvas  implements MouseListener, MouseMotionListener, KeyListener{	StringBuffer lnsBuf = new StringBuffer();	int idxFlyOver = -1;public ItemPane () {	this.addKeyListener( this);	this.addMouseListener( this);	this.addMouseMotionListener( this);	this.addFocusListener( this);}public void keyPressed( KeyEvent e) {	int nIdx;	int mods = e.getModifiers();	if ( this.parent.keyListener != null ){		// give our parent a chance to intercept keystrokes		// check for keyListeners first, it's a rare case		redirectKeyEvent( e);	}	//do not consume unused key for HotKeyHandler	if ( mods != 0 )		return;	selMouse = false;	switch ( e.getKeyCode() ) {		case KeyEvent.VK_DOWN:			nIdx = getSelectedIndex() + 1;			this.makeVisible( nIdx);			selectEvent( nIdx, true);			break;		case KeyEvent.VK_UP:			nIdx = getSelectedIndex() - 1;			this.makeVisible( nIdx);			selectEvent( nIdx, true);			break;		case KeyEvent.VK_ENTER:			notifyAction();			break;		case KeyEvent.VK_PAGE_UP:			this.makeVisible( first - getVisibleRows());			break;		case KeyEvent.VK_PAGE_DOWN:			this.makeVisible( first + 2 * getVisibleRows() - 1);			break;		case KeyEvent.VK_ESCAPE:			clearSelections();			this.repaint();			break;		default:		  return;	}	e.consume();}public void keyReleased( KeyEvent e) {	if ( this.parent.keyListener != null ){		// check for keyListeners first, it's a rare case		redirectKeyEvent( e);		e.consume();	}}public void keyTyped( KeyEvent e) {	int mods = e.getModifiers();	if ( (mods == 0) || (mods == KeyEvent.SHIFT_MASK ) ) {		letterNav( e.getKeyChar(), e.isShiftDown() );		e.consume();	}	if ( this.parent.keyListener != null ){		// check for keyListeners first, it's a rare case		redirectKeyEvent( e);	}}void letterNav( char c, boolean acc) {	int rs = rows.size();	if ( !acc )		lnsBuf.setLength( 0);	lnsBuf.append( c);	for ( int i=0; i<rs; i++) {		String s = (String)rows.elementAt( i);		if ( s.regionMatches( true, 0, lnsBuf.toString(), 0, lnsBuf.length() ) ){			selectEvent( i, true);			return;		}	}}int maxRowWidth() {	int rs = rows.size();	int iw, mw = 0;	for ( int i=0; i<rs; i++ ) {		iw = fm.stringWidth( (String)rows.elementAt( i) );		if ( iw > mw )			mw = iw;	}	return mw;}public void mouseClicked( MouseEvent e) {	if ( e.getClickCount() == 1) {		int idx = getRowIdx( e.getY() );		if ( idx > -1 ) {			selMouse = true;			if ( isIndexSelected( idx) ) {				if ( multipleMode )					deselectElement( idx, true, true);			}			else {				selectEvent( idx, true);			}		}	}	else		notifyAction();	redirectMouseEvent( e);}public void mouseDragged( MouseEvent e) {	if ( this.parent.motionListener != null ){		// unlikely, check listener first		redirectMotionEvent( e);	}}public void mouseEntered( MouseEvent e) {	redirectMouseEvent( e);}public void mouseExited( MouseEvent e) {	if ( rgr != null ) // otherwise we aren't visible anymore		updateFlyOver( -1);	redirectMouseEvent( e);}public void mouseMoved( MouseEvent e) {	int row = getRowIdx( e.getY() );	if ( row != idxFlyOver ) {		updateFlyOver( row );	}	if ( this.parent.motionListener != null ){		// unlikely, check listener first		redirectMotionEvent( e);	}}public void mousePressed( MouseEvent e) {	if ( AWTEvent.keyTgt != ip )		ip.requestFocus();	if ( e.isPopupTrigger() )		this.triggerPopup( e.getX(), e.getY());	redirectMouseEvent( e);}public void mouseReleased( MouseEvent e) {	redirectMouseEvent( e);}public void paint ( Graphics g ) {	repaintRows( g, first, getVisibleRows() );	this.kaffePaintBorder( g);}void repaintItem( Graphics g, int idx) {	if ( g == null)		return;	int d = BORDER_WIDTH;	int x0 = xOffs + d +2;	int y0 = d + ( idx - first) * rowHeight;	int y1 = y0 + rowHeight - (rowHeight - fm.getHeight())/2 - fm.getDescent();	String s = (String)rows.elementAt( idx);	if ( isIndexSelected( idx) ) {		g.setColor( Defaults.ListSelBgClr);		g.fill3DRect( d, y0, this.width-2*d, rowHeight, true);		g.setColor( Defaults.ListSelTxtClr);	}	else if ( idx == idxFlyOver ) {		g.setColor( Defaults.ListFlyOverBgClr);		g.fill3DRect( d, y0, this.width-2*d, rowHeight, !Defaults.ListFlyOverInset);		g.setColor( Defaults.ListFlyOverTxtClr);	}	else {		g.setColor( this.bgClr );		g.fillRect( d, y0, this.width-2*d, rowHeight);		g.setColor( this.fgClr );	}	g.drawString( s, x0, y1);}void repaintItem( int idx) {	if ( rgr != null )		repaintItem( rgr, idx);}void repaintRow( Graphics g, int idx) {	repaintItem( g, idx);}public void setFont( Font fnt) {	fm = this.getFontMetrics( fnt);	rowHeight = fm.getHeight() + 1;	super.setFont( fnt);}void updateFlyOver( int newIdx) {	int lov = idxFlyOver;	idxFlyOver = newIdx;	if ( lov == newIdx )		return;	int rs = rows.size();	if ( (lov > -1) && (lov < rs) )		repaintItem( lov);	if ( (newIdx > -1) && (newIdx < rs) )		repaintItem( newIdx);}}public List () {	this( 4, false);}public List ( int rows) {	this( rows, false);}public List ( int rows, boolean multipleMode) {	setMultipleMode( multipleMode);	setLayout( null);	setForeground( Defaults.ListTxtClr);	setBackground( Defaults.ListBgClr);	setFont( Defaults.ListFont);	add( ip.vScroll = new Scrollbar( Scrollbar.VERTICAL,0,0,0,0));	add( ip.hScroll = new Scrollbar( Scrollbar.HORIZONTAL,0,0,0,0));	add( ip);	ip.setListeners();}public void add ( PopupMenu m) {	ip.add( m);}public void add ( String item) {	addElement( item, -1);}public synchronized void add ( String item, int index) {	addElement( item, index);}public synchronized void addActionListener ( ActionListener l) {	aListener = AWTEventMulticaster.add( aListener, l);}void addElement ( String item, int index) {	if ( index == -1 )		ip.rows.addElement( item);	else		ip.rows.insertElementAt( item, index);	ip.updateScrolls();	if ( isShowing() )		ip.repaint();}public void addItem ( String item) {	addElement( item, -1);}public synchronized void addItem ( String item, int index) {	addElement( item, index);}public synchronized void addItemListener ( ItemListener l) {	iListener = AWTEventMulticaster.add( iListener, l);}/** * @deprecated */public boolean allowsMultipleSelections() {	return multipleMode;}/** * @deprecated */public synchronized void clear() {	clearSelections();	ip.rows.removeAllElements();	ip.first = 0;	ip.updateScrolls();	ip.repaint();}void clearSelection ( int index ) {	if ( sel == index )		sel = -1;	if ( multipleMode ) {		if (multiSel.get(index)) {			multiSel.clear( index);			nSel--;		}	}}void clearSelections () {	sel = -1;	nSel = 0;	if ( multipleMode ){		nSel = 0;		multiSel = new BitSet( ip.rows.size());	}}/** * @deprecated */public int countItems() {	return ip.rows.size();}public synchronized void delItem ( int index) {	removeElement( index);}/** * @deprecated */public synchronized void delItems ( int start, int end ) {	for (int i = end; i >= start; i--) {		remove(i);	}}public synchronized void deselect ( int index) {	deselectElement( index, true, false);}void deselectElement ( int index, boolean repaint, boolean fire) {	try {		Object item = ip.rows.elementAt( index);		clearSelection( index);		if ( repaint)			ip.repaintRows( index, 1);		if (fire) {			notifyItem( new Integer(index), ItemEvent.DESELECTED);		}	}	catch ( Exception e) {}}public void doLayout () {	ip.innerLayout();}public Color getBackground () {	// some anomaly, we forward colors to our ip, so we should return its colors	// for consistencies sake

⌨️ 快捷键说明

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