gpt4 book ai didi

java - 列标题在我点击它之前不会改变

转载 作者:行者123 更新时间:2023-11-30 06:33:56 28 4
gpt4 key购买 nike

我有一个 jtable ,,,它的标题有一个弹出菜单,您可以从中更改标题,但直到我单击标题时更改才可见...请帮助

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class MyCustomHeaderRender extends DefaultTableCellRenderer {
String colmNameToChange;
int colomHeaderClicked;

public MyCustomHeaderRender(String nameRecieved, int coloum) {

colmNameToChange = nameRecieved;
colomHeaderClicked = coloum;
}

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {

Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (colomHeaderClicked == column) {
setOpaque(true);
table.getColumnModel().getColumn(colomHeaderClicked).setHeaderValue(colmNameToChange);
table.getTableHeader().repaint();
table.repaint();

}

return c;
}

}

`

最佳答案

渲染器与更改列文本无关。它仅绘制该列的文本。所以摆脱渲染器。

相反,您需要实际更新 TableColumn 以包含新的列名称。

所以代码会是这样的:

TableColumnModel tcm = table.getColumnModel();
TableColumn tc = tcm.getColumn(...);
tc.setHeaderValue(...);
table.getTableHeader().repaint();

关于java - 列标题在我点击它之前不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538769/

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