[英]Default Table Model doesn't show new lines
嗨,我想在DefaultTableModel中显示换行符,但我不知道为什么表不显示enter。 如何启用进入? 如果我有一个字符串“ stss \\ nsdd”,则显示“ stsssdd”,但我要换行。
public class Main extends JFrame {
DefaultTableModel model = new DefaultTableModel(
new Object[][]{{"some", "text"}, {"any", "text"},
{"even", "more"}, {"text", "str\nings"},
{"and", "other"}, {"text", "values"}}, new Object[]{
"Column 1", "Column 2"});
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(model);
table.setRowHeight(40);
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
pack();
}
public static void main(String arg[]) {
new Main().setVisible(true);
}
}
这是因为DefaultTableCellRenderer使用JLabel作为绘制单元格的组件。 标签不能换行。 您必须使用自己的TableCellRenderer,该TableCellRenderer使用接受新行的TextComponent,例如JTextArea。
final JTextArea textArea = new JTextArea(); // or static field
//...
table.setDefaultRenderer(Object.class, new TableCellRenderer()
{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
textArea.setText(value.toString());
return textArea;
}
});
尝试复制和粘贴几行文字,以查看其工作原理。 现在,您可能想要更改cellEditor并阻止Enter键完成版本,以便可以将其用于在单元格中写入新行。
我以简单的方式做到了
JLabel l = new JLabel("<html>Hello World!<br>blahblahblah</html>", SwingConstants.CENTER)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.