class SortButtonRenderer extends JButton implements TableCellRenderer { public static final int NONE = 0;
public static final int DOWN = 1;
public static final int UP = 2; int pushedColumn;
Hashtable state;
JButton downButton,upButton; public SortButtonRenderer() {
setFont(new java.awt.Font("Dialog", 0, 13));
pushedColumn = -1;
state = new Hashtable(); setMargin(new Insets(0,0,0,0));
setHorizontalTextPosition(LEFT); downButton = new JButton();
downButton.setFont(new java.awt.Font("Dialog", 0, 13));
downButton.setMargin(new Insets(0,0,0,0));
downButton.setHorizontalTextPosition(LEFT); upButton = new JButton();
upButton.setFont(new java.awt.Font("Dialog", 0, 13));
upButton.setMargin(new Insets(0,0,0,0));
upButton.setHorizontalTextPosition(LEFT);
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JButton button = this;
Object obj = state.get(new Integer(column));
if (obj != null) {
if (((Integer)obj).intValue() == DOWN) {
button = downButton;
}else{
button = upButton;
}
}
button.setText((value ==null) ? "" : value.toString());
boolean isPressed = (column == pushedColumn);
button.getModel().setPressed(isPressed);
button.getModel().setArmed(isPressed);
return button;
} public void setPressedColumn(int col) {
pushedColumn = col;
} public void setSelectedColumn(int col) {
if (col < 0) return;
Integer value = null;
Object obj = state.get(new Integer(col));
if (obj == null) {
value = new Integer(DOWN);
} else {
if (((Integer)obj).intValue() == DOWN) {
value = new Integer(UP);
} else {
value = new Integer(DOWN);
}
}
state.clear();
state.put(new Integer(col), value);
} public int getState(int col) {
int retValue;
Object obj = state.get(new Integer(col));
if (obj == null) {
retValue = NONE;
} else {
if (((Integer)obj).intValue() == DOWN) {
retValue = DOWN;
} else {
retValue = UP;
}
}
return retValue;
}
}
public static final int DOWN = 1;
public static final int UP = 2; int pushedColumn;
Hashtable state;
JButton downButton,upButton; public SortButtonRenderer() {
setFont(new java.awt.Font("Dialog", 0, 13));
pushedColumn = -1;
state = new Hashtable(); setMargin(new Insets(0,0,0,0));
setHorizontalTextPosition(LEFT); downButton = new JButton();
downButton.setFont(new java.awt.Font("Dialog", 0, 13));
downButton.setMargin(new Insets(0,0,0,0));
downButton.setHorizontalTextPosition(LEFT); upButton = new JButton();
upButton.setFont(new java.awt.Font("Dialog", 0, 13));
upButton.setMargin(new Insets(0,0,0,0));
upButton.setHorizontalTextPosition(LEFT);
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JButton button = this;
Object obj = state.get(new Integer(column));
if (obj != null) {
if (((Integer)obj).intValue() == DOWN) {
button = downButton;
}else{
button = upButton;
}
}
button.setText((value ==null) ? "" : value.toString());
boolean isPressed = (column == pushedColumn);
button.getModel().setPressed(isPressed);
button.getModel().setArmed(isPressed);
return button;
} public void setPressedColumn(int col) {
pushedColumn = col;
} public void setSelectedColumn(int col) {
if (col < 0) return;
Integer value = null;
Object obj = state.get(new Integer(col));
if (obj == null) {
value = new Integer(DOWN);
} else {
if (((Integer)obj).intValue() == DOWN) {
value = new Integer(UP);
} else {
value = new Integer(DOWN);
}
}
state.clear();
state.put(new Integer(col), value);
} public int getState(int col) {
int retValue;
Object obj = state.get(new Integer(col));
if (obj == null) {
retValue = NONE;
} else {
if (((Integer)obj).intValue() == DOWN) {
retValue = DOWN;
} else {
retValue = UP;
}
}
return retValue;
}
}
上次没人回答吗?