clientfriendtablemodel.java

来自「JAVA实现的聊天工具,可以容纳最多10个用户 1.本系统需要JDK1.5 」· Java 代码 · 共 94 行

JAVA
94
字号
//table model to show a client friends info
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
public class ClientFriendTableModel extends DefaultTableModel{
	private static int friendNum,clientID;
	private static String[] columnNames ;
    private static Object[][] data ;
    static Object[] longValues; //compare criteria
    
    static boolean initiate(int n,int id,LinkedList<Long> friendIDList){
    	boolean initiated=false;
    	friendNum=n;
    	clientID=id;
    	ClientData friend=null;
    	columnNames = new String[]{"ID","Name","Online","IP","Age","Sex",
    			"From","E-mail",/**/"Registered Date"};
    	
    	longValues=new Object[]{new Long(1000),"mycoy zwz",Boolean.FALSE,"196.128.101.1000",
				"200","Female","American","zw_z7@hotmail.com",(new Date()).toString()+"1"};
    	
    	data=new Object[friendNum][9];
    	for(int i=0;i<friendNum;i++){
    		try{
    			friend=Server.getServerDatabase().findClient(friendIDList.get(i));
    		}catch(IndexOutOfBoundsException e){ //may be the id of a client in the online-list has been deled
				continue;
			}
    		if(friend==null) //friend in list but it has been deled by adm
    			continue;
    		int j=0;  //add info to data[][]
			data[i][j++]=new Long(friend.getID());
			data[i][j++]=friend.getName();
			data[i][j++]=new Boolean(friend.isOnline());
			data[i][j++]=friend.getIP();
			data[i][j++]=friend.getAge();
			data[i][j++]=friend.getSex();
			data[i][j++]=friend.getFrom();
			data[i][j++]=friend.getMail();
			data[i][j++]=friend.getRegistryDate().toString();
			initiated=true;
    	}
    	return initiated; ////friend in list but it has been deled by adm
    }
    
    public int getColumnCount() {
        return columnNames.length;
    }

    public int getRowCount() {
        return data.length;
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Object getValueAt(int row, int col) {
        return data[row][col];
    }
    
    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }
    
    static void setTableWidth(JTable table){  //adjust table width appropriately
		ClientFriendTableModel model = (ClientFriendTableModel)table.getModel();
        TableColumn column = null;
        Component comp = null;
        int headerWidth = 0;
        int cellWidth = 0;
        Object[] longValues = model.longValues;
        TableCellRenderer headerRenderer =
            table.getTableHeader().getDefaultRenderer();

        for (int i = 0; i < 9; i++) {
            column = table.getColumnModel().getColumn(i);
            /*column.sizeWidthToFit();*/
            comp = headerRenderer.getTableCellRendererComponent(
                                 null, column.getHeaderValue(),
                                 false, false, 0, 0);
            headerWidth = comp.getPreferredSize().width;

            comp = table.getDefaultRenderer(model.getColumnClass(i)).
                             getTableCellRendererComponent(
                                 table, longValues[i],
                                 false, false, 0, i);
            cellWidth = comp.getPreferredSize().width; 

            column.setPreferredWidth(Math.max(headerWidth, cellWidth));
        }
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?