在JTable中放置JTextarea

在JTable中放置JTextarea
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(500400);
    }


    
private Component getPanelCtrl ()
    
{
        
if (null == _panelCtrl)
        
{
            _panelCtrl 
= new JPanel();
            _panelCtrl.setLayout(
new FlowLayout(FlowLayout.RIGHT, 44));
            _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());

            _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的数字都是可以的


你可能感兴趣的:(在JTable中放置JTextarea)