也许有最容易和最好的方式,我认为

JTable与一个TableColumn(并且没有TableHeader)在所有情况下都更好如

JList,这是你的

Render MacOX version

那么输出应该是

import java.awt.*;

import javax.swing.*;

import javax.swing.table.*;

import javax.swing.text.*;

//http://tips4java.wordpress.com/2008/10/26/text-utilities/

public class AutoWrapTest {

public JComponent makeUI() {

String[] columnNames = {" Text Area Cell Renderer "};

Object[][] data = {

{"123456789012345678901234567890"},

{"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddx"},

{"----------------------------------------------0"},

{">>>>>>>>>>>>>dddddddddddddddddddddddddddddddddddddddddddddddddd"

+ "dddddddxdddddddddddddddddddddddddddddddddddddddddddddd"

+ "dddddddddddx>>>>>>>>>>>>>>>>>>>>>>>>>|"},

{">>>>>>>>>>>>ddddddddddddddddddddddddddddddddddddddddddddddddddd"

+ "ddddddx>>>>>>>>>>>>>>>>>>>>>>>>>>|"},

{"a|"},

{">>>>>>>>bbbb>>>>>>>>>>>>>>>>>>>|"},

{">>>>>>>>>>>>>>>>>>|"},

{">>>>>>>>>>>>>dddddddddddddddddddddddddddddddddddddddddddddddddd"

+ "dddddddxdddddddddddddd123456789012345678901234567890dddddd"

+ "dddddddddddddddddddddddddddddddddddddx>>>>>>>>>>>>>>>>>>>>"

+ ">>>>>|"},

{">>>>>>>>>>>>>dddddddddddddd123456789012345678901234567890dddddd"

+ "dddddddddddddddddddddddddddddddddddddxdddddddddddddd123456"

+ "789012345678901234567890dddddddddddddddddddddddddddddddddd"

+ "ddddd123456789012345678901234567890ddddx>>>>>>>>>>>>>>>>>>"

+ ">>>>>>>|"},};

TableModel model = new DefaultTableModel(data, columnNames) {

private static final long serialVersionUID = 1L;

@Override

public boolean isCellEditable(int row, int column) {

return false;

}

};

JTable table = new JTable(model) {

private static final long serialVersionUID = 1L;

@Override

public void doLayout() {

TableColumn col = getColumnModel().getColumn(0);

for (int row = 0; row < getRowCount(); row++) {

Component c = prepareRenderer(col.getCellRenderer(), row, 0);

if (c instanceof JTextArea) {

JTextArea a = (JTextArea) c;

int h = getPreferredHeight(a) + getIntercellSpacing().height;

if (getRowHeight(row) != h) {

setRowHeight(row, h);

}

}

}

super.doLayout();

}

private int getPreferredHeight(JTextComponent c) {

Insets insets = c.getInsets();

View view = c.getUI().getRootView(c).getView(0);

int preferredHeight = (int) view.getPreferredSpan(View.Y_AXIS);

return preferredHeight + insets.top + insets.bottom;

}

};

table.setEnabled(false);

table.setShowGrid(false);

table.setTableHeader(null);

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

//table.setPreferredScrollableViewportSize(table.getPreferredSize());

JScrollPane sp = new JScrollPane(table);

sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

sp.setPreferredSize(new Dimension(250, 533));

JPanel p = new JPanel(new BorderLayout());

p.add(sp);

return p;

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

createAndShowGUI();

}

});

}

public static void createAndShowGUI() {

JFrame f = new JFrame();

f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

f.getContentPane().add(new AutoWrapTest().makeUI());

f.setLocation(100, 100);

f.pack();

f.setVisible(true);

}

}

class TextAreaCellRenderer extends JTextArea implements TableCellRenderer {

private static final long serialVersionUID = 1L;

private final Color evenColor = new Color(230, 240, 255);

public TextAreaCellRenderer() {

super();

setLineWrap(true);

setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));

}

@Override

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

if (isSelected) {

setForeground(table.getSelectionForeground());

setBackground(table.getSelectionBackground());

} else {

setForeground(table.getForeground());

setBackground(table.getBackground());

setBackground((row % 2 == 0) ? evenColor : getBackground());

}

setFont(table.getFont());

setText((value == null) ? "" : value.toString());

return this;

}

}

java jlist 设置高度_java – 根据内容展开JList行高相关推荐

  1. java table设置行高_java – 如何全局更改JTable行高?

    基本上,没有任何意图. BasicTableUI中的相关代码注释: // JTable's original row height is 16. To correctly display the // ...

  2. html高度的属性的值,html – 行高属性是否可以继承父Div的高度属性或其所属Div的访问高度属性?...

    我有一个高度为50px的div,其中包含一个子div.子div的高度通过使用css属性/值对从父级继承:height:100%. Some Text 我想真正对齐子div中的文本,并且这样做我将lin ...

  3. 行高和高度的三两事:行高 > 高度 文字靠下;行高 < 高度 文字靠上

    先明白行高的原理,行高包含内容区域的高度.上半行间距和下班行间距.如果line-heigt:300px; font-size:20px;算出间距280px,上下半行间距都为140px.chrome默认 ...

  4. jq设置html的fontsize,Jquery 设置字体大小(font-size)与行高(line-height)

    Jquery 设置字体大小(font-size)与行高(line-height) var cssfontSize=$(".txt_container").css('font-siz ...

  5. java 二叉树的高度_Java实现二叉树的建立、计算高度与递归输出操作示例

    本文实例讲述了java实现二叉树的建立.计算高度与递归输出操作.分享给大家供大家参考,具体如下: 1. 建立 递归输出 计算高度 前中后三种非递归输出 public class Tree_Link { ...

  6. java scrollpane 设置透明_java swing 之 JScrollPane(滚动面板)的使用

    /** * java swing 之JScrollPane面板 * 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用 * JScrollPane面板,JscrollP ...

  7. java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...

  8. java calendar 设置小时_Java Calendar类的时间操作

    Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单,演示了获取时间,日期时间的累加和累减,以及比较. 注意事项: Calendar 的 month 从 0 ...

  9. java 按钮设置图片_Java中如何设置带图片按钮的大小

    在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题, 按照方法:JButton jb1 = new JButton(); jb1.setBo ...

最新文章

  1. Java虚拟机 —— 类的加载机制
  2. 信息安全从业者必须接受的六个事实
  3. 自学python需要买书吗-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...
  4. opencv实现图片HDR功能
  5. Ubuntu18.04安装百度网盘
  6. spring boot热部署devtools
  7. mysql sql select for update_mysql SELECT FOR UPDATE语句使用示例
  8. 怎么把线稿提取出来_如何快速提取漫画线稿?【漫画技巧】
  9. 什么是网络单纯型算法
  10. cilium插件测试_Cilium网络概述
  11. python程序可以在任何安装了解释器_Windows安装多个python解释器
  12. 网络安全web渗透技术
  13. LeetCode781森林中的兔子题解
  14. 语音可懂度评估(一)——基于清晰度指数的方法
  15. 案例分享 | 腾讯互娱基于 CPU 环境的分布式 YOLOv3 实现
  16. scanf()函数的用法
  17. Parsec测试基准程序在zynq板上测试
  18. 哈尔滨校区学员扫码绑定教练、签到、签退、评价说明
  19. VUE3 之 状态动画 - 这个系列的教程通俗易懂,适合自学
  20. 一篇搞定企业级C++跨平台线程池

热门文章

  1. 机器学习实验之肿瘤分类与预测(朴素贝叶斯)
  2. vertx和springboot整合案例
  3. android闹钟设计的开题报告,电子闹钟设计开题报告.doc
  4. 计算全班学生C++课程的总成绩和平均成绩
  5. 赛效:A4Word双面打印要多少钱?
  6. macOS上如何应对崩溃问题
  7. 记录ES删除字段方法
  8. MongoDB删除字段
  9. 网络笔记(hcip)
  10. 铁甲雄兵服务器维护,铁甲雄兵9月16日维护-铁甲雄兵9月16日更新内容一览