1,
ColorRenderer cellRenderer = new ColorRenderer()
int length = jdbTable1.columnModel.getColumnCount();
for(int i=0;i<length;i++){
TableColumn column = columnModel.getColumn(i);
column.setCellRenderer(cellRenderer);
}2,我做过类似的,用
getTableHeader().addMouseListener
添加一个鼠标事件Listener
当mouseClicked的时候,给这一列的表头加上一个三角就可以了
然后对Table中的数据按照这一列排序
ColorRenderer cellRenderer = new ColorRenderer()
int length = jdbTable1.columnModel.getColumnCount();
for(int i=0;i<length;i++){
TableColumn column = columnModel.getColumn(i);
column.setCellRenderer(cellRenderer);
}2,我做过类似的,用
getTableHeader().addMouseListener
添加一个鼠标事件Listener
当mouseClicked的时候,给这一列的表头加上一个三角就可以了
然后对Table中的数据按照这一列排序
解决方案 »
- Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: empty String
- 【求助】为什么宽带连接后多播的recieve就阻塞呢
- !!~java.lang.ClassNotFoundException:com.microsoft.jdbc.sqlserver.SQLServerDriver
- java多线程读文件的困惑
- 关于tld自定义标签的使用
- 在线等,请各位大虾帮帮忙,谢谢
- 求助:java.lang.NoClassRefFoundError
- 我的浏览器不支持java怎么办?
- 这段代码为什么会这样输出?
- visualage for java3.0 entry edition 的帮助无法安装
- 在线等JBuilder的书籍
- 关于 JAVA与图象的问题!
1、这里的ColorRenderer,columnModel是指什么呀!能否再详细点!
2、加三角标志的问题能否给出代码,我急!
谢谢!
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;public class SortableTable extends JTable{
protected int sortedColumn = -1;
protected boolean sortType; //true asc, false desc public void init(){ this.getTableHeader().setDefaultRenderer(new sortTableHeaderRenderer(this.getTableHeader().getDefaultRenderer()));
this.getTableHeader().addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(SwingUtilities.isLeftMouseButton(e) && e.getClickCount() > 1){
JTableHeader header = getTableHeader();
int index = getModelIndex(header.getColumnModel().getColumnIndexAtX(e.getX()));
if(index == sortedColumn) sortType = !sortType;
sort(index);
sortedColumn = index;
repaint();
}
}
});
} public void sort(int column){
} public int getModelIndex(int col){
if(col >= 0 && col < getColumnModel().getColumnCount()){
TableColumn column = getColumnModel().getColumn(col);
return column.getModelIndex();
}
return -1;
} public int getSortedColumn(){
return sortedColumn;
} public void setSortedColumn(int sortedColumn){
this.sortedColumn =sortedColumn;
}
public SortableTable(){
init();
}
public SortableTable(TableModel tm){
super(tm);
init();
}
private class sortTableHeaderRenderer
extends javax.swing.table.DefaultTableCellRenderer {
TableCellRenderer renderer;
public sortTableHeaderRenderer(TableCellRenderer renderer) {
this.renderer = renderer;
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
int index = getModelIndex(column);
String text = sortedColumn==index? (sortType ? "\u25bd":"\u25b3") : "";
return renderer.getTableCellRendererComponent(table,text+value,isSelected,
hasFocus,row,column);
}
}
public static void main(String args[]){
JFrame frame = new JFrame();
TableModel tm = new AbstractTableModel(){ public int getRowCount(){
return 0;
}
public int getColumnCount(){
return 5;
}
public String getColumnName(int columnIndex){
return "Column"+columnIndex;
}
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
public Object getValueAt(int rowIndex, int columnIndex){
return null;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex){}
};
SortableTable table = new SortableTable();
table.setModel(tm);
frame.getContentPane().add(new JScrollPane(table));
frame.setSize(500,400);
frame.setVisible(true);
}}
}
中加上你的排序代码