java swing JTable 如何在行数据前面增加数字,如下图 左右默认有数字,按照从小到大的顺序往下排。JavaSwingjtable行业数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的静态代理hack:import javax.swing.JTable;import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;public class LineNumber { public static void decorate(JTable table) { if( table == null ) throw new NullPointerException("table is null."); TableModel model = table.getModel(); if( !(model instanceof LineNumberTableModel) ) table.setModel(new LineNumberTableModel(model)); } private static class LineNumberTableModel implements TableModel { private final TableModel model; private LineNumberTableModel(TableModel model) { this.model = model; } @Override public int getRowCount() { return model.getRowCount(); } @Override public int getColumnCount() { return 1 + model.getColumnCount(); } @Override public String getColumnName(int columnIndex) { return columnIndex == 0 ? "Row" : model.getColumnName(columnIndex - 1); } @Override public Class<?> getColumnClass(int columnIndex) { return columnIndex == 0 ? Integer.class : model.getColumnClass(columnIndex - 1); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == 0 ? false : model.isCellEditable(rowIndex, columnIndex - 1); } @Override public Object getValueAt(int rowIndex, int columnIndex) { return columnIndex == 0 ? rowIndex + 1 : model.getValueAt(rowIndex, columnIndex - 1); } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if( rowIndex == 0 ) throw new UnsupportedOperationException("Cannot modify line number."); else model.setValueAt(aValue, rowIndex, columnIndex - 1); } @Override public void addTableModelListener(TableModelListener l) { model.addTableModelListener(l); } @Override public void removeTableModelListener(TableModelListener l) { model.removeTableModelListener(l); } }}你要加行号的 JTable 传进去调用就行了: LineNumber.decorate(table); 可以,但是那个不能简单的hack,因为复选框有逻辑意义,需要你自己的 model 本身支持,也就是说你每一行背后的数据模型本身支持一种 “是否选中” 的状态 io什么时候乱码问题 急!!!如何清楚session???在线。。。 Java运行命令的问答题? 随机显示四个button,怎么不行啊? java中如何画点?在哪个类里?谢谢 while (++b > 0 ); 请问一个JPopupMenu的问题 使用什么方法来准确定位控件?????????????????????????? 我寻找到了一个全中文的Visual Age for Java 3.1(帮助也很大,很全面,全中文,包括jdk) 急问关于applet中汉字显示的问题! 请问这几个类怎么导不进来,也找不到?纠结了几天,会的进来帮帮忙 两到基础题,有点忘了,求指教。
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;public class LineNumber {
public static void decorate(JTable table) {
if( table == null )
throw new NullPointerException("table is null.");
TableModel model = table.getModel();
if( !(model instanceof LineNumberTableModel) )
table.setModel(new LineNumberTableModel(model));
}
private static class LineNumberTableModel implements TableModel {
private final TableModel model;
private LineNumberTableModel(TableModel model) {
this.model = model;
}
@Override
public int getRowCount() {
return model.getRowCount();
} @Override
public int getColumnCount() {
return 1 + model.getColumnCount();
} @Override
public String getColumnName(int columnIndex) {
return columnIndex == 0 ? "Row" : model.getColumnName(columnIndex - 1);
} @Override
public Class<?> getColumnClass(int columnIndex) {
return columnIndex == 0 ? Integer.class : model.getColumnClass(columnIndex - 1);
} @Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == 0 ? false : model.isCellEditable(rowIndex, columnIndex - 1);
} @Override
public Object getValueAt(int rowIndex, int columnIndex) {
return columnIndex == 0 ? rowIndex + 1 : model.getValueAt(rowIndex, columnIndex - 1);
} @Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if( rowIndex == 0 )
throw new UnsupportedOperationException("Cannot modify line number.");
else
model.setValueAt(aValue, rowIndex, columnIndex - 1);
} @Override
public void addTableModelListener(TableModelListener l) {
model.addTableModelListener(l);
} @Override
public void removeTableModelListener(TableModelListener l) {
model.removeTableModelListener(l);
}
}
}
你要加行号的 JTable 传进去调用就行了: LineNumber.decorate(table);
可以,但是那个不能简单的hack,因为复选框有逻辑意义,需要你自己的 model 本身支持,也就是说你每一行背后的数据模型本身支持一种 “是否选中” 的状态