swing中jTable的數據動態添加效果

 swing中jTable的數據動態添加效果
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package login.frame;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//import org.refworld.narcotics.map;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author wenliang
 */
public class Jtable extends JFrame implements ActionListener, Runnable {

    private JButton bt1, bt2, bt3;
    private JScrollPane jspane;
    private JTable table;
    private JPanel btnPanel, mainPanel;
    private DefaultTableModel model;
    int a = 0;
    int b = 1;

    public Jtable() {//構造方法
        initComponents();
        this.getContentPane().add("Center", mainPanel);
        this.setSize(600, 300);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    private void initComponents() {//構造面板
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        model = new DefaultTableModel(new Object[][]{{"原始列", "原始列", "原始列"},
                    {"原始列", "原始列", "原始列"}, {"原始列", "原始列", "原始列"}},
                new String[]{"表頭1", "表頭2", "表頭3"});
        table = new JTable(model);
        jspane = new JScrollPane(table);
        bt1 = new JButton("加到第一行前");
        bt2 = new JButton("追加到最後一行");
        bt3 = new JButton("追加到當前行前");
        bt1.addActionListener(this);
        bt2.addActionListener(this);
        bt3.addActionListener(this);
        btnPanel = new JPanel(new GridLayout(1, 3));
        btnPanel.add(bt1);
        btnPanel.add(bt2);
        btnPanel.add(bt3);
        mainPanel = new JPanel(new BorderLayout(10, 10));
        mainPanel.add("Center", jspane);
        mainPanel.add("South", btnPanel);
    }

    public void actionPerformed(ActionEvent e) {
        Thread thread = new Thread(this);
        thread.start();

        Object object = e.getSource();
        if (object == bt1) { // 最加到第一行
            model.insertRow(0, new Object[]{"追加列_0", "追加列_0", "追加列_0"});
        } else if (object == bt2) {// 追加到最後行
        } else if (object == bt3) {// 追加到當前行前
            if (table.getSelectedRow() != -1) {
                model.insertRow(table.getSelectedRow(), new Object[]{
                            "追加列_0_0_0", "追加列_0_0_0", "追加列_0_0_0"});

            }

        }
    }

    /**
     * 測試MAIN方法已註釋掉.....
     * @param args
     */
    public static void main(String args[]) {//main 方法
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                Jtable jtable = new Jtable();

                jtable.setVisible(true);
            }
        });
    }

    public void run() {
        // TODO Auto-generated method stub

        while (true) {

            model.insertRow(model.getRowCount(), new Object[]{"追加列_0_0",
                        "追加列_0_0", "追加列_0_0"});
            // System.out.println(model.getRowCount());


            table.updateUI(); // 刷新

            System.out.println("刷新了一次" + a);
            a++;
            try {
                Thread.currentThread().sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章