我使用了可在此网站中获得的垂直表头Header Cell Renderer它对我很好,但我需要关于如何在一些头部垂直对齐多行的像这样你可以看到示例图像中的线索(坐标几何)。 我试图用适当的\ n字符设置字符串,但我认为我的方法非常简单和错误。 请保持简单。 谢谢!
I used the Vertical Table Header Cell Renderer that is available in this site here It works great for me but I need a clue on how can I have in some headers that are vertically aligned multiple rows like this you can see in the image of the example (Coordinate Geometry). I tried to set the strings with the appropriate \n character but I think my approach is very simplistic and wrong. Please keep it simple. Thank you!
最满意答案
从乔普回答,我做到了这一点。 不要直接更改标签,您可以保留\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; }From Joop answer, I made this. Instead of changing the label directly you can keep your \n.
In your file DefaultTableHeaderCellRenderer.java, replace getTableCellRendererComponent with this method :
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; }更多推荐
发布评论