2012-03-25 6 views
3

Ich habe den vertikalen Tabellenüberschrift Cell Renderer, der auf dieser Website verfügbar ist here Es funktioniert gut für mich, aber ich brauche einen Hinweis, wie kann ich in einigen Headern, die mehrere Zeilen wie folgt ausgerichtet sind Sie können im Bild des Beispiels sehen (Koordinatengeometrie). Ich habe versucht, die Zeichenfolgen mit dem passenden \ n Charakter zu setzen, aber ich denke, dass mein Ansatz sehr einfach und falsch ist. Bitte halten Sie es einfach. Vielen Dank!Vertikale Tabellenüberschrift Zelle Renderer

Antwort

3

Von Joop Antwort, habe ich dies gemacht. Anstatt das Etikett direkt zu ändern, können Sie Ihre \n behalten.

In Ihrer Datei DefaultTableHeaderCellRenderer.java ersetzen getTableCellRendererComponent mit dieser Methode:

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

Vielen Dank für den Code! – Vagelism

+1

Gern geschehen. Wenn Sie möchten, dass die Beschriftung zentriert ist, verwenden Sie diese in 'while':' sb.append ("

") .app (Zeile) .app ("
"); ' –

+0

Noch einmal vielen Dank für die Hilfe! Works nur ich brauchte! – Vagelism

4

Vor setzen Sie <html>, um es HTML-Text zu machen, und verwenden Sie <br> (Zeilenumbruch) anstelle von \n.

+0

Vielen Dank! Ich habe diese Lösung bei einer Suche gesehen, aber ich war mir nicht sicher, ob ich sie in Java-Anwendungen oder nur auf Webseiten implementieren kann. – Vagelism

+0

Danke! Funktioniert wirklich wie ich wollte. – Vagelism

+0

Gute Eins! Ich habe eine Methode entwickelt, um es "unsichtbar" zu halten, wenn Sie interessiert sind. –