📄 timedatepanel.java
字号:
/*
* Copyright (c) 2006, University of Kent
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 1. Neither the name of the University of Kent nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.
*
* 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
* IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
* SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
* SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
* GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
* TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
* IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
* SERIOUS FAULTS, IN THIS SOFTWARE.
*
* 5. This license is governed, except to the extent that local laws
* necessarily apply, by the laws of England and Wales.
*/
/*
* TimeDatePanel.java - 05/07/2006
*/
package issrg.editor2.timedate;
import issrg.acm.DateChooser;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
*
* @author Christian Azzopardi
*/
public class TimeDatePanel extends JPanel implements ActionListener, ChangeListener
{
private GridBagConstraints constraints;
private JLabel captionDate;
private JTextField dateEditor;
private JButton dateChooser;
private JButton anyDay;
private JFrame owner;
private String dateTime;
private TimePanel timePanel;
ResourceBundle rbl = ResourceBundle.getBundle("issrg/editor2/PEComponent_i18n");
String dateStr = rbl.getString("TimeDatePanel_Date"); //contains Date
String chooseStr = rbl.getString("TimeDatePanel_Button_Choose"); //contains Choose...
String anyDayStr = rbl.getString("TimeDatePanel_Button_AnyDay"); //contains Any Day
String dateDlgNameStr = rbl.getString("TimeDatePanel_DateDialog_Name"); //contains Select Date
/** Creates a new instance of TimeDatePanel */
public TimeDatePanel(JFrame owner)
{
this.owner = owner;
this.setLayout(new BorderLayout());
this.add(getContentPanel(), BorderLayout.CENTER);
setDateTime("0000-00-00T00:00:00");
}
public JPanel getContentPanel()
{
JPanel timeDatePanel = new JPanel(new GridBagLayout());
//---------------------------------------------------
//-- Top Date Panel ---------------------------------
//---------------------------------------------------
JPanel datePanel = new JPanel(new FlowLayout());
captionDate = new JLabel(dateStr);
datePanel.add(captionDate);
dateEditor = new JTextField(10);
dateEditor.setText("0000-00-00");
datePanel.add(dateEditor);
dateChooser = new JButton(chooseStr);
dateChooser.addActionListener(this);
dateChooser.setActionCommand("DateDialog");
datePanel.add(dateChooser);
anyDay = new JButton(anyDayStr);
anyDay.addActionListener(this);
anyDay.setActionCommand("AnyDay");
datePanel.add(anyDay);
//---------------------------------------------------
//-- Bottom Time Panel ------------------------------
//---------------------------------------------------
timePanel = new TimePanel();
timePanel.spinnerHours.addChangeListener(this);
timePanel.spinnerMinutes.addChangeListener(this);
timePanel.spinnerSeconds.addChangeListener(this);
//---------------------------------------------------
//-- Construct Final Panel --------------------------
//---------------------------------------------------
constraints = new GridBagConstraints();
constraints.gridx = 0; constraints.gridy = 0;
constraints.gridwidth = 1; constraints.gridheight = 1;
constraints.weightx = 1; constraints.weighty = 1;
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.HORIZONTAL;
timeDatePanel.add(datePanel, constraints);
constraints.gridx = 0; constraints.gridy = 1;
constraints.gridwidth = 1; constraints.gridheight = 1;
constraints.weightx = 1; constraints.weighty = 1;
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.HORIZONTAL;
timeDatePanel.add(timePanel, constraints);
return timeDatePanel;
}
public void actionPerformed(ActionEvent e)
{
/**
* DateChooser instance to use to change the date.
*/
if (e.getActionCommand().intern().equals("DateDialog"))
{
DateChooser DATE_CHOOSER = new DateChooser(this.owner, new SimpleDateFormat("yyyy.MM.dd").format(new Date()));
Date d = DATE_CHOOSER.select();
if (d == null)
dateEditor.setText(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
else dateEditor.setText(new SimpleDateFormat("yyyy-MM-dd").format(d));
}
else if (e.getActionCommand().intern().equals("AnyDay"))
{
dateEditor.setText("****-**-**");
}
//dateTime = dateEditor.getText() + "T" + timePanel.spinnerHours.getValue().toString() + ":" + timePanel.spinnerMinutes.getValue().toString();
setDateTime(dateEditor.getText() + "T" + timePanel.spinnerHours.getValue().toString() + ":" + timePanel.spinnerMinutes.getValue().toString() + ":" + timePanel.spinnerMinutes.getValue().toString());
}
public void stateChanged(ChangeEvent e)
{
//dateTime = dateEditor.getText() + "T" + timePanel.spinnerHours.getValue().toString() + ":" + timePanel.spinnerMinutes.getValue().toString();
setDateTime(dateEditor.getText() + "T" + timePanel.spinnerHours.getValue().toString() + ":" + timePanel.spinnerMinutes.getValue().toString() + ":" + timePanel.spinnerSeconds.getValue().toString());
}
public String getDateTime()
{
return dateTime;
}
public void setDateTime(String s)
{
dateTime = s;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -