2012-03-25 8 views
3

私はこのサイトで利用可能な垂直テーブルヘッダーセルレンダラーを使用しましたhere それは私のためにはうまくいくが、私はこのような複数の行を垂直に整列したいくつかのヘッダーこの例の画像(座標ジオメトリ)で見ることができます。私は適切な\ n文字で文字列を設定しようとしましたが、私のアプローチは非常に単純で間違っていると思います。 簡単にしてください。 ありがとうございました!縦テーブルヘッダーセルレンダラー

答えて

3

Joopの回答から、私はこれを作った。ラベルを直接変更する代わりに、\nをそのまま使用できます。この方法を使用して、ファイルDefaultTableHeaderCellRenderer.java

、置き換えgetTableCellRendererComponent

public Component getTableCellRendererComponent(JTable table, Object value, 
       boolean isSelected, boolean hasFocus, int row, int column) { 

      String str = (value == null) ? "" : value.toString(); 
      BufferedReader br = new BufferedReader(new StringReader(str)); 
      String line; 
      StringBuilder sb = new StringBuilder("<HTML>"); 
      try { 
       while ((line = br.readLine()) != null) { 
        sb.append(line).append("<br/>"); 
       } 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
      sb.append("</HTML>"); 
     super.getTableCellRendererComponent(table, sb, 
       isSelected, hasFocus, row, column); 
     JTableHeader tableHeader = table.getTableHeader(); 
     if (tableHeader != null) { 
      setForeground(tableHeader.getForeground()); 
     } 
     setIcon(getIcon(table, column)); 
     setBorder(UIManager.getBorder("TableHeader.cellBorder")); 
     return this; 
     } 
+0

コードをありがとう! – Vagelism

+1

ようこそ。ラベルを中央にしたい場合は 'while'でこれを使います:' sb.append( "

").append(line).append( "
"); ' –

+0

もう一度、助けてくれてありがとう!必要なだけの作品! – Vagelism

4

先頭に<html>を置き、HTMLテキストにして、\nの代わりに<br>(改行)を使用します。

+0

ありがとうございました!私はいくつかの検索でこの解決策を見ましたが、私はJavaアプリケーションやWebページのみで実装できるかどうかはわかりませんでした。 – Vagelism

+0

ありがとうございます!本当に私が望むように動作します。 – Vagelism

+0

いいです!あなたが興味があれば、私はそれを「目に見えない」状態に保つ方法を作りました。 –