现在的位置: 首页 > 综合 > 正文

工作表

2013年10月08日 ⁄ 综合 ⁄ 共 5733字 ⁄ 字号 评论关闭

import javax.swing.JFrame;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.Vector;
import javax.swing.table.*;
import java.awt.event.*;

public class WorkTable extends JFrame {
    private String[] columnName={"date","work","study at home","the state of complication"};
    private Object[][] rowData={};
    private DefaultTableModel tm=new DefaultTableModel(rowData,columnName);
    private JTable jt=new JTable(tm);
    private JButton jbar=new JButton("add new row");
    private JButton jbac=new JButton("add new column");
    private JButton jbdr=new JButton("delete selected row");
    private JButton jbdc=new JButton("delete selected column");
    private JButton jbs=new JButton("save");
    private JButton jbc=new JButton("clear");
    private JButton jbr=new JButton("restore");
    private JComboBox jcb=new JComboBox(new String[]
            {"SINGLE_SELECTION","SINGLE_INTERVAL_SELECTION",
        "MULTIPLE_INTERVAL_SELECTION"});
    private JCheckBox jcbr=new JCheckBox("RowSelectionAllowed",true);
    private JCheckBox jcbc=new JCheckBox("ColumnSectionAllowed",false);
  
    public WorkTable(){
        setTitle("work table");
        setSize(800,400);
        JPanel jp1=new JPanel();
        jp1.setLayout(new GridLayout(2,2));
        jp1.add(jbar);
        jp1.add(jbac);
        jp1.add(jbdr);
        jp1.add(jbdc);
      
        JPanel jp2=new JPanel();
        jp2.add(jbs);
        jp2.add(jbc);
        jp2.add(jbr);
      
        JPanel jp3=new JPanel();
        jp3.setLayout(new BorderLayout(5,0));
        jp3.add(new JLabel("Selection Mode"),BorderLayout.WEST);
        jp3.add(jcb,BorderLayout.CENTER);
      
        JPanel jp4=new JPanel();
        jp4.setLayout(new FlowLayout(FlowLayout.LEFT));
        jp4.add(jcbr);
        jp4.add(jcbc);
      
        JPanel jp5=new JPanel();
        jp5.setLayout(new GridLayout(2,1));
        jp5.add(jp3);
        jp5.add(jp4);
      
        JPanel jp6=new JPanel();
        jp6.setLayout(new BorderLayout());
        jp6.add(jp1,BorderLayout.SOUTH);
        jp6.add(jp2,BorderLayout.CENTER);
      
        getContentPane().add(jp5,BorderLayout.NORTH);
        getContentPane().add(new JScrollPane(jt),BorderLayout.CENTER);
        getContentPane().add(jp6,BorderLayout.SOUTH);
      
        jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      
        jbar.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
          
                    tm.addRow(new java.util.Vector());
            }
        });
        jbac.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                String name=JOptionPane.showInputDialog("new column name");
                tm.addColumn(name,new java.util.Vector());
            }
        });
        jbdr.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(jt.getSelectedRow()>0)
                    tm.removeRow(jt.getSelectedRow());
            }
        });
        jbdc.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(jt.getSelectedColumn()>0){
                    TableColumnModel cm=jt.getColumnModel();
                    TableColumn tc=cm.getColumn(jt.getSelectedColumn());
                    cm.removeColumn(tc);
                }
            }
        });
        jbs.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                try{
                    ObjectOutputStream out=
                        new ObjectOutputStream(new FileOutputStream("tm.dat"));
                    out.writeObject(tm.getDataVector());
                    out.writeObject(getColumnNames());
                    out.close();
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
        });
        jbc.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                tm.setRowCount(0);
            }
        });
        jbr.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                try{
                    ObjectInputStream in=
                        new ObjectInputStream(new FileInputStream("tm.dat"));
                    Vector rowData=(Vector)in.readObject();
                    Vector columnNames=(Vector)in.readObject();
                    tm.setDataVector(rowData, columnNames);
                    in.close();
                }
                catch(Exception ex){
                    ex.printStackTrace();
                }
            }
        });
        jcbr.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jt.setRowSelectionAllowed(jcbr.isSelected());
            }
        });
        jcbc.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jt.setColumnSelectionAllowed(jcbc.isSelected());
            }
        });
        jcb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                String si=(String)jcb.getSelectedItem();
                if(si.equals("SINGLE_SELECTION"))
                    jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
                else if(si.equals("SINGLE_INTERVAL_SELECTION"))
                    jt.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
                else if(si.equals("MULTIPLE_INTERVAL_SELECTION"))
                    jt.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
              
            }
        });
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    private Vector getColumnNames(){
        Vector columnNames=new Vector();
        for(int i=0;i<jt.getColumnCount();i++)
            columnNames.add(tm.getColumnName(i));
        return columnNames;
    }
    public static void main(String arg[]){
        WorkTable wt=new WorkTable();
        wt.setVisible(true);
    }

}

抱歉!评论已关闭.