我有很多 JTable,但它们通过使用另一个公共(public)类来填充数据。我已通过其构造函数传递了整个 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) {
}
}
可能是它太简单了...我不知道如何覆盖已经创建的组件对象的基本功能...
最佳答案
我设计了一个函数...现在它可以解决我的问题...
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();
}
});
}
关于java - 如何重写已经创建的 JTable 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662448/