【问题标题】:Setting tab size in TableCellRenderer在 TableCellRenderer 中设置选项卡大小
【发布时间】:2008-10-10 20:54:57
【问题描述】:

我有一个扩展DefaultTableCellRenderer 的类,它以等宽字体呈现字符串,具有特定的颜色。默认情况下,似乎根本不呈现选项卡(0 个空格)。如何设置选项卡大小和/或使它们被呈现?

编辑: “制表符”是指制表符,我只想将其呈现为一定数量的空格。重写字符串是一种选择,但我认为有更好的方法。

【问题讨论】:

  • 什么标签?表格单元格中没有选项卡。
  • 您的评论早于(未经编辑的)问题。这怎么可能?
  • 哦,等等,他的意思是“制表符”——我以为他的意思是 jtabbedpane 制表符。

标签: java swing text


【解决方案1】:

DefaultTableCellRendererJLabel 并执行 JLabel 将执行的操作。我建议您自定义一个TableCellRenderer 并返回一个JPanel,其中两个或更多JLabels 布局适当。或者,使用覆盖paintComponentJComponent 来随意绘制。

注意:尝试在渲染器中使用 HTML 在性能方面是一个非常糟糕的主意。

【讨论】:

  • 究竟为什么以及何时使用 HTML 是一个坏主意,性能方面?大概你有一些硬性规定?
  • 澄清一下;我们有超过 100,000 行的 JTables 和大量使用 HTML、表格、字体、颜色等的渲染器。
  • 每次调用 getTableCellRenderer 时,都会在 JLabel 上设置 HTML,解析并完成所有幕后工作。这往往真的很慢。
  • DefaultTableCellRenderer 是否真的做类似 HTML 的东西,比如 JTextPane?当我说字体和颜色时,我的意思是我调用 setFont() 和 setBackground() 来获取等宽字体和适当的背景颜色。
  • 是的,只需使用 开始标签文本,就像其他 JLabel 一样。
【解决方案2】:

半生不熟的答案:用空格字符替换它们,你需要的数量(如果使用的不仅仅是行缩进,则需要一些计算)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多