內(nèi)蒙古java團(tuán)隊(duì)

          j2se,j2ee開發(fā)組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          在JTable中放置JTextarea

          Posted on 2006-11-26 13:30 帥子 閱讀(588) 評論(0)  編輯  收藏 所屬分類: j2se技術(shù)專區(qū)
          今天需要做一個(gè)界面,JTable的其中最后一列的顯示的文字比較多,而且需要分行顯示。JTable默認(rèn)所存放的CellRenderer是JTextField,無法滿足要求,經(jīng)過google在網(wǎng)上查找相關(guān)資料,大多數(shù)實(shí)現(xiàn)并沒有實(shí)現(xiàn)根據(jù)textarear里面文字信息的多少?zèng)Q定textarea的高度。寫了一個(gè)實(shí)現(xiàn),請大家參考一下。


          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());

          ????????????_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;
          ????}

          }


          控制的關(guān)鍵在這一段代碼:
          getSumaryTxtPane().setSize(columnModel.getColumn(column).getWidth(),?100000);
          其中100000可以變成>=7的數(shù)字都是可以的
          主站蜘蛛池模板: 宝应县| 轮台县| 台北市| 新龙县| 孟村| 临桂县| 五寨县| 泰兴市| 汉川市| 思南县| 静乐县| 涞水县| 平定县| 营口市| 榆树市| 三都| 广河县| 大荔县| 布拖县| 定南县| 乡宁县| 普兰县| 景泰县| 大荔县| 长乐市| 巴林右旗| 辽源市| 仪陇县| 满洲里市| 鹤峰县| 叶城县| 三明市| 祥云县| 宁河县| 肇源县| 凤凰县| 盐边县| 潞西市| 聂荣县| 河北省| 尉犁县|