📄 groupresultpanel.java
字号:
package cq_result_trans.application;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import com.borland.jbcl.layout.*;
import java.util.*;
import mddb.client.*;
import mddb.client.components.*;
//专门用来显示分组结果的Panel
public class GroupResultPanel
extends JPanel {
//my variables
AppFrame frame;
public boolean isShowing = false; //表示这个Panel是否正在被显示,即若没被显示就不用更新
private String[] colname = {"ID", "MasterID","Position","NeighbourList"};
DefaultTableModel tableModel;
ColorTableCellRenderer colorRender;
JTable groupTable;
void groupPanelInit(AppFrame frame,JTable groupTable) throws Exception {
this.frame = frame;
this.setDoubleBuffered(true);
this.groupTable = groupTable;
tableModel = new DefaultTableModel( colname, 0 );
TableColumn column = null;
this.groupTable.setModel(tableModel);
for( int i = 0; i < 4; i++ ) {
column = groupTable.getColumnModel().getColumn( i );
if( i < 3 ) {
column.setPreferredWidth( 10 );
column.setWidth( 10 );
}else if(i == 2)
column.setPreferredWidth( 80 );
else {
column.setPreferredWidth( 300 );
}
}
colorRender = new ColorTableCellRenderer();
}
//-----------------------------------------------------------------------
private void removeAllItems(){
for( int i = tableModel.getRowCount() - 1; i >= 0; i-- ) {
tableModel.removeRow( i );
}
}
//参数:节点数量,和其映像节点
public void updatePanel( int nodeAmount, Node[] nodes ) {
removeAllItems();
String[] rowData = new String[4];
StringBuffer sb;
for(int i = 0; i < nodeAmount; i++)
{
if(nodes[i].mapNode.isMaster()){
rowData[0] = String.valueOf(nodes[i].mapNode.getID());
rowData[1] = String.valueOf(nodes[i].mapNode.getMasterId());
rowData[2] = nodes[i].mapNode.getPosition().toString();
sb = new StringBuffer();
int nebrSize = nodes[i].mapNode.getNeighbourList().getSize();
NeighbourList nebrTemp;
for( int j = 0; j < nebrSize; j++){
nebrTemp = nodes[j].mapNode.getNeighbourList();
sb.append(nebrTemp.getNebrId(j)+" ");
}
rowData[3] = sb.toString();
tableModel.addRow(rowData);
}
}
this.groupTable.setModel(tableModel);
//设置列表现器------------------------//
for( int i = 0; i < colname.length; i++ ) {
this.groupTable.getColumn( colname[i] ).setCellRenderer( colorRender );
}
}
}
//列表现器,让table的Master所在的列出现间隔色
class ColorTableCellRenderer
extends DefaultTableCellRenderer
implements TableCellRenderer {
public Component getTableCellRendererComponent( JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
long id = Long.parseLong( (String)table.getValueAt(row, 0));
long masterId = Long.parseLong( (String)table.getValueAt(row,1));
if( id == masterId ) {
setBackground( new Color( 206, 231, 255 ) ); //设置底色
}
return super.getTableCellRendererComponent( table, value,
isSelected, hasFocus, row, column );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -