2012-03-25 74 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 2012-03-25 09:36:53

+1

不客气。如果你希望标签在'while'中被使用,请使用':'sb.append(“

”).append(line).append(“
”);' – 2012-03-25 09:45:36

+0

再次感谢你的帮助!只需要我的作品! – Vagelism 2012-03-25 09:47:24

4

在前面放<html>使其成为HTML文本,并使用<br>(换行符)而不是\n

+0

谢谢!我在一些搜索中看到了这个解决方案,但我不确定是否可以在Java应用程序或网页上实现它。 – Vagelism 2012-03-25 09:19:57

+0

谢谢!按我的意愿工作。 – Vagelism 2012-03-25 09:25:31

+0

好的!如果你有兴趣,我做了一个让它“不可见”的方法。 – 2012-03-25 09:29:11