private JPanel createWeekAndDayPanal() {

String colname[] = {"日","一","二","三","四","五","六"};

JPanel result = new JPanel();

//设置固定字体,以免调用环境改变影响界面美观

result.setFont(new Font("宋体", Font.PLAIN, 12));

result.setLayout(new GridLayout(7,7));

result.setBackground(Color.white);

JLabel cell ;

for(int i=0;i<7;i++) {

cell = new JLabel(colname[i]);

cell.setHorizontalAlignment(JLabel.RIGHT);

if (i==0 || i==6) cell.setForeground(weekendFontColor) ;

else cell.setForeground(weekFontColor) ;

result.add(cell) ;

}

int actionCommandId = 0 ;

for(int i = 0; i < 6; i++)

for(int j = 0; j < 7; j++) {

JButton numberButton = new JButton();

numberButton.setBorder(null) ;

numberButton.setHorizontalAlignment(SwingConstants.RIGHT);

numberButton.setActionCommand(String.valueOf(actionCommandId)) ;

numberButton.addActionListener(this) ;

numberButton.setBackground(palletTableColor);

numberButton.setForeground(dateFontColor) ;

if (j==0 || j==6) numberButton.setForeground(weekendFontColor) ;

else numberButton.setForeground(dateFontColor) ;

daysButton[i][j] = numberButton;

result.add(numberButton) ;

actionCommandId ++ ;

}

return result;

}

private JDialog createDialog(Frame owner ) {

JDialog result = new JDialog(owner,"日期时间选择",true) ;

result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);

result.getContentPane().add(this,BorderLayout.CENTER) ;

result.pack() ;

result.setSize(width, height);

return result ;

}

void showDateChooser(Point position ) {

Frame owner =(Frame)SwingUtilities.getWindowAncestor(DateChooserJButton.this) ;

if (dialog==null || dialog.getOwner()!= owner) dialog = createDialog(owner ) ;

dialog.setLocation(getAppropriateLocation(owner ,position ) ) ;

flushWeekAndDay() ;

dialog.show();

}

Point getAppropriateLocation(Frame owner ,Point position ) {

Point result = new Point(position) ;

Point p = owner.getLocation() ;

int offsetX = (position.x+width) - (p.x + owner.getWidth() ) ;

int offsetY = (position.y+height) - (p.y + owner.getHeight() ) ;

if (offsetX >0 ) {

result.x -= offsetX ;

}

if (offsetY >0 ) {

result.y -= offsetY ;

}

return result ;

}

private Calendar getCalendar() {

Calendar result = Calendar.getInstance();

result.setTime(getDate()) ;

return result ;

}

private int getSelectedYear() {

return ((Integer)yearSpin.getValue()).intValue() ;

}

private int getSelectedMonth() {

return ((Integer)monthSpin.getValue()).intValue() ;

}

private int getSelectedHour() {

return ((Integer)hourSpin.getValue()).intValue() ;

}

private void dayColorUpdate(boolean isOldDay) {

Calendar c = getCalendar() ;

int day = c.get(Calendar.DAY_OF_MONTH);

c.set(Calendar.DAY_OF_MONTH,1);

int actionCommandId =day-2+c.get(Calendar.DAY_OF_WEEK) ;

int i = actionCommandId/7;

int j = actionCommandId%7;

if (isOldDay) daysButton[i][j].setForeground(dateFontColor) ;

else daysButton[i][j].setForeground(todayBackColor) ;

}

private void flushWeekAndDay() {

Calendar c = getCalendar() ;

c.set(Calendar.DAY_OF_MONTH,1);

int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);

int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK) ;

for(int i = 0; i < 6; i++) {

for(int j = 0; j < 7; j++) {

String s="" ;

if (dayNo>=1 && dayNo<=maxDayNo ) s = String.valueOf(dayNo) ;

daysButton[i][j].setText(s) ;

dayNo ++ ;

}

}

dayColorUpdate(false) ;

}

public void stateChanged(ChangeEvent e) {

JSpinner source =(JSpinner)e.getSource() ;

Calendar c = getCalendar() ;

if (source.getName().equals("Hour")) {

c.set(Calendar.HOUR_OF_DAY, getSelectedHour());

setDate(c.getTime());

return ;

}

dayColorUpdate(true) ;

if (source.getName().equals("Year"))

c.set(Calendar.YEAR, getSelectedYear());

else

// (source.getName().equals("Month"))

c.set(Calendar.MONTH, getSelectedMonth()-1);

setDate(c.getTime());

flushWeekAndDay() ;

}

public void actionPerformed(ActionEvent e) {

JButton source =(JButton)e.getSource() ;

if (source.getText().length()==0) return ;

dayColorUpdate(true) ;

source.setForeground(todayBackColor) ;

int newDay = Integer.parseInt(source.getText());

Calendar c = getCalendar() ;

c.set(Calendar.DAY_OF_MONTH,newDay);

setDate(c.getTime());

}

}

}

来源:考试大-Java认证

责编:oyshaoli  评论 纠错

java调用日期控件_JAVA基础应用:日期时间选择控件(代码)相关推荐

  1. java调节音量代码_用Java调用VC音量控制程序_java

    前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...

  2. java调用系统时间函数_JAVA自学笔记:不使用系统函数来计算日期处于当年的第多少天...

    前段时间练习了一个求闰年的功能,现在就可以用上啦,这次写一个不借助类库的时间函数,利用基础代码写一个计算求日期处于当年的第多少天的函数. 虽然也有简单的方法,例如直接定义每月的天数累加,然后加上当月的 ...

  3. java怎样将日期本土化_Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  4. java中定义一个时间_Java中的日期和时间

    根据个人目前正在编写的<Java核心编程-基础篇>的规划,这部分属于第15章内容,这里沿用了书中的章节编号.另外,因为原文篇幅太长,这里适当做了删减. 15.1.概述 在 Java 8 之 ...

  5. java调用python项目实战_Java调用Python

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  6. java调用命令行命令_Java命令行界面(第4部分):命令行

    java调用命令行命令 我的Java命令行解析系列的第四部分介绍了Commandline ,它被描述为 "用于解析命令行参数的Java库",它"基于使用注释从命令行参数到 ...

  7. java调用c视频接口_JAVA本地调用(JNI- java调用c)

    记录一下工作内容,对术语了解不多,暂且这样记着吧. java调用c 一.写jni的步骤如下: 1.创建java类,定义接口函数,使用native修饰: 2.将java类编译成class: 3.将cla ...

  8. java 调用对象的方法_JAVA调用对象方法的执行过程

    JAVA调用对象方法的执行过程: ①.编译器查看对象的声明类型和方法名.假设调用x.f(parameter),  且隐式参数x声明为C类型的对象,有可能在C对象中存在多个参数类型和参数个数不同的f的方 ...

  9. java日期算前一天_java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)...

    1.情景展示 java 根据系统当前日期获取前一天日期.后一天日期,或者根据初始日期推算出期望(向前/向后)日期. 2.解决方案 导包 import java.text.ParseException; ...

最新文章

  1. 泥瓦匠进阶:连接池原理设计并不难
  2. mysql主从状态异常解决办法
  3. 一个SQL的几种写法
  4. 安卓手机浏览器排行_5g时代已来临!五月安卓手机性价比排行:两千元以上5G手机屠榜...
  5. javascript --- 异步按顺序执行
  6. node.js发送html,利用Node.JS实现邮件发送功能
  7. Nodejs+socket.io搭建WebRTC信令服务器
  8. 记 计算机 科学学院 教师,学风浓厚,桃李芬芳—记计算机学院金国祥老师
  9. poj 2503 Babelfish trie树!!!!指针版和数组版 基础
  10. 设计模式-Builder模式详解
  11. jquery outerhtml
  12. 桌面天气时钟【心知天气API、可获取实时时间、合成解码cJSON】
  13. 颈椎病自我治疗预防颈椎病
  14. HCIP之BGP的选路原则
  15. 根据经纬度查天气预报
  16. windows使用vnc连接ubuntu系统显示灰色
  17. phpnow下安装cmstop大众版需要注意的地方
  18. php仿多玩我的世界盒子,多玩我的世界盒子最新版悬浮窗
  19. securefx 堡垒机_本网站服务器在美国维
  20. Chapter Two : Python 语言基础、运算符与表达式、程序的控制结构合集

热门文章

  1. 计算机二级-JAVA基础知识1
  2. 开启服务_Nike Dunk 开启定制服务
  3. CVE-2022-22965 漏洞分析,安全问题早发现
  4. 同态加密实现数据隐私计算,能让你的小秘密更加秘密
  5. 从零开始学习python | 实例讲解如何制作Python模式程序
  6. LiteOS内核源码分析:位操作模块
  7. CarbonData:大数据融合数仓新一代引擎
  8. Code Review 与 结对编程
  9. 基于springboot框架的博客系统
  10. 简单计算机app inventor,app inventor计算器