gpt4 book ai didi

java - 如何重写已经创建的 JTable 方法

转载 作者:行者123 更新时间:2023-11-30 07:55:59 28 4
gpt4 key购买 nike

我有很多 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com