NC65 单据卡片表格头部增加全选checkBox
NC65 单据卡片表格头部增加全选checkBox
销售出库单为例
package nc.ui.ic.m4c.ext;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;
import nc.ui.pub.beans.UICheckBox;
import nc.ui.pub.beans.UILabel;
import nc.ui.pub.beans.UITable;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.bill.BillModel;
import nc.ui.pub.bill.table.DefaultTableHeaderCellRenderer;
public class UserDefTableCellRenderer extends DefaultTableHeaderCellRenderer {
JTableHeader tableHeader;
UICheckBox selectBox;
nc.ui.pub.bill.BillModel tmodel;
UITable t;
String f;
int s;
//int colindex;
public UserDefTableCellRenderer(UITable table,String field, int selectcol) {
// TODO Auto-generated constructor stub
this.tmodel = (BillModel) table.getModel();
this.tableHeader = table.getTableHeader();
this.t = table;
this.s = selectcol;
String name = tmodel.getItemByKey(field).getName();
selectBox = new UICheckBox(name);
selectBox.setSelected(false);
this.f = field;
/*表头复选框点击事件*/
tableHeader.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if (e.getClickCount() > 0) {
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if(selectColumn==s){
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
int colindex = tmodel.getItemIndex(f);
tableHeader.repaint();
int rows = t.getRowCount();
for (int row = 0; row < rows; row++) {
tmodel.setValueAt(value, row, colindex);
}
}
}
}
});
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
String valueStr = (String) value;
UILabel label = new UILabel(valueStr);
label.setHorizontalAlignment(SwingConstants.CENTER); // 表头标签剧中
selectBox.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
selectBox.setBorderPainted(true);
//JComponent component = (column == colindex) ? selectBox : label;
JComponent component = selectBox;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return component;
}
}
package nc.ui.ic.m4c.view;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import nc.ui.ic.m4c.ext.UserDefTableCellRenderer;
import nc.ui.pub.bill.BillItem;
public class SaleOutBizViewExt extends SaleOutBizView {
@Override
public void initUI() {
// TODO Auto-generated method stub
super.initUI();
List<String> checkBoxFileds = new ArrayList<String>();
BillItem[] bodyitems = this.getBillCardPanel().getBodyShowItems();
for(int i=0;i<bodyitems.length;i++){
int dataType = bodyitems[i].getMetaDataProperty().getDataType();
if(dataType == 4){
checkBoxFileds.add(bodyitems[i].getKey());
}
}
String[] fields = new String[checkBoxFileds.size()];
fields = checkBoxFileds.toArray(fields);
BillItem[] items = this.getBillCardPanel().getBodyShowItems();
//int index = 0;
for(int i=0;i<items.length;i++){
BillItem item = items[i];
for(int j=0;j<fields.length;j++){
String field = fields[j];
if(item.getKey().equals(field)){
UserDefTableCellRenderer renderer = new UserDefTableCellRenderer(this.getBillCardPanel().getBillTable(), field, i);
String colname = this.getBillCardPanel().getBodyItem(field).getName();
TableColumn tableColumn = this.getBillCardPanel().getBillTable().getColumn(colname);
tableColumn.setHeaderRenderer(renderer);
}
}
}
}
}