我正在为密码创建一个 JTable 列。
我可以使用以下代码将单元格编辑器更改为密码编辑器:
JPasswordField pwf = new JPasswordField();
DefaultCellEditor editor = new DefaultCellEditor(pwf);
jTable1.getColumnModel().getColumn(3).setCellEditor(editor);
我无法找出正确的解决方案,以与 JPassword 控件相同的行为来渲染密码字段内容。默认情况下,它渲染输入的文本并显示它。如何覆盖它,使渲染器仅显示与输入的密码长度相同的“*”或黑点。
谢谢,钱德拉
更新 1:目前我正在使用下面给出的密码字段渲染器:
class PasswordCellRenderer extends JPasswordField
implements TableCellRenderer {
public PasswordCellRenderer() {
super();
// This displays astericks in fields since it is a password.
// It does not affect the actual value of the cell.
this.setText("filler123");
}
public Component getTableCellRendererComponent(
JTable arg0,
Object arg1,
boolean arg2,
boolean arg3,
int arg4,
int arg5) {
return this;
}
}
使用以下方式调用上述渲染器:
jTableJDBCPools.getColumnModel().getColumn(3).setCellRenderer(new PasswordCellRenderer());
即使密码字段为空,此渲染器仍在屏蔽。因此,用户很难找出密码单元格是空的还是填充的(因为它总是显示一些被屏蔽的内容)。
如何编写一个在密码字段中没有输入任何内容并且在密码字段中输入内容时保持空白的渲染器,它必须显示在密码字段中输入的字符的长度?