JTable单元格自动换行

JTable单元格自动换行,第1张

;
 
 
import javaxswing;
import javaxswingtable;
import javaawt;
class C extends JFrame {
    public C() {
        JTable tbl = new JTable(new String[][]{{
                "JTable 里单元格内容的显示器是 TableCellRenderer。",
                "默认的显示器(DefaultTableCellRenderer)继承 JLabel 所以不方便多行显示。",
                "要多行显示应该继承 JTextArea(参看下面的 TableCellTextAreaRenderer 类)。",
                "当然,别忘了调用 JTablesetDefaultRenderer() 登记你的显示器。"}},
                "A B C D"split(" "));
        tblsetDefaultRenderer(Objectclass, new TableCellTextAreaRenderer());
        add(new JScrollPane(tbl));
        setSize(800, 200);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String[] args) { new C(); }
}
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
    public TableCellTextAreaRenderer() {
        setLineWrap(true);
        setWrapStyleWord(true);
    }
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        // 计算当下行的最佳高度
        int maxPreferredHeight = 0;
        for (int i = 0; i < tablegetColumnCount(); i++) {
            setText("" + tablegetValueAt(row, i));
            setSize(tablegetColumnModel()getColumn(column)getWidth(), 0);
            maxPreferredHeight = Mathmax(maxPreferredHeight, getPreferredSize()height);
        }
        if (tablegetRowHeight(row) != maxPreferredHeight)  // 少了这行则处理器瞎忙
            tablesetRowHeight(row, maxPreferredHeight);
        setText(value == null "" : valuetoString());
        return this;
    }
}

参考资料:


>

需要准备的材料分别有:电脑、浏览器、html编辑器。

1、首先,打开html编辑器,新建html文件,例如:indexhtml,编写问题基础代码。

2、在indexhtml中的<body>标签中,将外层的table改为div,新增css代码:div {width: 300px;} table {float: left;}。

3、浏览器运行indexhtml页面,此时表格们实现了每3个自动换行

您好,这样:
<table width="480" border="0" cellspacing="0"
cellpadding="0" style="word-break:break-all;word-wrap:break-word">
<tr>
</tr>
</table>
解释:
语法:
word-break
: normal | break-all | keep-all
参数:
normal : 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行
break-all :
 该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
keep-all :
 与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本
说明:

设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
对于中文,应该使用break-all

对应的脚本特性为wordBreak。请参阅我编写的其他书目。
word-wrap版本:IE55+专有属性 继承性:有
语法:
word-wrap : normal | break-word
参数:
normal : 允许内容顶开指定的容器边界
break-word :
 内容将在边界内换行。如果需要,词内换行(word-break)也行发生
说明:
设置或检索当当前行超过指定容器的边界时是否断开转行。

可使用css样式中的word-break属性,指定其属性值为break-all,即可实现表格内文字自动换行。
示例如下:
<html>
<head><title>例子</title>
</head>
<body>
<table
style="word-break:break-all">
<!采用css的内嵌样式指定自动换行属性>

</table>
</body>
</html>

TableLayout 是 Android 平台上一种非常常用的布局方式,可以在单元格中放置其他布局组件。对于 TableLayout 单元格自动换行的问题,主要有以下两个方面需要注意。
首先,可以使用 android:singleLine 属性来控制单元格内部的文本是否换行。当该属性设置为 false 时,单元格内的文本就会自动进行换行 *** 作。同时,可以使用 android:stretchColumns 属性来指定某一列的宽度是否可以随着内容的变化而自适应调整。
其次,还可以通过代码实现自动换行的效果。我们可以在代码中根据内容的大小来计算出单元格的宽度,并设置单元格的布局参数。例如,可以使用 LinearLayoutLayoutParams 中的 weight 属性来根据内容的长度来动态调整单元格的宽度。
需要注意的是,在进行 TableLayout 布局时,单元格内的组件应该尽量避免设置固定宽度或高度,以便布局可以更加灵活自适应。同时,为了保证单元格内的组件可以显示完整内容,可以根据需要设置 padding 或 margin 等样式属性。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13386091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存