Java JTable 實現數據動態更新


  問題出現:
        設計局域網之間文件傳輸的軟件的時候,想要動態更新用戶列表JTable中數據的內容;
    實現思想:
        每次用戶列表數據更新的時候重新設置JTable中的數據,然后調用jtable.setUI()更新JTable控件的數據;
    注意問題:
        每次要先清空JTable中的數據,因為JTable中的數據就是userdata中的數據,而userdata的數據是通過add加進去的,所以之前的數據一直在;重新調用setUserTableData 的時候,是在JTable中添加數據;
        添加到userdata中的row要每次重新new,row代表的行;new一個新的row代表新增加一行,沒有重新new那么row。add("數據")中的數據是加在每行的行尾,而不是新行;
    錯誤方式:
        public void setUserTableData() {
            //設置usertable數據;
            //((DefaultTableModel)usertable.getModel()).getDataVector().clear();
            //清空table的數據,重新寫入;
            Vector<String> row = new Vector<String>(); //錯誤
            for(int i = 0;i < userList.size(); i++){
                row.add(userList.get(i));
                userdata.add(row);
            }
            Vector<String> title = new Vector<String>();
            title.add("在線用戶列表");

            dtmView = new DefaultTableModel(userdata, title);
            this.usertable.setModel(dtmView);
            jth = this.usertable.getTableHeader();
        }

正確方式:
public void setUserTableData() {
            //設置usertable數據;
            ((DefaultTableModel)usertable.getModel()).getDataVector().clear();
            //清空table的數據,重新寫入;
            Vector<String> row = null;
            for(int i = 0;i < userList.size(); i++){
                row = new Vector<String>(); 
                row.add(userList.get(i));
                userdata.add(row); // 添加數據到userdata中
            }
            Vector<String> title = new Vector<String>();
            title.add("在線用戶列表");

            dtmView = new DefaultTableModel(userdata, title); //添加userdata到JTable中
            this.usertable.setModel(dtmView);
            jth = this.usertable.getTableHeader();
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM