- 浏览: 124949 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mr_wangjq:
...
跟着官网学Struts2使用(一) -
雪馨25:
sweat89 写道嗯,楼主的学习方法,很值得我学习。加油!! ...
跟着官网学Struts2使用(一) -
雪馨25:
381895649 写道建议用用springmvc,哈.嗯,都 ...
跟着官网学Struts2使用(一) -
sweat89:
嗯,楼主的学习方法,很值得我学习。加油!!
跟着官网学Struts2使用(一) -
381895649:
建议用用springmvc,哈.
跟着官网学Struts2使用(一)
一、实现效果
二、代码
//此类为构造了一个JPanel,其中添加了一个JTextField和一个Button,点击按钮弹出日历选择对话框 public class CalendarDialog extends JPanel { private static final long serialVersionUID = 1L; private int width = 220; // 日期控件的宽度 private int height = 220; // 日期控件的高度 static CalendarDialog date; private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JTextField dateField = new JTextField(); // JButton btnChoose = new JButton("▼"); DateChooserButton btnChoose = new DateChooserButton("▼"); // ▼是指:▼下拉箭头的unicode码 private String parten; private Container owner; private int length = 80; private Point startPoint; javax.swing.JDialog dateFrame; public Point getStartPoint() { return startPoint; } public void setStartPoint(Point startPoint) { this.startPoint = startPoint; } public CalendarDialog(Container owner, int length) { this.owner = owner; this.parten = "yyyy-MM-dd"; this.length = length; try { init(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。 */ public CalendarDialog(Container owner, String partten, int length) { this.owner = owner; this.parten = partten; this.length = length; try { init(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。 */ public CalendarDialog(Container owner, String partten) { this.owner = owner; this.parten = partten; try { init(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 以缺省的partten构建DateChooser对象 日期选择框的所有者必须是Frame或者是JFrame对象。 */ public CalendarDialog(Container owner) { this.owner = owner; this.parten = "yyyy-MM-dd"; try { init(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 系统初始化 * * @throws Exception */ private void init() throws Exception { dateField.setToolTipText("单击右边的按钮即可选择日期"); btnChoose.setToolTipText("单击即可选择日期"); this.setLayout(gridBagLayout1); dateField.setEditable(false); btnChoose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { CalendarDialog.this.btnChoose_actionPerformed(e); } }); Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(parten); this.setText(simpleDateFormat.format(date)); this.add(dateField, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 5, 0), this.length, 0)); this.add(btnChoose, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 5, 0), 0, 0)); } public void setToolTipText(String text) { dateField.setToolTipText(text); btnChoose.setToolTipText(text); } /** * 下拉按钮的事件处理 * * @param e * ActionEvent */ public void btnChoose_actionPerformed(ActionEvent e) { dateFrame = new javax.swing.JDialog(); dateFrame.setModal(false);//设置为非模式对话框 dateFrame.setUndecorated(true); dateFrame.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);//设置模式 dateFrame.setLocationRelativeTo(dateField); int x = dateFrame.getLocation().x - (dateField.getWidth() / 2); int y = dateFrame.getLocation().y + (dateField.getHeight() / 2); dateFrame.setLocation(new Point(x, y)); dateFrame.setSize(width, height); dateFrame.addWindowListener(new WindowAdapter() { // 在任意的非日期选择区单击,则日期选择组件将变为非活动状态,自动释放资源。 public void windowDeactivated(WindowEvent e) { // dateFrame.setModal(false); javax.swing.JDialog f = (javax.swing.JDialog) e.getSource(); parentDialog.setModal(true); f.dispose(); } }); DatePanel datePanel = new DatePanel(dateFrame, parten); dateFrame.getContentPane().setLayout(new BorderLayout()); dateFrame.getContentPane().add(datePanel); dateFrame.setVisible(true); } /** * 得到日期控件中的值 * * @return String */ public String getText() { return this.dateField.getText(); } /** * 设置文本域的值 * * @param text * String */ public void setText(String text) { this.dateField.setText(text); } /** * 该方法非常有用,是外部直接访问的TextField对象。 * * @return JTextField */ public JTextField getDateField() { return dateField; } /** * 内部类,日期选择控件的主体,封装了所有日期选择的内容,主要是一个Panel */ class DatePanel extends JPanel implements MouseListener, ChangeListener { private static final long serialVersionUID = 1L; int startYear = 1970; // 默认【最小】显示年份 int lastYear = 2100; // 默认【最大】显示年份 Color backGroundColor = Color.gray; // 底色 // 月历表格配色----------------// Color palletTableColor = Color.white; // 日历表底色 Color weekFontColor = Color.blue; // 星期文字色 Color dateFontColor = Color.black; // 日期文字色 Color weekendFontColor = Color.red; // 周末文字色 Color moveButtonColor = Color.BLUE; // 鼠标移动的日历底色 Color todayBtnColor = Color.pink; // 今天的日历底色 // 控制条配色------------------// Color controlLineColor = Color.pink; // 控制条底色 Color controlTextColor = Color.white; // 控制条标签文字色 JSpinner yearSpin; JSpinner monthSpin; JSpinner hourSpin; JButton[][] daysButton = new JButton[6][7]; javax.swing.JDialog f; JPanel dayPanel = new JPanel(); // 日期panel JPanel yearPanel = new JPanel(); Calendar calendar = Calendar.getInstance(); String pattern; /** * 日期选择控件放在了非模态对话框中 */ public DatePanel(javax.swing.JDialog target, String pattern) { super(); System.out.println("5555555555DatePanel"); this.f = target; this.pattern = pattern; setLayout(new BorderLayout()); setBorder(new LineBorder(backGroundColor, 2)); setBackground(backGroundColor); initButton(); // 初始化放置日期的按钮。 createYearAndMonthPanal(); // this.flushWeekAndDayPanal(calendar); // 之前必须先保证放置日期的按钮已经初始化。 this.setLayout(new BorderLayout()); this.add(yearPanel, BorderLayout.NORTH); this.add(dayPanel, BorderLayout.CENTER); } /** * 日期选择控件的按钮初始化 */ private void initButton() { System.out.println("666666666initButton"); int actionCommandId = 1; for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { JButton numberButton = new JButton(); numberButton.setBorder(BorderFactory.createEmptyBorder()); numberButton.setHorizontalAlignment(SwingConstants.CENTER); numberButton.setActionCommand(String .valueOf(actionCommandId)); numberButton.addMouseListener(this); numberButton.setBackground(palletTableColor); numberButton.setForeground(dateFontColor); numberButton.setText(String.valueOf(actionCommandId)); numberButton.setPreferredSize(new Dimension(25, 25)); daysButton[i][j] = numberButton; actionCommandId++; } } } private Date getNowDate() { return Calendar.getInstance().getTime(); } private Calendar getNowCalendar() { Calendar result = Calendar.getInstance(); return result; } private Date getSelectDate() { return calendar.getTime(); } /** * 创建年月日的面板 */ private void createYearAndMonthPanal() { System.out.println("777777777createYearAndMonthPanal"); Calendar c = getNowCalendar(); int currentYear = c.get(Calendar.YEAR); int currentMonth = c.get(Calendar.MONTH) + 1; int currentHour = c.get(Calendar.DAY_OF_MONTH); yearSpin = new JSpinner(new javax.swing.SpinnerNumberModel( currentYear, startYear, lastYear, 1)); monthSpin = new JSpinner(new javax.swing.SpinnerNumberModel( currentMonth, 1, 12, 1)); hourSpin = new JSpinner(new javax.swing.SpinnerNumberModel( currentHour, 0, 31, 1)); yearPanel.setLayout(new java.awt.FlowLayout()); yearPanel.setBackground(controlLineColor); yearSpin.setPreferredSize(new Dimension(60, 23)); yearSpin.setName("Year"); yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")); yearSpin.addChangeListener(this); yearPanel.add(yearSpin); JLabel yearLabel = new JLabel("年"); yearLabel.setForeground(controlTextColor); yearPanel.add(yearLabel); monthSpin.setPreferredSize(new Dimension(40, 23)); monthSpin.setName("Month"); monthSpin.addChangeListener(this); yearPanel.add(monthSpin); JLabel monthLabel = new JLabel("月"); monthLabel.setForeground(controlTextColor); yearPanel.add(monthLabel); hourSpin.setPreferredSize(new Dimension(40, 23)); hourSpin.setName("Day"); hourSpin.addChangeListener(this); yearPanel.add(hourSpin); JLabel hourLabel = new JLabel("日"); hourLabel.setForeground(controlTextColor); yearPanel.add(hourLabel); } /** * 根据日期刷新显示面板 */ private void flushWeekAndDayPanal(Calendar c) { c.set(Calendar.DAY_OF_MONTH, 1); c.setFirstDayOfWeek(0); int firstdayofWeek = c.get(Calendar.DAY_OF_WEEK); int lastdayofWeek = c.getActualMaximum(Calendar.DAY_OF_MONTH); String colname[] = { "日", "一", "二", "三", "四", "五", "六" }; int today = getNowCalendar().get(Calendar.DAY_OF_MONTH); // 设置固定字体,以免调用环境改变影响界面美观 dayPanel.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12)); dayPanel.setLayout(new GridBagLayout()); dayPanel.setBackground(Color.white); JLabel cell; for (int i = 0; i < 7; i++) { cell = new JLabel(colname[i]); cell.setHorizontalAlignment(JLabel.CENTER); cell.setPreferredSize(new Dimension(25, 25)); if (i == 0 || i == 6) { cell.setForeground(weekendFontColor); } else { cell.setForeground(weekFontColor); } dayPanel.add(cell, new GridBagConstraints(i, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); } int actionCommandId = 1; for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { JButton numberButton = daysButton[i][j]; actionCommandId = Integer.parseInt(numberButton .getActionCommand()); if (actionCommandId == today) { numberButton.setBackground(todayBtnColor); } if ((actionCommandId + firstdayofWeek - 2) % 7 == 6 || (actionCommandId + firstdayofWeek - 2) % 7 == 0) { numberButton.setForeground(weekendFontColor); } else { numberButton.setForeground(dateFontColor); } if (actionCommandId <= lastdayofWeek) { int y = 0; if ((firstdayofWeek - 1) <= (j + firstdayofWeek - 1) % 7) { y = i + 1; } else { y = i + 2; } dayPanel.add(numberButton, new GridBagConstraints((j + firstdayofWeek - 1) % 7, y, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); } } } } private int getSelectedYear() { return ((Integer) yearSpin.getValue()).intValue(); } private int getSelectedMonth() { return ((Integer) monthSpin.getValue()).intValue(); } private int getSelectedHour() { return ((Integer) hourSpin.getValue()).intValue(); } /** * 年月小时的事件处理 * @param e ChangeEvent */ public void stateChanged(ChangeEvent e) { JSpinner source = (JSpinner) e.getSource(); if (source.getName().equals("Day")) { calendar.set(Calendar.DAY_OF_MONTH, getSelectedHour()); return; } if (source.getName().equals("Year")) { calendar.set(Calendar.YEAR, getSelectedYear()); dayPanel.removeAll(); this.flushWeekAndDayPanal(calendar); dayPanel.revalidate(); dayPanel.updateUI(); return; } if (source.getName().equals("Month")) { calendar.set(Calendar.MONTH, getSelectedMonth() - 1); dayPanel.removeAll(); this.flushWeekAndDayPanal(calendar); dayPanel.revalidate(); dayPanel.updateUI(); return; } } /** * 日期按钮的鼠标事件处理 * @param e MouseEvent */ public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1) { JButton source = (JButton) e.getSource(); String value = source.getText(); int day = Integer.parseInt(value); calendar.set(Calendar.DAY_OF_MONTH, day); Date selectDate = this.getSelectDate(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat( pattern); CalendarDialog.this .setText(simpleDateFormat.format(selectDate)); // int year = calendar.get(Calendar.YEAR); // int month = calendar.get(Calendar.MONTH) + 1; // System.out.println(year + "年" + month + "月" + day + "日"); f.dispose(); } } public void mousePressed(MouseEvent e) { // 空实现接口中的方法,不能删除 } public void mouseReleased(MouseEvent e) { // 空实现接口中的方法,不能删除 } /** * 鼠标移动到日历中的事件 * @param e MouseEvent */ public void mouseEntered(MouseEvent e) { JButton jbutton = (JButton) e.getSource(); jbutton.setBackground(moveButtonColor); } /** * 鼠标移出日历中的事件 * * @param e * MouseEvent */ public void mouseExited(MouseEvent e) { JButton jbutton = (JButton) e.getSource(); int comm = Integer.parseInt(jbutton.getActionCommand()); int today = getNowCalendar().get(Calendar.DAY_OF_MONTH); if (comm == today) { jbutton.setBackground(todayBtnColor); } else { jbutton.setBackground(palletTableColor); } } } /** * 内部类,改变按钮的边框不可编辑区,使外观更加协调。 */ class DateChooserButton extends JButton { private static final long serialVersionUID = 1L; public DateChooserButton(String text) { super(text); setPreferredSize(new Dimension(30, 21)); } public Insets getInsets() { // return new Insets(0, 0, 0, 0); return new Insets(4, 2, 0, 2); } } public static void main(String[] args) { JDialog frame2 = new JDialog(); // frame2.getContentPane().setLayout(null); JPanel jp = new JPanel(); jp.setSize(200, 100); JPanel jp1 = new JPanel(); jp1.setSize(200, 100); CalendarDialog date = new CalendarDialog(jp); jp.add(date); jp1.add(jp); frame2.getContentPane().add(jp1); frame2.setSize(500, 400); frame2.setTitle("实例"); frame2.setVisible(true); } }
代码记录方便查询使用
发表评论
-
算法--排序(冒泡,选择,插入,快速)
2013-01-08 14:35 1725一、冒泡排序 1.1 概念 重复地走访过要排序的数 ... -
基础正则表达式知识学习总结
2012-07-22 00:10 684学习的网址 http://regexbook ... -
【java】JTable中某一列设置为下拉列表
2012-07-23 17:34 1166JComboBox c = new JComboBox( ... -
【java】JETM--Java™的执行时间测量库简单学习(一)
2012-08-15 17:11 1866一、下载 用途:测试Java™应用程序潜在的性 ... -
【java】实现柱状图 饼状图
2012-08-30 10:45 2934一、前提: 下载增加ja ... -
【java】实现导出Excel文件和XML文件
2012-08-30 14:43 3102一、功能简述 点击“导出”按钮,弹出文件选择对话框, ... -
【java】实现发送带附件email
2012-08-31 15:30 1297一、目标 用java代码实现发送带附件email的功 ... -
【java】值传递和引用传递理解
2012-09-03 18:48 781一、理解 ★ 当一个变量最为一个参数传入方法 ... -
【java】构造函数的继承执行顺序
2012-09-08 11:31 2643问题: 子类继承父类,构造函数及公共属性的执行顺序是 ... -
【java】加密方式
2012-09-11 15:06 914/** * String Utility Class Th ... -
【hibernate】问题:hibernate无法持久化数据
2012-10-25 16:57 920现象: 程序执行正确,但数据库没有已经执行成功的插入数据 ... -
【java】JTextField与JComboBox结合动态匹配输入信息
2012-11-07 14:24 2357一、实现效果 二、代码 import ... -
【java】反射可执行的实例
2012-12-01 18:17 893一、实例目标 根据传入的完整类名字符串类名,实现 ...
相关推荐
(2)定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框; (3)查询信息:用户可以查询到某个月的所有提示信息。 四. 提交的成果 1. ...
(2)建立JavaFrame顶级容器,建立不同的类实现相应的功能。 (3)建立GUI图形界面; (4)集合农历、公历的计算与转化算法; (5)设立和后台进程,对所记事时间进行配对,届时会弹出对预定时间的提醒。
signByIF.java 用if语句实现符号函数示例 triangleStar.java 输出一个由*组成的直角三角形 upperToLowCase.java 大写转换成小写 variableScopeExample.java 变量使用范围示例 第3章 示例描述:本章学习对象和类...
通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。 2. 系统设计 2.1 设计目标 一个完整的程序应具有以下功能: 1)显示当月日历、当前日期、...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
MaterialCalendarviewDialogDemo
1) 问题定义:创建日历记事本,实现对某日期的事情进行记录等功能。 2) 问题分析:通过对“日历记事本”这一题材的分析,我需要四个类来实现其“日历”和“记事本”这两大功能。通过主类calender创建主窗口,再用...
万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本实验是对图形用户界面,...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
日历记事本 其功能为: 设计GUI界面的日历记事本。系统将日历、记事本功能结合在一起,... 3 使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。
百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText();...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
实验2 字体对话框 36 实验3 华容道游戏 39 上机实践8 多线程 47 实验1 线程的4种状态 47 实验2 线程之间共享数据 49 实验3 挂起、恢复和终止线程 51 上机实践9 输入输出流 55 实验1 文件加密 55 实验2 给文件的内容...
日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain.java);标准计算器(Callulator.java);更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框Dialog...
日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
附:利用对话框输入输出 21 附:引入包 23 实验六 数组 25 实验目的 25 实验内容 25 有关输出日历的两点说明 25 特别提示 26 附:Eclipse中命令行参数的输入方法 26 实验七 继承和多态 28 实验目的 28 实验内容 28 ...