package com.vci.client.framework.rightConfig.operate;
|
|
import java.awt.Component;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.io.Serializable;
|
import java.util.Vector;
|
|
import javax.swing.JCheckBox;
|
import javax.swing.JComboBox;
|
import javax.swing.JList;
|
import javax.swing.ListCellRenderer;
|
import javax.swing.SwingUtilities;
|
import javax.swing.UIManager;
|
import javax.swing.border.Border;
|
import javax.swing.border.EmptyBorder;
|
|
/**
|
* 用于多选的JCombobox
|
* @author liudi
|
*
|
*/
|
public class MyComboBox extends JComboBox implements ActionListener {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
|
public MyComboBox() {
|
addItem(new CheckValue(false, "Select All"));
|
this.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent ae) {
|
itemSelected();
|
}
|
});
|
}
|
|
private void itemSelected() {
|
if (getSelectedItem() instanceof CheckValue) {
|
if (getSelectedIndex() == 0) {
|
selectedAllItem();
|
} else {
|
CheckValue jcb = (CheckValue) getSelectedItem();
|
jcb.bolValue = (!jcb.bolValue);
|
setSelectedIndex(getSelectedIndex());
|
}
|
SwingUtilities.invokeLater(new Runnable() {
|
public void run() {
|
showPopup();
|
}
|
});
|
}
|
}
|
|
private void selectedAllItem() {
|
boolean bl = false;
|
for (int i = 0; i < getItemCount(); i++) {
|
CheckValue jcb = (CheckValue) getItemAt(i);
|
if (i == 0) {
|
bl = !jcb.bolValue;
|
}
|
jcb.bolValue = (bl);
|
}
|
setSelectedIndex(0);
|
}
|
|
public Vector getComboVc() {
|
Vector vc = new Vector();
|
for (int i = 1; i < getItemCount(); i++) {
|
CheckValue jcb = (CheckValue) getItemAt(i);
|
if (jcb.bolValue) {
|
vc.add(jcb.value);
|
}
|
}
|
return vc;
|
}
|
}
|
|
class CheckListCellRenderer extends JCheckBox implements ListCellRenderer,
|
Serializable {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = -480009971086827966L;
|
protected static Border noFocusBorder;
|
|
/**
|
* Constructs a default renderer object for an item in a list.
|
*/
|
public CheckListCellRenderer() {
|
super();
|
if (noFocusBorder == null) {
|
noFocusBorder = new EmptyBorder(1, 1, 1, 1);
|
}
|
setOpaque(true);
|
setBorder(noFocusBorder);
|
}
|
|
public Component getListCellRendererComponent(JList list, Object value,
|
int index, boolean isSelected, boolean cellHasFocus) {
|
setComponentOrientation(list.getComponentOrientation());
|
if (isSelected) {
|
setBackground(list.getSelectionBackground());
|
setForeground(list.getSelectionForeground());
|
} else {
|
setBackground(list.getBackground());
|
setForeground(list.getForeground());
|
}
|
if (value instanceof CheckValue) {
|
CheckValue ckValue = (CheckValue) value;
|
this.setText(ckValue.value == null ? "" : ckValue.value);
|
this.setSelected(ckValue.bolValue);
|
}
|
setEnabled(list.isEnabled());
|
setFont(list.getFont());
|
setBorder((cellHasFocus) ? UIManager
|
.getBorder("List.focusCellHighlightBorder") : noFocusBorder);
|
return this;
|
}
|
}
|
|
class CheckValue {
|
public boolean bolValue = false;
|
public String value = null;
|
|
public CheckValue() {
|
}
|
|
public CheckValue(boolean bolValue, String value) {
|
this.bolValue = bolValue;
|
this.value = value;
|
}
|
}
|