25---AWT和Swing(13)表格(视频代码)

 

代码一:
 import java.awt.event.WindowAdapter ;
 import java.awt.event.WindowEvent ;
 import javax.swing.JTable ;
 import javax.swing.JScrollPane ;
 import javax.swing.JFrame ;
 public class JTableDemo01{
  public static void main(String args[]){
   JFrame frame = new JFrame("Welcome To MLDN") ;
   String[] titles = {"姓名","年龄","性别","数学成绩","英语成绩","总分","是否及格"} ;
   Object [][] userInfo = {
    {"李兴华",30,"男",89,97,186,true} ,
    {"李康",23,"女",90,93,183,false}
   } ; // 定义数据
   JTable table = new JTable(userInfo,titles) ; // 建立表格
   JScrollPane scr = new JScrollPane(table) ;
   frame.add(scr) ;
   frame.setSize(370,90) ;
   frame.setVisible(true) ;
   frame.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     System.exit(1) ;
    }
   })
  }
 }

代码二:
 import java.awt.BorderLayout ;
 import java.awt.event.WindowAdapter ;
 import java.awt.event.WindowEvent ;
 import javax.swing.JTable ;
 import javax.swing.JScrollPane ;
 import javax.swing.JFrame ;
 import javax.swing.JPanel ;
 import javax.swing.DefaultCellEditor ;
 import javax.swing.JComboBox ;
 import javax.swing.table.AbstractTableModel ;

 class DefaultTable extends AbstractTableModel{
  private String[] titles = {"姓名","年龄","性别","数学成绩","英语成绩","总分","是否及格"} ;
  private Object [][] userInfo = {
    {"李兴华",30,"男",89,97,186,true} ,
    {"李康",23,"女",90,93,183,false}
   } ; // 定义数据
  public int getColumnCount(){ // 取得列的数量
   return this.titles.length ;
  }
  public int getRowCount(){  // 取得行的数量
   return this.userInfo.length ;
  }
  public Object getValueAt(int rowIndex, int columnIndex){
   return this.userInfo[rowIndex][columnIndex] ;
  }
  public String getColumnName(int columnIndex){
   return this.titles[columnIndex] ;
  }
  public Class<?> getColumnClass(int columnIndex) { // 得到指定列的类型
   return this.getValueAt(0,columnIndex).getClass() ;
  }
  public boolean isCellEditable(int rowIndex, int columnIndex){ // 所有内容都可以编辑
   return true ;
  }
  public void setValueAt(Object aValue, int rowIndex, int columnIndex){
   this.userInfo[rowIndex][columnIndex] = aValue ;
  }
 }

 class TableColumnModelDemo{
  private JFrame frame = new JFrame("Welcome To MLDN") ;
  private JTable table = null ;
  private DefaultTable defaultTable = new DefaultTable() ; // TableModel
  private JComboBox sexList = new JComboBox() ;
  public TableColumnModelDemo(){
   this.table = new JTable(this.defaultTable) ;
   this.sexList.addItem("男") ;
   this.sexList.addItem("女") ;
   // 以下拉列表框的形式显示
   this.table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(this.sexList)) ;
   JScrollPane scr = new JScrollPane(this.table) ;
   JPanel toolBar = new JPanel() ;
   frame.add(toolBar,BorderLayout.NORTH) ; // 加入组件
   frame.add(scr,BorderLayout.CENTER) ; // 加入组件
   frame.setSize(370,90) ;
   frame.setVisible(true) ;
   frame.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     System.exit(1) ;
    }
   }) ;
  }
 }

 public class JTableDemo02{
  public static void main(String args[]){
   new TableColumnModelDemo() ;  
  }
 }

代码三:
 import java.awt.BorderLayout ;
 import java.awt.event.WindowAdapter ;
 import java.awt.event.ActionListener ;
 import java.awt.event.WindowEvent ;
 import java.awt.event.ActionEvent ;
 import javax.swing.JTable ;
 import javax.swing.JButton ;
 import javax.swing.JScrollPane ;
 import javax.swing.JFrame ;
 import javax.swing.JPanel ;
 import javax.swing.DefaultCellEditor ;
 import javax.swing.JComboBox ;
 import javax.swing.table.DefaultTableModel ;
 import javax.swing.table.TableColumnModel ;
 import javax.swing.table.TableColumn ;

 class ChangeTable implements ActionListener{ // 通过按钮实现动态表格
  private JFrame frame = new JFrame("Welcome To MLDN") ;
  private JTable table = null ;
  private DefaultTableModel tableModel ; // TableModel
  private String[] titles = {"姓名","年龄","性别","数学成绩","英语成绩","总分","是否及格"} ;
  private Object [][] userInfo = {
    {"李兴华",30,"男",89,97,186,true} ,
    {"李康",23,"女",90,93,183,false}
   } ; // 定义数据
  private JButton addRowBtn = new JButton("增加行") ;  // 定义按钮
  private JButton removeRowBtn = new JButton("删除行") ;  // 定义按钮
  private JButton addColBtn = new JButton("增加列") ;  // 定义按钮
  private JButton removeColBtn = new JButton("删除列") ;  // 定义按钮
  public ChangeTable(){
   this.tableModel = new DefaultTableModel(this.userInfo,this.titles) ;
   this.table = new JTable(this.tableModel) ;
   JScrollPane scr = new JScrollPane(this.table) ;
   JPanel toolBar = new JPanel() ;
   toolBar.add(this.addRowBtn) ;
   toolBar.add(this.removeRowBtn) ;
   toolBar.add(this.addColBtn) ;
   toolBar.add(this.removeColBtn) ;
   frame.add(toolBar,BorderLayout.NORTH) ; // 加入组件
   frame.add(scr,BorderLayout.CENTER) ; // 加入组件
   frame.setSize(370,160) ;
   frame.setVisible(true) ;
   frame.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     System.exit(1) ;
    }
   }) ;
   this.addRowBtn.addActionListener(this) ;
   this.removeRowBtn.addActionListener(this) ;
   this.addColBtn.addActionListener(this) ;
   this.removeColBtn.addActionListener(this) ;


  }
  public void actionPerformed(ActionEvent e){
   if(e.getSource() == this.addColBtn){ // 增加列
    this.tableModel.addColumn("新增列") ;
   }
   if(e.getSource() == this.addRowBtn){
    this.tableModel.addRow(new Object[]{}) ;
   }
   if(e.getSource()==this.removeColBtn){
    int colCount = this.tableModel.getColumnCount() - 1 ;// 取得列的数量
    if(colCount>=0){
     // 如果要想删除,则必须找到TableColumnModel
     TableColumnModel columMode = this.table.getColumnModel()  ;
     TableColumn taleColumn = columMode.getColumn(colCount) ;
     columMode.removeColumn(taleColumn) ; // 删除指定的列
     this.tableModel.setColumnCount(colCount) ;
    }
   }
   if(e.getSource()==this.removeRowBtn){
    int rowCount = this.tableModel.getRowCount() - 1 ;
    if(rowCount>=0){ // 判断是否还有行可以删除
     this.tableModel.removeRow(rowCount) ;
     this.tableModel.setRowCount(rowCount) ; // 设置新的行数
    }
   }
  }
 }

 public class JTableDemo03{
  public static void main(String args[]){
   new ChangeTable() ;  
  }
 }

你可能感兴趣的:(swing,String,object,table,Class,import)