gpt4 book ai didi

java - 是否可以关闭 JTable 中的自动换行?

转载 作者:可可西里 更新时间:2023-11-01 13:40:05 25 4
gpt4 key购买 nike

我有一个 JTable 组件。在一列中,我插入 HTML 代码,如果此列中的一行长于列宽,则文本被换行。是否可以关闭环绕?

@sandlex

public Object getValueAt(int row, int col) {
return new String(
"<html>dgdfsgsdfg dfgdsfg sdfgs dfgsdfgsdfgsdfgsd afsdf asdfasd</html>");
}

使用此功能检查您的代码。它将以几行显示文本 - 而不是一行。

最佳答案

是否可以看一下您的代码?

例如,在这个最简单的示例中,没有任何内容被包装:

public class TableTest {

public static void main(String[] args) {
JFrame frm = new JFrame();

TableModel dataModel = new AbstractTableModel() {

public int getColumnCount() {
return 10;
}

public int getRowCount() {
return 10;
}

public Object getValueAt(int row, int col) {
return new String(
"<a href=\"127.0.0.1\">row*col*1000000000</a>");
}
};

JTable table = new JTable(dataModel);

table.getColumnModel().getColumn(2).setMaxWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setMinWidth(120);

frm.getContentPane().add(table);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setPreferredSize(new Dimension(300, 300));
frm.pack();
frm.setVisible(true);

}
}

已编辑@latata您可以尝试创建自己的 CellRenderer 并将其应用于所需的列:

table.getColumnModel().getColumn(0).setCellRenderer(new NonWrappedCellRenderer());

渲染器可能看起来像这样:

class NonWrappedCellRenderer extends JTextArea implements TableCellRenderer {

@Override
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
this.setText((String)value);
this.setLineWrap(false);
return this;
}
}

默认使用 JTextArea,这里不会换行

setLineWrap(false)

问题是 JTextArea 无法正确显示 html 标签,正如我所见。所以你会以某种方式解决这个问题。您可以尝试 JTextPane 或其他可以处理标签的东西,并检查它是否具有包装属性。或者,您可以手动计算字体规范、单元格宽度和修剪文本。

关于java - 是否可以关闭 JTable 中的自动换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com