2016-06-29 4 views
0

最近、私はJTableの1つの列に小さな問題があります。編集したDefaultTableCellRendererから、テーブルに行をフォーカスするときにパスワード列がフォーカスされません。 Here's a screenshot私のコード:JTable cloumnはもう焦点を当てていません

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にパスワード列を実装した方が良いでしょうか?前もって感謝します!

答えて

2

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 
       } 
+0

ありがとう、私は覚えています! –

関連する問題