大家帮忙看下, 错误在什么地方怎么改? 运行不显示表格!!
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.text.SimpleDateFormat;import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;public class ExpenseReport extends JFrame 
{
  protected JTable m_table;
  protected ExpenseReportData m_data;
  protected JLabel m_title;  public ExpenseReport() {
    super("Expense Report");
    setSize(1200, 200);    m_data = new ExpenseReportData(this);    m_table = new JTable();
    m_table.setAutoCreateColumnsFromModel(false);
    m_table.setModel(m_data); 
    m_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
    JTableHeader header = m_table.getTableHeader();
    header.setUpdateTableInRealTime(false);
    
    JScrollPane ps = new JScrollPane();
    ps.setSize(550, 150);
    ps.getViewport().add(m_table);
    getContentPane().add(ps, BorderLayout.CENTER);    JPanel p = new JPanel();
    p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));    ImageIcon penny = new ImageIcon("penny.gif");
    p.add(Box.createHorizontalGlue());    JButton bt = new JButton("Add new one");
    bt.setMnemonic('b');
    bt.setAlignmentY(0.5f);
    ActionListener lst = new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        int row = m_table.getSelectedRow();
        m_data.insert(row);
        m_table.tableChanged(new TableModelEvent(
          m_data, row, row, TableModelEvent.ALL_COLUMNS, 
          TableModelEvent.INSERT)); 
        m_table.repaint();
      }
    };
    bt.addActionListener(lst);
    p.add(bt);    
    bt = new JButton("Delete this row");
    bt.setMnemonic('d');
    bt.setAlignmentY(0.5f);
    lst = new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        int row = m_table.getSelectedRow();
        if (m_data.delete(row)) {
          m_table.tableChanged(new TableModelEvent(
            m_data, row, row, TableModelEvent.ALL_COLUMNS,
            TableModelEvent.INSERT)); 
          m_table.repaint();        }
      }
    };
    bt.addActionListener(lst);
    p.add(bt);
      
    
    
    getContentPane().add(p, BorderLayout.SOUTH);
    WindowListener wndCloser = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    };
    addWindowListener(wndCloser);
    
    setVisible(true);
  }
  public static void main(String argv[]) {
    new ExpenseReport();
  }
}class CheckCellRenderer extends JCheckBox implements TableCellRenderer
{
  protected static Border m_noFocusBorder;  public CheckCellRenderer() {
    super();
    m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
    setOpaque(true);
    setBorder(m_noFocusBorder);
  }  public Component getTableCellRendererComponent(JTable table,
   Object value, boolean isSelected, boolean hasFocus, 
   int row, int column) 
  {
    if (value instanceof Boolean) {
      Boolean b = (Boolean)value;
      setSelected(b.booleanValue());
    }    setBackground(isSelected && !hasFocus ? 
      table.getSelectionBackground() : table.getBackground());
    setForeground(isSelected && !hasFocus ? 
      table.getSelectionForeground() : table.getForeground());
        
    setFont(table.getFont());
    setBorder(hasFocus ? UIManager.getBorder(
      "Table.focusCellHighlightBorder") : m_noFocusBorder);    return this;
  }
}
class ExpenseData
{
  public String firstname;
  public String lastname;
  public String id;
  public String gender;
  public String birthday;
  public String address;
  public String designation;
  public String status;

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【pupilstudent2008】截止到2008-08-01 06:31:04的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:4                        得分贴总数量:2                        回帖的得分率:50%                      
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=pupilstudent2008
      

  2.   

    public ExpenseData() {
        firstname = "";
        lastname = "";
        id = "";
        birthday = "";
        gender = "";
        address = "";
        designation = "";
        status = "";
      }  public ExpenseData(String fn,String ln, String idn, String gen, String birth,String ads, String des, String st) 
      {
        firstname = fn;
        lastname = ln;
        id = idn;
        birthday = birth;
        gender = gen;
        address = ads;
        designation = des;
        status = st;
      }
    }class ColumnData
    {
      public String  m_title;
      int m_width;
      int m_alignment;  public ColumnData(String title, int width, int alignment) {
        m_title = title;
        m_width = width;
        m_alignment = alignment;
      }
    }class ExpenseReportData extends AbstractTableModel 
    {
      public static final ColumnData m_columns[] = {
        new ColumnData( "First  Name", 80, JLabel.LEFT ),
        new ColumnData( "Last  Name", 80, JLabel.RIGHT ),
        new ColumnData( "ID Num", 80, JLabel.LEFT ),
        new ColumnData( "Gender", 80, JLabel.LEFT ),
        new ColumnData(" Birthday", 80,JLabel.LEFT ),
        new ColumnData( "Address", 180, JLabel.LEFT ),
        new ColumnData( "Designation", 80, JLabel.LEFT ),
        new ColumnData( "Employment Status", 100, JLabel.LEFT )
      };  public static final int COL_FIRSTNAME = 0;
      public static final int COL_LASTNAME = 1;
      public static final int COL_ID = 2;
      public static final int COL_GENDER = 3;
      public static final int COL_BIRTHDAY = 4; 
      public static final int COL_ADDRESS = 5;
      public static final int COL_DESIGNATION = 6;
      public static final int COL_STATUS = 7;  protected ExpenseReport m_parent;
      protected Vector m_vector;  public ExpenseReportData(ExpenseReport parent) {
        m_parent = parent;    m_vector = new Vector();
        setDefaultData();
      }  
      public void setDefaultData() {
          
          m_vector.removeAllElements();
       
          m_vector.addElement(new ExpenseData("Kai","Wu","i07007495","Male","5/26/1988 ","INTI hostle block H","leader ","Confirmed "));
          m_vector.addElement(new ExpenseData("234 ","34 "," 34"," ","3 "," 3","34 ","43 "));
        }  
      
      public int getRowCount() {
        return m_vector==null ? 0 : m_vector.size(); 
      }  public int getColumnCount() { 
        return m_columns.length; 
      }   public String getColumnName(int column) { 
        return m_columns[column].m_title; 
      }
     
      public boolean isCellEditable(int nRow, int nCol) {
        return true;
      }  
      
      public Object getValueAt(int nRow, int nCol) {
        if (nRow < 0 || nRow>=getRowCount())
          return "";
        ExpenseData row = (ExpenseData)m_vector.elementAt(nRow);
        switch (nCol) {
          case COL_FIRSTNAME: return row.firstname;
          case COL_LASTNAME:return  row.lastname;
          case COL_ID:return row.id;
          case COL_GENDER:return  row.gender;      
          case COL_BIRTHDAY:return  row.birthday;
          case COL_ADDRESS:return  row.address;
          case COL_DESIGNATION:return  row.designation;
          case COL_STATUS:return row.status;
          
        }
        return "";
      }  public void setValueAt(Object value, int nRow, int nCol) {
        if (nRow < 0 || nRow>=getRowCount())
          return;
        ExpenseData row = (ExpenseData)m_vector.elementAt(nRow);
        String svalue = value.toString();    switch (nCol) {
         case COL_FIRSTNAME: 
          row.firstname = svalue;
          break;      case COL_LASTNAME:
           row.lastname = svalue;
           break;
           
          case COL_ID:
           row.id = svalue;
           break;
           
          case COL_GENDER:
           row.gender = svalue; 
           break;
           
          case COL_BIRTHDAY:
           row.birthday = svalue; 
           break;
           
          case COL_ADDRESS:
           row.address = svalue; 
           break;
           
          case COL_DESIGNATION:
           row.designation = svalue; 
            break;
            
          case COL_STATUS:
            row.status = svalue; 
           break;  
           
        }
      }  public void insert(int row) {
        if (row < 0)
          row = 0;
        if (row > m_vector.size())
          row = m_vector.size();
        m_vector.insertElementAt(new ExpenseData(), row);
      }  public boolean delete(int row) {
        if (row < 0 || row >= m_vector.size())
          return false;
        m_vector.remove(row);
          return true;
      }
    }
      

  3.   

     m_table.setAutoCreateColumnsFromModel(true);    把這個改成true 就行了~  你用的是false
      

  4.   


    对!
    这部分好像没什么用, 楼主删除看看!class CheckCellRenderer extends JCheckBox implements TableCellRenderer
    {
      protected static Border m_noFocusBorder;  public CheckCellRenderer() {
        super();
        m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
        setOpaque(true);
        setBorder(m_noFocusBorder);
      }  public Component getTableCellRendererComponent(JTable table,
      Object value, boolean isSelected, boolean hasFocus,
      int row, int column)
      {
        if (value instanceof Boolean) {
          Boolean b = (Boolean)value;
          setSelected(b.booleanValue());
        }    setBackground(isSelected && !hasFocus ?
          table.getSelectionBackground() : table.getBackground());
        setForeground(isSelected && !hasFocus ?
          table.getSelectionForeground() : table.getForeground());
           
        setFont(table.getFont());
        setBorder(hasFocus ? UIManager.getBorder(
          "Table.focusCellHighlightBorder") : m_noFocusBorder);    return this;
      }
    }