package
test;
import java.awt.BorderLayout;
/**
* 实现自定义JTable和TableModel的自动排序
*
* @author viki_station 2010-06-02
*
*/
public class TableSorter extends JFrame {
private JPanel contentPane;
private JTable table;
public static void main( String [] args) {
EventQueue . invokeLater( new Runnable() {
public void run() {
try {
TableSorter frame = new TableSorter();
frame . setVisible( true);
} catch ( Exception e) {
e . printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TableSorter() {
setDefaultCloseOperation( JFrame . EXIT_ON_CLOSE);
setBounds( 100 , 100 , 450 , 300);
contentPane = new JPanel();
contentPane . setBorder( new EmptyBorder( 5 , 5 , 5 , 5));
contentPane . setLayout( new BorderLayout( 0 , 0));
setContentPane( contentPane);
JScrollPane scrollPane = new JScrollPane();
contentPane . add( scrollPane , BorderLayout . CENTER);
table = new JTable();
List < Tbean > tlist = new ArrayList < Tbean >();
tlist . add( new Tbean( "姚明" , 2));
tlist . add( new Tbean( "王宏亮" , 8));
tlist . add( new Tbean( "巴博萨" , 5));
tlist . add( new Tbean( "科比" , 4));
tlist . add( new Tbean( "网民" , 3));
tlist . add( new Tbean( "戈壁滩" , 7));
tlist . add( new Tbean( "viki" , 1));
tlist . add( new Tbean( "偶呢人" , 6));
TableModel myTable = new TestTableModel( tlist);
table . setModel( myTable);
scrollPane . setViewportView( table);
TableRowSorter sorter = new TableRowSorter( myTable);
table . setRowSorter( sorter);
}
}
class TestTableModel extends AbstractTableModel {
private List < Tbean > content = null;
private String [] columns = new String [] { "no" , "name" , "age" };
public TestTableModel() {
content = new ArrayList < Tbean >();
}
public TestTableModel( List < Tbean > content) {
if ( content == null) {
content = new ArrayList < Tbean >();
} else {
this . content = content;
}
fireTableDataChanged();
}
@Override
public int getColumnCount() {
return columns . length;
}
@Override
public int getRowCount() {
return content . size();
}
@Override
public String getColumnName( int c) {
return columns [ c ];
}
@Override
public Object getValueAt( int r , int c) {
Tbean tb = content . get( r);
switch ( c) {
case 0 :
return r + 1;
case 1 :
return tb . getName();
case 2 :
return tb . getAge();
}
return null;
}
}
class Tbean {
private String name;
private int age;
public Tbean( String name , int age) {
this . name = name;
this . age = age;
}
public String getName() {
return name;
}
public void setName( String name) {
this . name = name;
}
public int getAge() {
return age;
}
public void setAge( int age) {
this . age = age;
}
}
import java.awt.BorderLayout;
/**
* 实现自定义JTable和TableModel的自动排序
*
* @author viki_station 2010-06-02
*
*/
public class TableSorter extends JFrame {
private JPanel contentPane;
private JTable table;
public static void main( String [] args) {
EventQueue . invokeLater( new Runnable() {
public void run() {
try {
TableSorter frame = new TableSorter();
frame . setVisible( true);
} catch ( Exception e) {
e . printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TableSorter() {
setDefaultCloseOperation( JFrame . EXIT_ON_CLOSE);
setBounds( 100 , 100 , 450 , 300);
contentPane = new JPanel();
contentPane . setBorder( new EmptyBorder( 5 , 5 , 5 , 5));
contentPane . setLayout( new BorderLayout( 0 , 0));
setContentPane( contentPane);
JScrollPane scrollPane = new JScrollPane();
contentPane . add( scrollPane , BorderLayout . CENTER);
table = new JTable();
List < Tbean > tlist = new ArrayList < Tbean >();
tlist . add( new Tbean( "姚明" , 2));
tlist . add( new Tbean( "王宏亮" , 8));
tlist . add( new Tbean( "巴博萨" , 5));
tlist . add( new Tbean( "科比" , 4));
tlist . add( new Tbean( "网民" , 3));
tlist . add( new Tbean( "戈壁滩" , 7));
tlist . add( new Tbean( "viki" , 1));
tlist . add( new Tbean( "偶呢人" , 6));
TableModel myTable = new TestTableModel( tlist);
table . setModel( myTable);
scrollPane . setViewportView( table);
TableRowSorter sorter = new TableRowSorter( myTable);
table . setRowSorter( sorter);
}
}
class TestTableModel extends AbstractTableModel {
private List < Tbean > content = null;
private String [] columns = new String [] { "no" , "name" , "age" };
public TestTableModel() {
content = new ArrayList < Tbean >();
}
public TestTableModel( List < Tbean > content) {
if ( content == null) {
content = new ArrayList < Tbean >();
} else {
this . content = content;
}
fireTableDataChanged();
}
@Override
public int getColumnCount() {
return columns . length;
}
@Override
public int getRowCount() {
return content . size();
}
@Override
public String getColumnName( int c) {
return columns [ c ];
}
@Override
public Object getValueAt( int r , int c) {
Tbean tb = content . get( r);
switch ( c) {
case 0 :
return r + 1;
case 1 :
return tb . getName();
case 2 :
return tb . getAge();
}
return null;
}
}
class Tbean {
private String name;
private int age;
public Tbean( String name , int age) {
this . name = name;
this . age = age;
}
public String getName() {
return name;
}
public void setName( String name) {
this . name = name;
}
public int getAge() {
return age;
}
public void setAge( int age) {
this . age = age;
}
}