`

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

  • 大小: 8.8 KB
分享到:
评论

相关推荐

    SWT/JFace 自定义日历控件(可绑定注册到其他控件)

    因此自己写一个日历控件用着方便,功能大致如下: 1、日历控件可自定义设置常见的几种日期格式; 2、可以绑定注册到其他控件如:文本框、按钮、标签上使用; 3、可以绑定注册控件后给指定其他控件赋值。 使用者可以...

    SWT/JFace 控件实例

    SWT是底层的GUI库,提供了与操作系统直接交互的组件,而JFace则建立在SWT之上,提供了一层抽象,简化了GUI的开发过程。 ### SWT基础知识 SWT是一个开源的Java库,它允许开发者使用原生操作系统提供的控件来创建GUI...

    Swt.JFace.in.Action中文版

    书中会详细介绍如何使用SWT来创建窗口、按钮、文本框等基本元素,以及更复杂的控件如树视图、表格和日历。 JFace是建立在SWT之上的高级抽象层,它旨在简化UI编程,减少代码量,并提供数据绑定功能。通过JFace,...

    Eclipse SWT&JFace开发实战精解 源码

    而JFace是在SWT之上构建的一层抽象,简化了UI开发,提供了一些高级控件和数据绑定机制。 **第二部分:SWT组件篇** 这一部分可能详细介绍了SWT提供的各种组件,如按钮、文本框、列表、树视图、表格、滚动条等,并...

    SWT,JFACE核心应用源代码,第二部分.rar

    JFace则建立在SWT之上,它旨在提供更高级别的抽象层,简化GUI的开发过程。JFace的目标是减少代码量,提高代码的可读性和可维护性,同时也增强了组件之间的数据绑定和事件处理能力。JFace的核心概念包括视图(Views)...

    swt实现的日历附带说明使用

    虽然SWT主要用在非Swing的Java应用中,但是通过一些技术,如Java的桥接库(如JGoodies Forms或JFace Data Binding),可以将Swing组件与SWT界面混合使用,使得SWT应用也能利用Swing的丰富组件库,包括JDatePicker。...

    SWT日期控件

    RCP是一种基于SWT和JFace的框架,允许开发者创建功能丰富的桌面应用程序,具有模块化、可扩展的特性。 在RCP应用中,日期选择器是一个非常实用的组件,它允许用户通过一个友好的图形界面选取特定日期,常用于日程...

    RCP弹出日期控件

    可能使用 SWT(Standard Widget Toolkit)或 JFace 等库来创建控件。 2. **显示日历**: 实现日历视图的展示,通常包括一个月的日期网格,以及上月、下月和年份切换的按钮。 3. **事件处理**: 当用户进行日期选择...

    Java SWT(win32 X86) 开发包

    5. `org.eclipse.jface_3.11.0.v20150602-1400.jar`:Eclipse JFace是基于SWT的高级用户界面组件库,提供了一些抽象层,简化了对SWT控件的使用,如对话框、表视图等。 6. `org.eclipse.jface.text_3.10.0.v20150603...

    SWT教程

    自定义复合组件在需要独特界面设计或功能时特别有用,例如创建图表、日历控件等。 在学习SWT的过程中,理解每个组件的作用和用法是至关重要的。例如,`Button`、`Text`、`Table`、`Tree`等都是常用的SWT控件,它们...

    桌面小控件

    这些小控件可以是天气预报、日历、时钟、便签等实用工具,也可以是定制化的快捷方式或者系统监控工具,让用户无需打开复杂的应用程序就能快速获取信息或执行简单操作。 使用Eclipse进行桌面小控件的开发,你需要...

    SWT全接触,提供全部的组件测试小程序,机会难得

    9. **SWT与JFace结合**:JFace是建立在SWT之上的一层抽象,简化了UI开发,提供了数据绑定、视图模型等高级功能,两者结合可以提高代码的可读性和可维护性。 10. **性能优化**:由于SWT直接与操作系统交互,相比...

    时间选择控件

    通过 SWT 的 `org.eclipse.swt.widgets.Calendar` 类和 `org.eclipse.jface.datepicker.DateTimePicker` 类,开发者可以轻松地在 Eclipse 应用程序中添加时间选择功能。 除了 SWT,JavaFX 也是一个流行的 Java GUI ...

    人力资源管理系统的RCP例子

    - **JFace和SWT**:熟练使用JFace的控件和数据绑定,以及SWT的窗口、按钮、文本框等基本组件。 - **事件处理**:掌握如何通过监听和处理事件来实现用户交互。 - **服务组件**:了解如何定义和使用服务来实现模块间的...

    RCP实例

    JFace则是在SWT之上的一层抽象,简化了UI开发,提供了一些高级控件和数据绑定机制。 6. **透视图(Perspective)**: 透视图是RCP中的一个重要概念,它定义了工作台中视图和编辑器的排列方式。根据不同的任务需求...

Global site tag (gtag.js) - Google Analytics