<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 41,  comments - 40,  trackbacks - 0

    import java.awt.Component;

    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.JScrollPane;
    import javax.swing.DefaultCellEditor;

    import javax.swing.event.ChangeEvent;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;

    import javax.swing.table.TableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableCellRenderer;


    public class WhoFirstTest
    {
    ? public static void main( String[]args )
    ? {
    ??? final Object[][] data=new Object[][]{ { "11", new Integer( 1 ) }, { "22", new Integer( 2 ) } };

    ??? final String[] header=new String[]{ "表頭1", "表頭2" };

    ??? Table table=new Table( new BaseModel( data, header ) );

    ??? JTextField editor=new JTextField();
    ??? editor.setBorder( null );
    ??? table.setDefaultEditor( Object.class, new BaseEditor( editor ) );

    ??? table.setDefaultRenderer( Object.class, new BaseRenderer() );

    ??? table.getModel().addTableModelListener( new TableModelListener()
    ??? {
    ????? public void tableChanged( TableModelEvent e )
    ????? {
    ??????? System.out.println( "tableChanged called" );
    ??????? /*/
    ??????? System.out.println( "FirstRow="+e.getFirstRow() );
    ??????? System.out.println( "LastRow="+e.getLastRow() );
    ??????? System.out.println( "Column="+e.getColumn() );
    ??????? System.out.println( "Type="+( ( e.getType()==TableModelEvent.INSERT ) ? "Insert" : ( e.getType()==TableModelEvent.UPDATE ) ? "Update" : ( e.getType()==TableModelEvent.DELETE ) ? "Delete" : "Unknow" ) );
    ??????? /*/
    ??????? //Do CRUD for DB ...
    ??????? //*/
    ????? }
    ??? } );

    ??? JFrame frame=new JFrame( "看看給單元格賦值的順序" );
    ??? frame.setContentPane( new JScrollPane( table ) );
    ??? frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    ??? frame.pack();
    ??? frame.setVisible( true );
    ? }
    }


    class Table extends JTable
    {
    ? public Table( TableModel model )
    ? {
    ??? super( model );
    ? }

    ? public void editingStopped( ChangeEvent e )
    ? {
    ??? System.out.println( "editingStopped called" );
    ??? super.editingStopped( e );
    ? }

    ? public Component prepareRenderer( TableCellRenderer renderer, int row, int column )
    ? {
    ??? System.out.println( "prepareRenderer called" );
    ??? return super.prepareRenderer( renderer, row, column );
    ? }
    }


    class BaseModel extends AbstractTableModel
    {
    ? Object[][] data = null;
    ? Object[] header = null;

    ? public BaseModel( Object[][] data, Object[] header )
    ? {
    ??? this.data?? = data;
    ??? this.header = header;
    ? }

    ? public String getColumnName( int column )
    ? {
    ??? return header[column].toString();
    ? }

    ? public int getRowCount()
    ? {
    ??? return data.length;
    ? }

    ? public int getColumnCount()
    ? {
    ??? return header.length;
    ? }

    ? public Object getValueAt( int row, int col )
    ? {
    ??? return data[row][col];
    ? }

    ? public boolean isCellEditable( int row, int column )
    ? {
    ??? return true;
    ? }

    ? public void setValueAt( Object value, int row, int col )
    ? {
    ??? System.out.println( "setValueAt called" );
    ??? data[row][col]=value;
    ??? fireTableCellUpdated( row, col );
    ? }

    ? public void fireTableCellUpdated( int row, int column )
    ? {
    ??? super.fireTableCellUpdated( row, column );
    ??? System.out.println( "fireTableCellUpdated called" );
    ? }

    ? public void fireTableChanged( TableModelEvent e )
    ? {
    ??? super.fireTableChanged( e );
    ??? System.out.println( "fireTableChanged called" );
    ? }
    }


    class BaseRenderer extends DefaultTableCellRenderer
    {
    ? public BaseRenderer()
    ? {
    ??? super();
    ? }

    ? public Component getTableCellRendererComponent( JTable table,
    ????????????????????????????????????????????????? Object value,
    ????????????????????????????????????????????????? boolean isSelected,
    ????????????????????????????????????????????????? boolean hasFocus,
    ????????????????????????????????????????????????? int row,
    ????????????????????????????????????????????????? int column )
    ? {
    ??? System.out.println( "BaseRenderer called" );

    ??? setText( ( value==null ) ? "" : value.toString() );

    ??? return this;
    ? }
    }


    class BaseEditor extends DefaultCellEditor
    {
    ? public BaseEditor( JTextField editor )
    ? {
    ??? super( editor );
    ? }

    ? public boolean stopCellEditing()
    ? {
    ??? System.out.println( "stopCellEditing called" );

    ??? String value=(String)getCellEditorValue();

    ??? try{ Integer.parseInt( value );
    ?????? }
    ??? catch( NumberFormatException e )
    ???????? {
    ?????????? this.editorComponent.requestFocus();
    ?????????? return false;
    ???????? }

    ??? return super.stopCellEditing();
    ? }
    }

    posted on 2007-07-03 04:14 NeedJava 閱讀(1145) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲乱码中文字幕综合234| 亚洲乱码无人区卡1卡2卡3| 亚洲第一福利网站在线观看| 24小时日本电影免费看| 四虎影视无码永久免费| 菠萝菠萝蜜在线免费视频| 亚洲日韩一区二区一无码| 亚洲综合区图片小说区| 亚洲色大成网站WWW久久九九| 四虎影视永久免费观看地址| 最新免费jlzzjlzz在线播放| 日本不卡免费新一区二区三区| 久久综合亚洲色hezyo| 亚洲五月综合网色九月色| 久久久亚洲欧洲日产国码aⅴ| 国内精品99亚洲免费高清| 国产美女无遮挡免费网站| 免费在线观看的网站| 麻豆视频免费播放| 18禁成人网站免费观看| 久久久久免费看黄a级试看| 特级做A爰片毛片免费看无码| a免费毛片在线播放| 成在线人直播免费视频| 一级毛片完整版免费播放一区| 国产精品久久亚洲一区二区| 亚洲av成人中文无码专区| 亚洲美国产亚洲AV| 亚洲高清一区二区三区电影 | 久久亚洲AV成人无码软件| 中国在线观看免费高清完整版 | 亚洲精品国产综合久久一线| 国产一级理论免费版| 国产免费牲交视频| 亚洲AV无码成人精品区大在线| 亚洲&#228;v永久无码精品天堂久久| 免费无码又爽又高潮视频| 久艹视频在线免费观看| 先锋影音资源片午夜在线观看视频免费播放 | 成人无码精品1区2区3区免费看| 亚洲а∨天堂久久精品9966|