⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datecalccomposite.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.pim.calc;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.sf.component.calendar.SWTCalendar;
import net.sf.component.calendar.SWTCalendarEvent;
import net.sf.component.calendar.SWTCalendarListener;
import net.sf.pim.UiUtil;
import net.sf.util.ConfigHelper;
import net.sf.util.StringUtil;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

/**
 * 计算组件,对用户的日期,计算持续日和工作日
 * @author levin
 *
 */
public class DateCalcComposite extends Composite{
    //控件,参见WorkCondition
    private Text rq1, rq2,key;
    
	private SWTCalendar calendar1;
	private SWTCalendar calendar2;

	public DateCalcComposite(Composite parent, int style) {
		super(parent, style);
		create();
	}

	private void create(){
		Composite composite=this;
        GridLayout gl=new GridLayout();
        gl.numColumns=3;
        composite.setLayout(gl);

        Label dummy=new Label(composite,SWT.NULL); //占个位置
        dummy.setText("");
        rq1 = new Text(composite, SWT.NULL);
        rq1.addVerifyListener(new VerifyListener(){
			public void verifyText(VerifyEvent e) {
				//几种情况,输入控制键,输入中文,输入字符,输入数字
				//正整数验证
				Pattern pattern = Pattern.compile("[0-9]\\d*");
				Matcher matcher = pattern.matcher(e.text);
				if(matcher.matches())  //处理数字
					e.doit=true;
				else if(e.text.length() > 0) //有字符情况,包含中文、空格
					e.doit=false;
				else	//控制键	
					e.doit=true;
			}});
        rq1.addFocusListener(new FocusListener(){
			public void focusGained(FocusEvent e) {
			}
			public void focusLost(FocusEvent e) {
				UiUtil.syncCalendar(rq1.getText(),calendar1);
			}});
        rq2 = new Text(composite, SWT.NULL);
        rq2.addFocusListener(new FocusListener(){

			public void focusGained(FocusEvent e) {
			}

			public void focusLost(FocusEvent e) {
				UiUtil.syncCalendar(rq2.getText(),calendar2);
			}});
        String[] s3 = ConfigHelper.getSearch3();
        rq1.setText(s3[0]);
        rq2.setText(s3[1]);
        rq1.setFont(UiUtil.getFont());
        rq2.setFont(UiUtil.getFont());
        
        Label labelsRq = new Label(composite, SWT.NULL);
        labelsRq.setText("起始日期:");
       
        calendar1 = new SWTCalendar(composite,SWT.FLAT|SWTCalendar.RED_SUNDAY);
		calendar1.addSWTCalendarListener(new SWTCalendarListener(){
			public void dateChanged(SWTCalendarEvent event) {
				rq1.setText(StringUtil.getDefaultDateFormat().format(event.getCalendar().getTime()));
			}});
        calendar2 = new SWTCalendar(composite,SWT.FLAT|SWTCalendar.RED_SUNDAY);
		calendar2.addSWTCalendarListener(new SWTCalendarListener(){
			public void dateChanged(SWTCalendarEvent event) {
				rq2.setText(StringUtil.getDefaultDateFormat().format(event.getCalendar().getTime()));
			}});
        //赋初值
		UiUtil.syncCalendar(s3[0], calendar1);
		UiUtil.syncCalendar(s3[1], calendar2);
		
        Button button=new Button(composite,SWT.FLAT);
        button.setText("计算");
        button.addSelectionListener(new SelectionAdapter(){
			public void widgetSelected(SelectionEvent e) {
				key.setText("日历日:"+StringUtil.delta(calendar1.getCalendar().getTime(),calendar2.getCalendar().getTime())+"天;工作日:"+StringUtil.deltaWorkDay(calendar1.getCalendar().getTime(),calendar2.getCalendar().getTime())+"天");
				key.pack();
			}});
        
        key = new Text(composite, SWT.READ_ONLY);
        GridData gd=new GridData();
        gd.horizontalSpan=2;
        key.setLayoutData(gd);
        key.setFont(UiUtil.getFont());
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -