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

📄 singleselectionlist.java

📁 FuncPlotter is a combined Java application and applet for displaying two-dimensional plots of explic
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    public void setExtraWidth( int extraWidth )    {        if ( this.extraWidth != extraWidth )        {            this.extraWidth = extraWidth;            resize( );            repaint( );        }    }    //------------------------------------------------------------------    public void setSelectedIndex( int index )    {        if ( index != selectedIndex )            forceSelectedIndex( index );    }    //------------------------------------------------------------------    public void setViewport( JViewport viewport )    {        this.viewport = viewport;    }    //------------------------------------------------------------------    public void setModel( Model<E> model )    {        this.model = model;        resizeAndRedraw( );    }    //------------------------------------------------------------------    public void setElement( int index,                            E   element )    {        model.setElement( index, element );        redrawElements( index, 1 );    }    //------------------------------------------------------------------    public void setElements( E[] elements )    {        if ( model instanceof DefaultModel )            ((DefaultModel<E>)model).setElements( elements );        else        {            while ( getNumElements( ) > 0 )                model.removeElement( getNumElements( ) - 1 );            if ( elements != null )            {                for ( E element : elements )                    model.addElement( getNumElements( ), element );            }        }        resizeAndRedraw( );    }    //------------------------------------------------------------------    public void setElements( List<E> elements )    {        if ( model instanceof DefaultModel )            ((DefaultModel<E>)model).setElements( elements );        else        {            while ( getNumElements( ) > 0 )                model.removeElement( getNumElements( ) - 1 );            if ( elements != null )            {                for ( E element : elements )                    model.addElement( getNumElements( ), element );            }        }        resizeAndRedraw( );    }    //------------------------------------------------------------------    public void addElement( E element )    {        addElement( getNumElements( ), element );    }    //------------------------------------------------------------------    public void addElement( int index,                            E   element )    {        model.addElement( index, element );        resize( );        forceSelectedIndex( index );    }    //------------------------------------------------------------------    public void removeElement( int index )    {        int length = getNumElements( ) - index;        model.removeElement( index );        resize( );        redrawElements( index, length );        if ( selectedIndex >= getNumElements( ) )            forceSelectedIndex( getNumElements( ) - 1 );    }    //------------------------------------------------------------------    public void moveElement( int fromIndex,                             int toIndex )    {        if ( toIndex > fromIndex )            --toIndex;        if ( toIndex != fromIndex)        {            model.addElement( toIndex, model.removeElement( fromIndex ) );            redrawElements( Math.min( fromIndex, toIndex ), Math.abs( fromIndex - toIndex ) + 1 );        }        forceSelectedIndex( toIndex );    }    //------------------------------------------------------------------    public void snapViewPosition( )    {        if ( viewport != null )        {            Point viewPosition = viewport.getViewPosition( );            int y = Math.max( 0, viewPosition.y ) / rowHeight * rowHeight;            if ( viewPosition.y != y )            {                viewPosition.y = y;                viewport.setViewPosition( viewPosition );            }        }    }    //------------------------------------------------------------------    public void addActionListener( ActionListener listener )    {        actionListeners.add( listener );    }    //------------------------------------------------------------------    public void removeActionListener( ActionListener listener )    {        actionListeners.remove( listener );    }    //------------------------------------------------------------------    public void addListSelectionListener( ListSelectionListener listener )    {        selectionListeners.add( listener );    }    //------------------------------------------------------------------    public void removeListSelectionListener( ListSelectionListener listener )    {        selectionListeners.remove( listener );    }    //------------------------------------------------------------------    protected void fireActionPerformed( String command )    {        ActionEvent event = new ActionEvent( this, ActionEvent.ACTION_PERFORMED, command );        for ( int i = actionListeners.size( ) - 1; i >= 0; --i )            actionListeners.get( i ).actionPerformed( event );    }    //------------------------------------------------------------------    protected void fireValueChanged( )    {        ListSelectionEvent event = new ListSelectionEvent( this, selectedIndex, selectedIndex, false );        for ( int i = selectionListeners.size( ) - 1; i >= 0; --i )            selectionListeners.get( i ).valueChanged( event );    }    //------------------------------------------------------------------    protected void drawElement( Graphics gr,                                int      index )    {        String str = getElement( index ).toString( );        FontMetrics fontMetrics = gr.getFontMetrics( );        int x = getComponentOrientation( ).isLeftToRight( )                                        ? horizontalMargin                                        : getWidth( ) - horizontalMargin - fontMetrics.stringWidth( str );        int y = index * rowHeight + (rowHeight - fontMetrics.getHeight( )) / 2 + fontMetrics.getAscent( );        gr.setColor( getForeground( ) );        gr.drawString( str, x, y );    }    //------------------------------------------------------------------    protected void resize( )    {        if ( viewport != null )            viewport.setViewSize( getPreferredSize( ) );        revalidate( );    }    //------------------------------------------------------------------    protected void resizeAndRedraw( )    {        resize( );        selectedIndex = -1;        repaint( );        forceSelectedIndex( (getNumElements( ) > 0) ? 0 : -1 );    }    //------------------------------------------------------------------    protected void forceSelectedIndex( int index )    {        // Remove current selection        if ( selectedIndex >= 0 )        {            int oldSelectedIndex = selectedIndex;            selectedIndex = -1;            redrawElements( oldSelectedIndex, 1 );        }        // Set selected index        if ( (index >= -1) && (index < getNumElements( )) )        {            selectedIndex = index;            makeSelectionViewable( );            if ( selectedIndex >= 0 )                redrawElements( selectedIndex, 1 );            fireValueChanged( );        }    }    //------------------------------------------------------------------    private void redrawElements( int index,                                 int length )    {        repaint( 0, index * rowHeight, getWidth( ), length * rowHeight );    }    //------------------------------------------------------------------    private void setDragIndex( int index )    {        // Erase old drag bar        if ( dragY != null )        {            dragIndex = -1;            repaint( 0, dragY.intValue( ), getWidth( ), DRAG_BAR_HEIGHT );            dragY = null;        }        // Draw new drag bar        if ( index >= 0 )        {            dragIndex = index;            int y = index * rowHeight - DRAG_BAR_HEIGHT / 2;            repaint( 0, y, getWidth( ), DRAG_BAR_HEIGHT );            dragY = new Integer( y );        }    }    //------------------------------------------------------------------    private void incrementSelectedIndex( int increment )    {        int index = (selectedIndex < 0) ? 0 : selectedIndex;        setSelectedIndex( Math.min( Math.max( 0, index + increment ), getNumElements( ) - 1 ) );    }    //------------------------------------------------------------------    private void makeSelectionViewable( )    {        if ( (viewport != null) && (selectedIndex >= 0) )        {            Point viewPosition = viewport.getViewPosition( );            int y = viewPosition.y;            int startIndex = y / rowHeight;            if ( selectedIndex < startIndex )                y = selectedIndex * rowHeight;            else            {                if ( selectedIndex >= startIndex + viewableRows )                    y = Math.max( 0, selectedIndex - viewableRows + 1 ) * rowHeight;            }            if ( viewPosition.y != y )            {                viewPosition.y = y;                viewport.setViewPosition( viewPosition );            }        }    }    //------------------------------------------------------------------    private void incrementViewY( int deltaY )    {        if ( deltaY != 0 )            viewport.setViewPosition( new Point( viewport.getViewPosition( ).x,                                                 viewport.getViewPosition( ).y + deltaY ) );    }    //------------------------------------------------------------------    private void doSelectUpUnit( )    {        incrementSelectedIndex( -UNIT_INCREMENT_ROWS );    }    //------------------------------------------------------------------    private void doSelectDownUnit( )    {        incrementSelectedIndex( UNIT_INCREMENT_ROWS );    }    //------------------------------------------------------------------    private void doSelectUpBlock( )    {        incrementSelectedIndex( -BLOCK_INCREMENT_ROWS );    }    //------------------------------------------------------------------    private void doSelectDownBlock( )    {        incrementSelectedIndex( BLOCK_INCREMENT_ROWS );    }    //------------------------------------------------------------------    private void doSelectUpMax( )    {        setSelectedIndex( 0 );    }    //------------------------------------------------------------------    private void doSelectDownMax( )    {        setSelectedIndex( getNumElements( ) - 1 );    }    //------------------------------------------------------------------    private void doScrollUpUnit( )    {        if ( viewport != null )            incrementViewY( -getScrollableUnitIncrement( viewport.getViewRect( ), SwingConstants.VERTICAL,                                                         -1 ) );    }    //------------------------------------------------------------------    private void doScrollDownUnit( )    {        if ( viewport != null )            incrementViewY( getScrollableUnitIncrement( viewport.getViewRect( ), SwingConstants.VERTICAL,                                                        1 ) );    }    //------------------------------------------------------------------    private void doEditElement( )    {        if ( selectedIndex >= 0 )            fireActionPerformed( Command.EDIT_ELEMENT );    }    //------------------------------------------------------------------    private void doDeleteElement( )    {        if ( selectedIndex >= 0 )            fireActionPerformed( Command.DELETE_ELEMENT );    }    //------------------------------------------------------------------    private void doDeleteExElement( )    {        if ( selectedIndex >= 0 )            fireActionPerformed( Command.DELETE_EX_ELEMENT );    }    //------------------------------------------------------------------//////////////////////////////////////////////////////////////////////////  Instance variables////////////////////////////////////////////////////////////////////////    private int                         columns;    private int                         viewableRows;    private int                         columnWidth;    private int                         rowHeight;    private int                         horizontalMargin;    private int                         extraWidth;    private int                         selectedIndex;    private int                         dragIndex;    private int                         dragStartIndex;    private int                         dragEndIndex;    private Integer                     dragY;    private JViewport                   viewport;    private Model<E>                    model;    private List<ActionListener>        actionListeners;    private List<ListSelectionListener> selectionListeners;}//----------------------------------------------------------------------

⌨️ 快捷键说明

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