[英]JTable cloumn doesn't get focused anymore
最近,我在JTable中的一個列上遇到了一個小問題:由於我編輯了它的DefaultTableCellRenderer,因此當我在表中聚焦一行時,密碼列沒有被聚焦。 這是我的代碼的屏幕截圖 :
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.