NC65 单据卡片表格头部增加全选checkBox

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);
			}
		}
		
	}
	

		
		
		
}

	

		
	
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值