科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在JTable中放置JTextarea

在JTable中放置JTextarea

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

今天需要做一个界面,JTable的其中最后一列的显示的文字比较多,而且需要分行显示。JTable默认所存放的CellRenderer是JTextField,无法满足要求,经过google在网上查找相关资料。

作者:中国IT实验室 来源:中国IT实验室 2007年9月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

    private Component getScrlRules ()
    {
        if (null == _scrlRules)
        {
            _scrlRules = new JScrollPane();
            _scrlRules.getViewport().add(getTblRules());
        }
        return _scrlRules;
    }

    private Component getTblRules ()
    {
        if (null == _tblRules)
        {
            _tblRules = new JTable();
            _tblRules.setModel(getTblModelRules());

            _tblRules.getColumnModel().getColumn(5).setCellRenderer(new DefaultTableCellRenderer()
            {
                public Component getTableCellRendererComponent ( JTable table, Object value,
                        boolean isSelected, boolean hasFocus, int row, int column )
                {
                    getSumaryTxtPane().setText((String) value);
                    TableColumnModel columnModel = table.getColumnModel();
                    getSumaryTxtPane().setSize(columnModel.getColumn(column).getWidth(), 100000);
                    int heightWanted = (int) getSumaryTxtPane().getPreferredSize().getHeight();
                    if (heightWanted != table.getRowHeight(row))
                    {
                        table.setRowHeight(row, heightWanted);
                    }
                    return getSumaryTxtPane();
                }
            });
        }
        return _tblRules;
    }

    private JTextPane getSumaryTxtPane ()
    {
        if (null == _sumaryTxtPane)
        {
            _sumaryTxtPane = new JTextPane();
        }
        return _sumaryTxtPane;
    }

    private TableModel getTblModelRules ()
    {
        if (null == _tblModelRules)
        {
            _tblModelRules = new DefaultTableModel()
            {
                public boolean isCellEditable ( int row, int colum )
                {
                    return false;
                }
            };
            _tblModelRules.addColumn("Rule Name");
            _tblModelRules.addColumn("Type");
            _tblModelRules.addColumn("Timeout");
            _tblModelRules.addColumn("Task Status");
            _tblModelRules.addColumn("Alert Type");
            _tblModelRules.addColumn("Sumary");
            _tblModelRules
                    .addRow(new Object[] { "rule1", "type1", "timeout1", "task status",
                            "alert type1",
                            "a\na\na\na" });
            _tblModelRules
                    .addRow(new Object[] { "rule1", "type1", "timeout1", "task status",
                            "alert type1",
                            "a\na\na\na" });
            _tblModelRules
            .addRow(new Object[] { "rule1", "type1", "timeout1", "task status",
                    "alert type1",
                    "a\na\na\na" });
            _tblModelRules
            .addRow(new Object[] { "rule1", "type1", "timeout1", "task status",
                    "alert type1",
                    "a\na\na\na" });
        }
        return _tblModelRules;
    }

}


控制的关键在这一段代码:
getSumaryTxtPane().setSize(columnModel.getColumn(column).getWidth(), 100000);
其中100000可以变成>=7的数字都是可以的

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章