<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Renderer&Editor之Swing篇(二)

    Posted on 2010-08-24 11:52 TWaver 閱讀(1088) 評論(0)  編輯  收藏
    上篇的例子主要的動作在editor上,不過editor只有在點擊在cell單元的時候才會顯示,所以還不得不造一個界面跟editor一樣的renderer進行“造假”,當然由于這個例子只有兩個按鈕,所以renderer的代碼不多,不過如果editor的組件很多,而且經常需要改動那不就麻煩了,所以我們可以考慮一下讓renderer復用editor的顯示部分,以下的代碼就是很好的說明了這種復用
      1import java.awt.*;
      2import java.awt.event.*;
      3import javax.swing.*;
      4import javax.swing.table.*;
      5
      6public class TableTest2 extends JFrame {
      7 JTable table;
      8 String[] states = new String[]{"stop""stop""stop"};
      9
     10 // model
     11 class TableModel extends AbstractTableModel{
     12  public int getColumnCount() {
     13   return 2;
     14  }

     15  public int getRowCount() {
     16   return states.length;
     17  }

     18  public Object getValueAt(int rowIndex, int columnIndex) {
     19   if(columnIndex == 0){
     20    return states[rowIndex];
     21   }

     22   return null;
     23  }

     24     public String getColumnName(int columnIndex) {
     25   if(columnIndex == 0){
     26    return "state";
     27   }
    else{
     28    return "operate";
     29   }

     30     }

     31     public boolean isCellEditable(int rowIndex, int columnIndex) {
     32   if(columnIndex == 0){
     33    return false;
     34   }
    else{
     35    return true;
     36   }

     37     }

     38 }

     39
     40 // cell editor
     41 class Editor extends AbstractCellEditor implements TableCellEditor, ActionListener {
     42  int row;
     43  JTable table;
     44  JPanel panel;
     45  JButton start;
     46  JButton stop;
     47  Editor(){
     48   panel = new JPanel();
     49   panel.setLayout(new GridLayout(12));
     50   start = new JButton("start");
     51   stop = new JButton("stop");
     52   start.addActionListener(this);
     53   stop.addActionListener(this);
     54   panel.add(start);
     55   panel.add(stop);
     56  }

     57     public Object getCellEditorValue() {
     58         return null;
     59     }

     60     public Component getTableCellEditorComponent(
     61       JTable table, Object value, boolean isSelected, int row, int column) {
     62      this.table = table;
     63      this.row = row;
     64      return panel;
     65     }

     66
     67  public void actionPerformed(ActionEvent e) {
     68   if(e.getSource() == start){
     69    states[row] = "start";
     70   }
    else{
     71    states[row] = "stop";
     72   }

     73   ((AbstractTableModel)table.getModel()).fireTableCellUpdated(row, 0);
     74  }

     75
     76 }

     77
     78 // cell render
     79 class Renderer extends JComponent implements TableCellRenderer{
     80  TableCellEditor editor;
     81  Renderer(TableCellEditor editor){
     82   this.editor = editor;
     83  }

     84  public Component getTableCellRendererComponent(JTable table, Object value,
     85    boolean isSelected, boolean hasFocus, int row, int column) {
     86   return editor.getTableCellEditorComponent(table, value, isSelected, row, column);
     87  }

     88 }

     89
     90 public TableTest2(){
     91  super("editor used by renderer");
     92  table = new JTable(new TableModel());
     93  TableColumn tableColumn = table.getColumnModel().getColumn(1);
     94  tableColumn.setCellRenderer(new Renderer(new Editor()));
     95  tableColumn.setCellEditor(new Editor());
     96
     97        this.getContentPane().setLayout(new BorderLayout());
     98        this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
     99        this.setSize(500300);
    100        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    101 }

    102 public static void main(String[] args) {
    103  new TableTest2().show();
    104 }

    105}


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: jlzzjlzz亚洲乱熟在线播放| 我想看一级毛片免费的| 亚洲免费在线观看| 免费播放美女一级毛片| 成人最新午夜免费视频| 亚洲日本VA中文字幕久久道具| 欧美大尺寸SUV免费| 亚洲熟女精品中文字幕| 免费看片A级毛片免费看| 亚洲av日韩专区在线观看| 四虎影视在线永久免费看黄 | 久久久久亚洲精品天堂久久久久久| 国产精品亚洲片在线花蝴蝶| 国产免费人人看大香伊| 国产成人综合亚洲一区| 亚洲精品高清在线| 久久精品视频免费| 亚洲色欲www综合网| 成人片黄网站A毛片免费| 久久亚洲AV成人无码国产最大| 亚洲第一页日韩专区| 中文字字幕在线高清免费电影| 日本亚洲欧洲免费天堂午夜看片女人员| 免费久久人人爽人人爽av| 亚洲永久永久永久永久永久精品| 国产a视频精品免费观看| 亚洲a∨国产av综合av下载| 亚洲中文字幕视频国产| 99精品视频在线观看免费播放| 亚洲一区二区影视| 亚洲精品国产V片在线观看| 久久久免费精品re6| 亚洲av无码偷拍在线观看| 亚洲欧洲∨国产一区二区三区| 麻豆视频免费播放| 精品国产_亚洲人成在线| 久久亚洲精品中文字幕三区| 四虎成人免费观看在线网址| 黄色视频在线免费观看| 亚洲美女激情视频| 亚洲日韩中文字幕日韩在线|