这是我的问题:我正在使用 JTable
并制作了自己的 AbstractTableModel
。到目前为止,一切都很好。当文本太长时,单元格渲染器将截断文本并显示省略号 ...
,但我的一些数据库注册表也有省略号。例如:我一直在学习的程序语言:
first registry "Visual Basic (2003-2007)"
second registry "C++ (2006-2010)"
third registry "Java (2010-...)"
意味着我在 2007 年停止了学习 VB。在 2010 年停止了 C++。我仍在学习 Java。但是当列不是那么大时,它会被截断,有时会显示这样:
"Visual Basic (2003-..."
"C++ (2006-2010)"
"Java (2010-...)"
用户可能会感到困惑,认为“Visual Basic (2003-...”) 的意思是“Visual Basic (2003 - ...)”,而实际上它应该表示“Visual Basic (2003-2007)”
抱歉,如果我说得不够清楚,我希望大家理解,我只是想让 JTable
截断文本而不使用省略号。
最佳答案
这个answer显示椭圆是如何出现的;与其试图击败它们,更好的方法是将您的 JTable
添加到允许表格随着封闭的 Window
大小的调整而调整的布局。在此example ,表格填充 BorderLayout.Center
,这是 JFrame
的默认值。为了获得更具吸引力的初始外观,
您可以将
getPreferredScrollableViewportSize()
重写为 shown .您可以使用Changing Column Widths根据需要。
附录:虽然从可用性角度我不推荐它,但您可以在DefaultTableCellRenderer
的自定义子类中省略省略号。使用自定义LabelUI
并覆盖layoutCL()
,如图here和 here .
关于java - 我不希望 JTable 用省略号截断文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473041/