SWT/JFACE 之日历控件

修修改改网上的一个日历控件,精确到日期时分秒。
视图效果:



代码

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * 
 * @description 日历控件的Dialog
 * @className CalendarDialog
 * @author share
 * @date 2012-5-8 下午2:48:18
 */
public class CalendarDialog extends Dialog implements MouseListener{

	private String selectedDate;// 选择的日期
	private Display display;
	private Shell dialog;
	private DateTime calendar;
	private DateTime date;
	private DateTime time;
	
	
	public CalendarDialog(Shell parent) {
		super(parent);
	}

	public String getDateText() {
		if(selectedDate == null){
			return "";
		}
		return selectedDate.toString();
	}

	public void open(int x, int y) {
        display = Display.getDefault();
        dialog = new Shell(getParent(),SWT.DIALOG_TRIM);
        dialog.setBounds(x, y, 230, 220);
		
		dialog.setLayout(new GridLayout(3, false));
		GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
		data.horizontalSpan = 3;
		calendar = new DateTime(dialog, SWT.CALENDAR | SWT.BORDER);
		calendar.setLayoutData(data);
		date = new DateTime(dialog, SWT.DATE | SWT.SHORT);
		time = new DateTime(dialog, SWT.TIME | SWT.SHORT);

		Button ok = new Button(dialog, SWT.PUSH);
		ok.setText(" OK ");
		ok.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));

		ok.addMouseListener(this);
		dialog.setDefaultButton(ok);
		dialog.pack();
		dialog.open();
		
		while (!dialog.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}


	@Override
	public void mouseDoubleClick(MouseEvent e) {
		// TODO Auto-generated method stub
	}



	@Override
	public void mouseDown(MouseEvent e) {
		// TODO Auto-generated method stub
		int month = (calendar.getMonth() + 1);
		int day = calendar.getDay();
		int hours = time.getHours();
		int minutes = time.getMinutes();
		selectedDate =  calendar.getYear() +"-" + (month<10?"0"+month:month)+ 
				"-" + (day<10?"0"+day:day) + " " + (hours<10?"0"+hours:hours) + ":"+
				(minutes<10?"0"+minutes:minutes) + ":00";
		this.dialog.close();
	}



	@Override
	public void mouseUp(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	public void dispose(){
		if(!this.dialog.isDisposed()){
			this.dialog.dispose();
		}
	}
}

猜你喜欢

转载自zengjz88.iteye.com/blog/1518501
今日推荐