JTable单元包装 [英] JTable cell wrapping

查看:53
本文介绍了JTable单元包装的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想调整jtable中特定单元格的大小,以便当文本大小大于某个大小时它应该自动设置自身.这就是我向表中添加内容的方式.

I want to adjust the size of a particular cell in jtable so that it should auto set itself when the size of text is greater than some size. This is how I am adding content to my table.

        if(rs.next()) {

            rs.beforeFirst();
            Vector<String> columnNames = new Vector<String>();
            columnNames.add("Tweet");
            columnNames.add("Updated Time");

            Vector<Vector<Object>> data = new Vector<Vector<Object>>();

            while (rs.next()) {

                Vector<Object> vector = new Vector<Object>();
                Tweet = rs.getString(1);
                vector.add(Tweet);
                SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Timestamp time = rs.getTimestamp(2);
                Updated_time = sdf.format(time);
                vector.add(Updated_time);

                data.add(vector);
            }

            DefaultTableModel dfm = new DefaultTableModel(data, columnNames);

            JTable table = new JTable(dfm);
            table.setAutoscrolls(true);
            table.setShowGrid(false);

            ((DefaultTableCellRenderer)table.getDefaultRenderer(Object.class)).setOpaque(false);
            table.setOpaque(false);

推荐答案

public class MyRenderer extends JTextArea implements TableCellRenderer {

private static final long serialVersionUID = 1L;

public MyRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setOpaque(true);
}

@Override
public Component getTableCellRendererComponent(JTable table, Object value,       boolean isSelected, boolean hasFocus,
    int row, int column) {
// TODO Auto-generated method stub
setText(value.toString());//or something in value, like value.getNote()..
if (isSelected) {
    setForeground(table.getSelectionForeground());
    setBackground(table.getSelectionBackground());
} else {
    setForeground(table.getForeground());
    setBackground(table.getBackground());
}
setSize(table.getColumnModel().getColumn(column).getWidth(),
    getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
    table.setRowHeight(row, getPreferredSize().height);
}
return this;
  }

}

这篇关于JTable单元包装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆