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());
パスワードフィールドが空であっても、このレンダラーはマスキングしています。そのため、ユーザーがパスワードセルが空であるか塗りつぶされているかを確認するのは困難です(常にマスクされたコンテンツが表示されるため)。
パスワードフィールドに何も入力されていない場合、およびパスワードフィールドに何かが入力されている場合に空白のままになるレンダラーを作成するには、パスワードフィールドに入力されている文字の長さを表示する必要がありますか?