3

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

4

2 に答える 2

4

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

于 2012-03-25T09:06:45.087 に答える
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;
      }
于 2012-03-25T09:28:34.973 に答える