⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytablemodel.java

📁 这是一个在linux环境下
💻 JAVA
字号:
package fr.umlv.projet.fenetre;
import java.util.ArrayList;
import java.util.List;

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

import fr.umlv.projet.IG.Processus;
import fr.umlv.projet.IG.Processuses;


@SuppressWarnings("serial")
public class MyTableModel extends AbstractTableModel implements TableModelListener{
	
	private List<String> columnName = new ArrayList<String>();
	private String[][] data = null;// = new String[1][2];//null;//listProcess = new ArrayList<Processus>();
	private List<Integer> indexes = new ArrayList<Integer>();
	private List<Integer> listPid = new ArrayList<Integer>();
	//private int row = Processuses.getProcessNumber();
	public MyTableModel(String[] name){
		for(String s:name)
			columnName.add(s);
		allocate();
	}
	
	public MyTableModel(List<String> list){
		this.columnName = list;
	}
	
	public void setData(String[][] data){
		this.data = data;
	}
	
	public int getRowCount() {
		//System.out.println("test"+Processuses.getProcessNumber());
		if(data==null)
			return 0;
		//return row;
		return Processuses.getProcessNumber();
	}
	
	public int getColumnCount() {
		return columnName.size();
	}
	
//	public Object getValueAt(int arg0, int arg1) {
//	return data[arg1][arg0];
//	}
	
	public Object getValueAt(int row, int column) {
//		System.out.println("row "+row+" column "+column);
		return data[column][indexes.get(row)];
		//	return data[column][row];
	}
	
	public Object valueAt(int row, int column) {
		//	return data[column][indexes[row]];
		return data[column][row];
	}
	
	public void setValueAt(Object aValue, int row, int column) {
		this.setValueAt(aValue, indexes.get(row), column);
	}
	
	@Override
	public String getColumnName(int column)
	{
		return columnName.get(column);
	}
	
	public void setColumnName(String[] name){
		for(String s:name)
			columnName.add(s);
	}
	
	public void setColumnName(List<String> list){
		this.columnName = list;
	}
	
	public List<String> getColumnName(){
		return columnName;
	}
	
	public void tableChanged(TableModelEvent e) {
		System.out.println("table changed 0 !!  "+"number "+Processuses.getProcessNumber()+"  "+listPid.size()+"  index "+indexes.size());
		indexesChange(e);
		System.out.println(indexes);
		System.out.println("table changed 1 !!  "+"number "+Processuses.getProcessNumber()+"  "+listPid.size()+"  index "+indexes.size());
	}
	
//	public void tableChanged(new Table) {
//}

	
	public void indexesChange(TableModelEvent e){
		for(int i = 0;i<listPid.size();i++){
			if(!Processuses.isExist(listPid.get(i))){
				System.out.println("run!!!");
				listPid.remove(i);
				int index = indexes.indexOf(i);
				indexes.remove(index);
				
				for(int p=0;p<indexes.size();p++){
					if(indexes.get(p)>i){
						System.out.println("moins");
						int value = indexes.get(p);
						indexes.set(p,--value);
					}
				}
			i--;
			} 
		}
		List<Processus> listProcessus = Processuses.getProcessusList();
		for(int i=0;i<listProcessus.size();i++){
			if(!listPid.contains(listProcessus.get(i).getPid())){
				indexes.add(i);
				listPid.add(listProcessus.get(i).getPid());
			}
		}
	}
	
	
	public void sort(int column) {
		System.out.println("SortString");
		int rowCount = getRowCount();
		for(int i=0; i < rowCount; i++) {
			for(int j = i+1; j < rowCount; j++) {
//				System.out.println("i "+i+"  "+"j "+j);
				if(compare(indexes.get(i), indexes.get(j), column) < 0) {
					swap(i,j);
				}
			}
		}
	}
	
	private void swap(int i, int j) {
		int tmp = indexes.get(i);
		indexes.set(i,indexes.get(j));
		indexes.set(j,tmp);
	}
	
	private int compare(int i, int j, int column) {
		String is = this.valueAt(i,column).toString().toLowerCase();
		String js = this.valueAt(j,column).toString().toLowerCase();
		char i1 = is.charAt(0);
		char j1 = js.charAt(0);
		if(i1!=j1){
			int test = (int)j1-(int)i1;
//			System.out.print("i "+i+"  "+"j "+j);
//			System.out.print("  "+"i1 "+i1+"  "+"j1 "+j1);
//			System.out.println("  "+"test "+test);
			//int c = js.toString().compareTo(is.toString());
			//return (c < 0) ? -1 : ((c > 0) ? 1 : 0);
			return test;
		}
		else{
			int test = (int)js.charAt(1)-(int)is.charAt(1);
			return test;
		}
	}
	private void allocate() {
		setListPid();
		for(int i=0; i < Processuses.getProcessNumber(); ++i) {
			indexes.add(i);
		}
	}
	
	public void sortNumber(int column) {
		System.out.println("SortNumber");
		int rowCount = getRowCount();
		for(int i=0; i < rowCount-1; i++) {
			for(int j = i+1; j < rowCount; j++) {
				if(compareNumber(indexes.get(i), indexes.get(j), column) < 0) {
					swap(i,j);
				}
			}
		}
	}
	
	private int compareNumber(int i, int j, int column) {
		String is = this.valueAt(i,column).toString();
		String js = this.valueAt(j,column).toString();
		int ii = Integer.parseInt(is);
		int ji = Integer.parseInt(js);
		return ji-ii;
	}
	
	public List<Integer> getIndexes(){
		return indexes;
	}
	
	public void setListPid(){
		for(Processus proc : Processuses.getProcessusList())
			listPid.add(proc.getPid());
	}

}

⌨️ 快捷键说明

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