JTable 列不再集中
JTable cloumn doesn't get focused anymore
最近我在 JTable 中的一列中遇到了一个小问题:因为我编辑了它的 DefaultTableCellRenderer,当我在 table 中聚焦一行时,密码列没有聚焦。 Here's a screenshot 我的代码:
inputsTable.getColumn("Passwort").setCellRenderer(new DefaultTableCellRenderer(){
private final String ASTERISKS = "*";
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
int length =0;
if (value instanceof String) {
length = ((String) value).length();
} else if (value instanceof char[]) {
length = ((char[])value).length;
}
setText(asterisks(length));
return this;
}
private String asterisks(int length) {
if (length > ASTERISKS.length()) {
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
sb.append('*');
}
return sb.toString();
} else {
return ASTERISKS.substring(0, length);
}
}
});
我已经尝试了一些不同的选择,但不幸的是它们对我没有帮助。你们中的任何人最终是否有线索,在 JTable 中是否有更好的密码列实现而没有这个问题?提前致谢!
已发布的 DefaultTableCellRenderer
实现未根据当前状态设置格式(特别是 isSelected
参数)。要保留默认格式,请考虑在自定义之前调用父方法。
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//do your customization here
}
最近我在 JTable 中的一列中遇到了一个小问题:因为我编辑了它的 DefaultTableCellRenderer,当我在 table 中聚焦一行时,密码列没有聚焦。 Here's a screenshot 我的代码:
inputsTable.getColumn("Passwort").setCellRenderer(new DefaultTableCellRenderer(){
private final String ASTERISKS = "*";
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
int length =0;
if (value instanceof String) {
length = ((String) value).length();
} else if (value instanceof char[]) {
length = ((char[])value).length;
}
setText(asterisks(length));
return this;
}
private String asterisks(int length) {
if (length > ASTERISKS.length()) {
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
sb.append('*');
}
return sb.toString();
} else {
return ASTERISKS.substring(0, length);
}
}
});
我已经尝试了一些不同的选择,但不幸的是它们对我没有帮助。你们中的任何人最终是否有线索,在 JTable 中是否有更好的密码列实现而没有这个问题?提前致谢!
已发布的 DefaultTableCellRenderer
实现未根据当前状态设置格式(特别是 isSelected
参数)。要保留默认格式,请考虑在自定义之前调用父方法。
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//do your customization here
}