我有很多JTable,但他们使用另一个公共类填充数据。我已经通过它的构造函数传递了整个JTable。确实很好。现在由于某种原因,我需要覆盖一些函数...所以我会在填充数据之前做到....
@Override
public boolean getScrollableTracksViewportWidth() {
}
@Override
public void doLayout() {
}
@Override
public void columnMarginChanged(ChangeEvent e) {
}
但我的JTable对象已经创建,已经通过了...我不能像这样覆盖......
new JTable(1,5){
@Override
public void columnMarginChanged(ChangeEvent e) {
}
}
可能是它如此简单的基本...我不知道如何覆盖已经创建的组件对象的基本功能......
答案 0 :(得分:0)
我设计了一个功能......现在它正在解决我的问题......
void getAutoResizeTable(final JTable table) {
table.getColumnModel().addColumnModelListener(new TableColumnModelListener() {
@Override
public void columnSelectionChanged(ListSelectionEvent lse) {
}
@Override
public void columnAdded(TableColumnModelEvent tcme) {
}
@Override
public void columnRemoved(TableColumnModelEvent tcme) {
}
@Override
public void columnMoved(TableColumnModelEvent tcme) {
}
@Override
public void columnMarginChanged(ChangeEvent ce) {
TableColumn resizingColumn = table.getTableHeader().getResizingColumn();
if (resizingColumn != null) {
resizingColumn.setPreferredWidth(resizingColumn.getWidth());
}
if (hasExcessWidth(table)) {
table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
} else {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
protected boolean hasExcessWidth(JTable table) {
return table.getPreferredSize().width < table.getParent().getWidth();
}
});
}