Java ——SWT利用DateTime获取日历控件

article/2025/9/14 3:29:46

1、话不多说,先看效果图:

19是我选择的日期,其他功能就不一一介绍了,这个看你们自己。

 

2、Test01界面:

Test01代码如下:

package test;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.widgets.FormToolkit;

import com.eltima.components.ui.DatePicker;
import com.yc.dialog_0301.MyDialog;

import org.eclipse.swt.widgets.Table;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import javax.swing.JOptionPane;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Text;
/**
 * 获取日历主界面
 * @author lenovo
 *
 */
public class Test01 {

    protected Shell shell;
    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
    private static Text text;

    /**
     * Launch the application.
     * @param args
     */
    public static void main(String[] args) {
        try {
            Test01 window = new Test01();
            window.open();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Open the window.
     */
    public void open() {
        Display display = Display.getDefault();
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }

    /**
     * Create contents of the window.
     */
    protected void createContents() {
        shell = new Shell();
        shell.setSize(611, 313);
        shell.setText("日历选择");
        
    
        Button btnHuoqu = new Button(shell, SWT.NONE);
        //获取日历按钮
        btnHuoqu.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Dialog_Calendar dialog=new Dialog_Calendar(shell,SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL);
                dialog.open();
                
            }
        });
        btnHuoqu.setBounds(401, 120, 114, 34);
        formToolkit.adapt(btnHuoqu, true, true);
        btnHuoqu.setText("获取日历");
        
        text = new Text(shell, SWT.BORDER);
        text.setBounds(106, 122, 243, 30);
        

    }
    
    public static void setDate(String str){
        System.out.println(str);    
        text.setText(str);
    }

}
 

 

3、日历界面-- Dialog_Calendar界面:

Dialog_Calendar实现:

把DateTime控件拖拉进创建好的窗体,点击他的属性,更新其类型type(类型有calendar,date,time).有兴趣的小伙伴可以自己去实现一下,这里就只介绍我自己实现的

Dialog_Calendar代码如下:

package test;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.wb.swt.SWTResourceManager;
/**
 * 日历弹窗
 * @author lenovo
 *
 */
public class Dialog_Calendar extends Dialog{

    protected Object result;
    protected Shell dialog;
    private DateTime calendar;
    private DateTime date;
    private DateTime time;
    private String selectedDate;// 选择的日期
    private Display display;
    


    /**
     * Create the dialog.
     * @param parent
     * @param style
     */
    public Dialog_Calendar(Shell parent, int style) {
        super(parent, style);
        setText("SWT Dialog");
    }

    /**
     * Open the dialog.
     * @return the result
     */
    public Object open() {
        createContents();
        dialog.open();
        dialog.layout();
        display = getParent().getDisplay();
        while (!dialog.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        return result;    
    }

    /**
     * Create contents of the dialog.
     */
    private void createContents() {
        dialog = new Shell(getParent(),getStyle());
        dialog.setSize(352, 333);


        calendar = new DateTime(dialog, SWT.BORDER | SWT.CALENDAR);
        calendar.setBounds(10, 10, 326, 233);
        //监听日期选择
        calendar.addMouseListener(new MouseListener() {

            @Override
            public void mouseUp(MouseEvent arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mouseDown(MouseEvent arg0) {
                int month = (calendar.getMonth() + 1);
                int day = calendar.getDay();
                int hours = time.getHours();
                int minutes = time.getMinutes();
                int seconds=time.getSeconds();
                //这个是直接打印出服务器自动生成的时间
//                selectedDate=calendar.getYear()+"-"+month+"-"+calendar.getDay()+" "
//                        +hours+":"+minutes+":"+time.getSeconds();
                
                //判断如果月,日,时,分,秒是小于10的就在前面加0,这里运用三元运算符进行判断
                selectedDate =  calendar.getYear() +"-" + (month<10?"0"+month:month)+ 
                        "-" + (day<10?"0"+day:day) + " " + (hours<10?"0"+hours:hours) + ":"+
                        (minutes<10?"0"+minutes:minutes) + ":"+(seconds<10?"0"+seconds:seconds);
                
                //如果日历calendar上面切换月份,date的月份也跟着切换
                if(calendar.getMonth()>date.getMonth()){
                    date.setMonth(calendar.getMonth());
                }
                if(calendar.getMonth()<date.getMonth()){
                    date.setMonth(calendar.getMonth());
                }
            }

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

            }
        });


        date = new DateTime(dialog, SWT.LONG);
        date.setBounds(10, 250, 135, 33);
        //日期选择事件
        date.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent arg0) {
                //如果选择date年月,日历calendar的年月也会自动切换
                if(date.getYear()>calendar.getYear()){
                    calendar.setYear(date.getYear());
                }
                if(date.getYear()<calendar.getYear()){
                    calendar.setYear(date.getYear());
                }
                if(date.getMonth()>calendar.getMonth()){
                    calendar.setMonth(date.getMonth());
                }
                if(date.getMonth()<calendar.getMonth()){
                    calendar.setMonth(date.getMonth());
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent arg0) {
                // TODO Auto-generated method stub

            }
        });


        time = new DateTime(dialog, SWT.TIME | SWT.LONG);
        time.setToolTipText("");
        time.setBounds(151, 250, 105, 33);
        

        Button btnOk = new Button(dialog, SWT.NONE);
        btnOk.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
        //确定按钮
        btnOk.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {                
                //System.out.println(selectedDate);
                //将selectDate字符串传到Test01类下面的方法里面,方便Test调用
                Test01.setDate(selectedDate);
            }
        });
        btnOk.setBounds(268, 249, 68, 34);
        btnOk.setText("OK");
    }


}
 

以上就是我自己实现的功能。

 


http://chatgpt.dhexx.cn/article/ilG2hTES.shtml

相关文章

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路&#xff1a;SWT图像显示 SWT之路&#xff1a;SWT图像显示 2009-10-03 程序演示 还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象&#xff0c;和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所…

eclipse java swt_Eclipse下搭建SWT开发环境

0.序言 还是老风格&#xff0c;从头写些基本的东西&#xff0c;帮助自己&#xff0c;也帮助正处于困惑中的别人。今天介绍的是Eclipse下的SWT的配置过程。自己前两天要做个项目&#xff0c;配置了半天都不正确&#xff0c;后来慢慢总结了一下&#xff0c;不同环境配置的方法可能…

java swt button_JAVA.SWT/JFace: SWT基本组件之按钮(Button)

《Eclipse SWT/JFACE 核心应用》 清华大学出版社 5.2 按钮(Button) 按钮有普通按钮(SWT.PUSH)、单选按钮(SWT.RADIO)、多选按钮(SWT.CHECK)、箭头按钮(SWT.ARROW)和切换按钮(SWT.TOGGLE)几种类型。 同时&#xff0c;也可以设置按钮的样式。设置按钮文字对齐的样式有SWT.LEFT、S…

Java SWT 表格Table实时刷新数据

一、动态展示数据 当对表格展示的数据进行删除和增加的时候&#xff0c;想实时进行表格数据更新显示。用到的方法是&#xff0c;首先将表格数据全部删掉&#xff0c;然后在读取数据库最新的数据显示到表格中。  可以将显示表格信息的代码封装成一个方法&#xff0c;当对当前表…

Java SWT封装Table显示数据

一个表格就类似于一张二维表。第一行为关系模型&#xff0c;就是每一列的列名。从第二行开始就是表的数据&#xff0c;简称元组。下面实现对其Table的封装。 首先显示一个窗口。创建一个Table。将在showTableInfos()方法对Table表格进行封装。 import org.eclipse.swt.widgets.…

SWT控件总结

控件palette 1.System Choose component 选择组件&#xff1a;允许选择组件类型并将其拖放到设计画布上 Tab Order标签的顺序&#xff1a;设置所选选项卡顺序 2.Composites Composite 复合&#xff1a;能够包含其他控件的控件 Group 集团&#xff1a;提供带有可选标题的蚀…

SWT和JFace应用笔记

SWT和JFace应用笔记 链接&#xff1a;https://pan.baidu.com/s/1To4Lhgan4xEr1iaFA0Rerg 提取码&#xff1a;63qm 1.SWT笔记 一.创建一个SWT程序有3个部分 1.初始化窗口:首先创建Dispaly对象和Shell对象。Display&#xff1a;对象封装了调用操作系统的有关方法Shell&#xf…

matlab swt函数,matlab swt 函数出错

matlab swt 函数出错 我在用matlab swt 函数分解信号时总是出现以下错误&#xff0c;麻烦各位高手告知该怎么修改&#xff0c;swt函数如何ERROR ... ---------------------------------------------------------------------------------------------------------------------…

【SWT】自定义数据表格

目的 使用SWT技术自定义数据表格&#xff0c;本文抛砖引玉&#xff0c;给出了SWT构建数据表格的基本思路和简单实现。更多特殊需求即表格功能实现待续…… 思路 数据表格由表格头与表格体两边部分组成。 表格头部分是固定的&#xff0c;其字段右侧包含一个简单的表格工具–…

【SWT】Lable 文字折行

目标 当Label 中的文字过多时&#xff0c;使得文字折行显示。 效果如图所示&#xff1a; 分析与实践 Label 自带样式是一行显示所有信息。当一行显示不下时&#xff0c;超出部分会被隐藏掉&#xff0c;当Label有足够长度时再将其展示出来。Label这种处理超出部分的方式很粗…

java swt 几种布局_实战SWT布局

fortune 阅读(577) 评论(0) 编辑 收藏 所属分类: java技术 标准的SWT布局类FillLayout&#xff1a;在容器中以相同的大小单行或单列的排列组件 RowLayout&#xff1a;以单行或多行的方式使用几个选项(fill,wrap,spacing,justify,type)定制组件的排列方式 GridLayout&#xff…

【SWT】内容分割线

目标 SWT 容器中画横向直线或竖向直线将容器中的内容分割开来。本文介绍了官方的两个示例&#xff0c;效果图见实践部分。 分析 SWT 中至少由两种方法画直线&#xff08;横向或纵向&#xff09; SWT 中的GC可以画直线 这种方法最容易想到&#xff0c;但实现起来比较麻烦&a…

SWT

strock width transform,全称笔画宽度变换&#xff0c;是一种局部的图像算子用于提取字符&#xff08;letter&#xff09;的笔画宽度作为图像特征。算法步骤如下&#xff1a; 分成三个部分&#xff1a; - 用canny算子计算梯度及方向 - SWT提取笔画宽度得到字符候选区域&am…

eclipse下搭建SWT图形界面开发环境

什么是SWT 参考&#xff1a;http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html 用java的人一定都知道AWT和Swing&#xff0c;而SWT(Standard Widget Toolkit)则是由Eclipse项目组织开发的一套完整的图形界面开发包&#xff0c;虽然当初仅仅是IBM为了编写Eclipse的…

SWT布局(Layouts)

每种类型操作系统对屏幕的定义不一样&#xff0c;在开发跨平台应用软件时&#xff0c;我们一般都会使用布局&#xff08;Layout&#xff09;来管理复合控件&#xff08;Composite&#xff09;中子控件的位置和大小。通过布局&#xff0c;程序员可以充分展示那些埋没已久的艺术细…

SWT简介

SWT简介 1. 为什么要使用SWT?  SWT是一个IBM开发的跨平台GUI开发工具包。在SWT之前&#xff0c;Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit)。虽然AWT框架也使用的是原生窗口部件(native widgets)&#xff0c;但是它一直未能突破LCD问题。LCD问…

[转]实时股票数据接口大全

from: http://www.21andy.com/blog/20090530/1313.html 实时股票数据接口大全 股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口 1.http/javascript接口取数据 1.1Sina股票数据接口 以大秦铁路&#xff08;股票代码&#xff1a;…

股票数据在线获取

推荐&#xff1a;使用如下地址注册tushare并分享此链接。 https://tushare.pro/register?reg133232 分享此链接&#xff0c;注册tushare. 以前是使用tushare等下载保存到本地数据库后进行计算分析。 现在不想维护本地数据库&#xff0c;想使用时直接在线获取数据。经查找如…

获取股票实时交易数据的方法

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 获取股票实时交易数据的方法 注:本文为原创文章,转载时请注明转载地址。炒股有一段时间…

实时股票数据接口 (转,以防有用)

&#xfeff;&#xfeff; http://blog.sina.com.cn/s/blog_510844b70102wrvf.html 实时股票数据接口 股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口 1.http/javascript接口取数据1.1Sina股票数据接口 以大秦铁路&#xff08;…