2011年4月19日

<Java> JVA408-員工基本資料表




這題重點:
1. 表格的使用
2. AbstractTableModel類別改寫

===============================

import   javax.swing.*;
import   javax.swing.table.*;
import   java.awt.*;

public class JVA408 extends JFrame{

   JTable myTable;
   JScrollPane myPanel;
   TableModel myModel;
   //JComboBox cbStd
   public JVA408(){
    
      setTitle("員工基本資料表");
 
      //建立 Table Model
      myModel = new EmployeeTable();    
      myTable = new JTable(myModel);
      myPanel = new JScrollPane(myTable);
    
      //將表格物件和ScrollPanel加到JFrame物件上
      getContentPane().add(myPanel, "Center");
    
      //設定每一個ROW的高度
      myTable.setRowHeight(25);
    
      //初始ComboBox值,並加入表格中
      String std[] = {"博士","碩士","大學","專科"};
      JComboBox cbStd = new JComboBox(std);
      /*
################################
請在此處加上設定ComboBox的原始碼
################################
*/

      TableColumnModel tcm = myTable.getColumnModel(); //
      tcm.getColumn(2).setCellEditor(new DefaultCellEditor(cbStd));//
    
      //顯示JFrame
      setBounds(100, 100, 500, 200);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);       
   }

   public static void main(String[] args){
      new JVA408();
   }
}

//***************自定表格模型*******************
class EmployeeTable extends AbstractTableModel{

//設定每一列的資料,設定欄位名稱
      /*
#####################################
請在此處加上設定Table原始資料的程式碼
#####################################
*/

   String header[] = {"員工編號","姓名","學歷","姓名","備考"};
   Object obj[][];

   public   EmployeeTable(){
      obj = new Object[][]{
         new Object[]{"3011","古怡芳","博士",false,""},
         new Object[]{"3012","梁金龍","碩士",true,""},
         new Object[]{"3013","林庭羽","大學",false,""},
         new Object[]{"3014","陳億","碩士",true,""},
         new Object[]{"3015","陳淑卿","大學",false,""},
      };
   }
    
      /*
##############################################################
請在此處加上顯示Table原始內容的程式碼,您可以考慮重寫下列方法:
一、getRowCount()
二、getColumnCount()
三、getValueAt()
四、getColumnClass
五、getColumnName
六、isCellEditable
##############################################################
*/

   public int getRowCount(){
      return obj.length;
   }
   public int getColumnCount(){
      return obj[0].length;
   }
   public Object getValueAt(int i, int j){
      return obj[i][j];
   }
   public Class getColumnClass(int j){
      return obj[0][j].getClass();
   }
   public String getColumnName(int j){
      return header[j];
   }
   public boolean isCellEditable(int i ,int j){
      if(j==2||j==3||j==4)
         return true;
      return false;
   }
   public void setValueAt(Object o,int i,int j){
      obj[i][j] = o;
   }
 
}

沒有留言:

張貼留言