📄 mytablemodel.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 + -