今天需要做一个界面,jtable的其中最后一列的显示的文字比较多,而且需要分行显示。jtable默认所存放的cellrenderer是jtextfield,无法满足要求,经过google在网上查找相关资料,大多数实现并没有实现根据textarear里面文字信息的多少决定textarea的高度。写了一个实现,请大家参考一下。
package com.ideal.ieai.adaptors.taskadaptor.usertask.view.timeout;
import Java.awt.borderlayout;
import java.awt.component;
import java.awt.flowlayout;
import java.awt.gridbagconstraints;
import java.awt.gridbaglayout;
import javax.swing.defaultcelleditor;
import javax.swing.jbutton;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextarea;
import javax.swing.jtextfield;
import javax.swing.jtextpane;
import javax.swing.border.titledborder;
import javax.swing.table.defaulttablecellrenderer;
import javax.swing.table.defaulttablemodel;
import javax.swing.table.tablecelleditor;
import javax.swing.table.tablecolumn;
import javax.swing.table.tablecolumnmodel;
import javax.swing.table.tablemodel;
public class timeoutpanel extends jpanel
{
private jscrollpane _scrlrules = null;
private jtable _tblrules = null;
private jpanel _panelctrl = null;
private jbutton _btnadd = null;
private jbutton _btnedit = null;
private jbutton _btndel = null;
private defaulttablemodel _tblmodelrules = null;
private jtextpane _sumarytxtpane = null;
/**
* this is the default constructor
*/
public timeoutpanel()
{
super();
initialize();
}
/**
* this method initializes this
*
* @return void
*/
private void initialize ()
{
setlayout(new borderlayout());
add(getscrlrules(), borderlayout.center);
add(getpanelctrl(), borderlayout.south);
this.setsize(500, 400);
}
private component getpanelctrl ()
{
if (null == _panelctrl)
{
_panelctrl = new jpanel();
_panelctrl.setlayout(new flowlayout(flowlayout.right, 4, 4));
_panelctrl.add(getbtnadd());
_panelctrl.add(getbtnedit());
_panelctrl.add(getbtndel());
}
return _panelctrl;
}
private component getbtndel ()
{
if (null == _btndel)
{
_btndel = new jbutton("delete");
}
return _btndel;
}
private component getbtnedit ()
{
if (null == _btnedit)
{
_btnedit = new jbutton("edit");
}
return _btnedit;
}
private component getbtnadd ()
{
if (null == _btnadd)
{
_btnadd = new jbutton("add");
}
return _btnadd;
}
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());
