【问题标题】:Newline (\n) is not working by using AbstractTableModel for JTable对 JTable 使用 AbstractTableModel 时,换行符 (\n) 不起作用
【发布时间】:2019-09-26 20:31:44
【问题描述】:

我需要在一个表格列中有多行。我在String 之间给出了\r\n。但是新线不会来。我试过\nSystem.lineSeparator()line.separator。没有任何工作。

我的输出应该允许每个单元格中有多行。

我的代码如下:

import java.awt.BorderLayout;
import java.awt.Container;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

class AppSwing extends AbstractTableModel {



  public Object[][] values = {
      { "C\r\n\r\nAfterNewLine", "A\r\n\r\n" },
     };

  public int getRowCount() {
    return values.length;
  }

  public int getColumnCount() {
    return values[0].length;
  }

  public Object getValueAt(int row, int column) {
    return values[row][column];
  }
} 

主类

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JTable;

class App extends JFrame {

protected JTable table;

  public static void main(String[] args) {
    App stt = new App();
    stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    stt.setSize(400, 200);
    stt.setVisible(true);
  }

  public App() {
    Container pane = getContentPane();
    pane.setLayout(new BorderLayout());
    AppSwing tv = new AppSwing();
    table = new JTable(tv);
    pane.add(table, BorderLayout.CENTER);
  }

}

结果--

CAfterNewLine A

【问题讨论】:

  • 您首先要查看How to Use TablesUsing Custom RenderersJLabel 不太可能以这种方式支持新行,但它确实支持 html(都仅限于 v3.2) - for example
  • v3.2是HTML版?
  • 是的……而且有限的 CSS 支持,所以不要期望任何花哨的东西
  • 首先,Swing 支持 HTML,一直都有。其次,我已经链接了一个演示该概念的示例,您尝试过吗?
  • 是的。使用 StringJoiner 可以正常工作。谢谢

标签: java swing jtable newline tablecellrenderer


【解决方案1】:

尝试如下示例中的字符串连接器。

 String[] data = rowData.get(rowIndex);
                    StringJoiner joiner = new StringJoiner("<br>", "<html>", "</html>");
                    for (String text : data) {
                        joiner.add(text);
                    }
                    value = joiner.toString();


【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2022-01-25
    • 2018-03-09
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多