utcalendar.java#1.1.1.1
来自「数据库远程同步软件NetBeans项目源文件 项目采用Jdesktop集成组件」· 1 代码 · 共 635 行 · 第 1/2 页
1
635 行
}
}
public UTCalendar()
{
this(true);
}
public UTCalendar(boolean bPopup)
{
calendar = new GregorianCalendar();
calendar.setTime(new Date());
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
if (bPopup)
{
text = new JTextField();
text.setEditable(false);
text.setBackground(Color.white);
text.setText(df_all.format(calendar.getTime()));
arrow = new BasicArrowButton(5);
arrow.addActionListener(this);
setLayout(null);
add(text);
add(arrow);
popup = new JPopupMenu();
createCalendar(popup);
}
else
{
setBorder(BorderUIResource.getEtchedBorderUIResource());
setLayout(new DefaultMenuLayout(this, 1));
createCalendar(this);
setupCalendar();
}
time.setHours(calendar.get(11));
time.setMinutes(calendar.get(12));
}
public Dimension getPreferredSize()
{
if (text != null)
{
Dimension txtDim = text.getPreferredSize();
return new Dimension(
(int) ((double) txtDim.width * 1.2D) + arrow.getPreferredSize().width,
txtDim.height);
}
else
{
return new Dimension(200, 168);
}
}
public void setEnabled(boolean enable)
{
super.setEnabled(enable);
enable &= text != null;
popup.setEnabled(enable);
arrow.setEnabled(enable);
text.setEnabled(enable);
}
public void setDate(Date date)
{
calendar.setTime(date);
calendar.set(13, 0);
calendar.set(14, 0);
setupCalendar();
time.setHours(calendar.get(11));
time.setMinutes(calendar.get(12));
}
public Date getDate()
{
calendar.set(11, time.getHours());
calendar.set(12, time.getMinutes());
return calendar.getTime();
}
public void setBounds(int x, int y, int width, int height)
{
super.setBounds(x, y, width, height);
if (popup != null)
{
int w = arrow.getPreferredSize().width;
text.setSize(width - w, height);
arrow.setSize(w, height);
text.setLocation(0, 0);
arrow.setLocation(width - w, 0);
}
}
private void createCalendar(JComponent panel)
{
JPanel topPanel = new JPanel(new BorderLayout());
topPanel.setBackground(Color.lightGray);
title = new JLabel();
title.setHorizontalAlignment(0);
title.setFont(new Font("SansSerif", 1, 12));
title.setForeground(Color.black);
topPanel.add(title, "Center");
prev = new BasicArrowButton(7);
prev.addActionListener(this);
topPanel.add(prev, "West");
next = new BasicArrowButton(3);
next.addActionListener(this);
topPanel.add(next, "East");
JPanel bottomPanel = new JPanel(new GridLayout(7, 7));
bottomPanel.setBackground(Color.white);
javax.swing.border.Border border = new EmptyBorder(1, 6, 1, 6);
Font font = new Font("SansSerif", 0, 10);
DateFormatSymbols dfs = new DateFormatSymbols();
dfs.getMonths();
String dayNames[] = dfs.getShortWeekdays();
for (int i = 1; i <= 7; i++)
{
JLabel d = new JLabel(dayNames[i]);
d.setFont(font);
d.setForeground(Color.black);
bottomPanel.add(d);
}
days = new JButton[6][7];
for (int r = 0; r < 6; r++)
{
for (int c = 0; c < 7; c++)
{
JButton b = new JButton();
b.addActionListener(this);
b.setBorder(border);
b.setFont(font);
b.setBackground(Color.white);
bottomPanel.add(b);
days[r][c] = b;
}
}
panel.add(topPanel);
panel.add(bottomPanel);
JPanel timePanel = new JPanel(new BorderLayout(1, 1));
timePanel.setBackground(Color.white);
JLabel l = new JLabel(" ");
timePanel.add(l, "Center");
time = new Time();
panel.add(timePanel);
}
private void setupCalendar()
{
Date date = calendar.getTime();
title.setText(df_my.format(date));
day = calendar.get(5);
month = calendar.get(2);
year = calendar.get(1);
calendar.set(5, 1);
int firstDay = calendar.get(7);
calendar.set(5, day);
int maxDays = calendar.getActualMaximum(5);
int c = firstDay - 1;
int r = 0;
for (int i = 0; i < c; i++)
days[0][i].setVisible(false);
for (int i = 1; i <= maxDays; i++)
{
label0 : {
if (c == 7)
{
c = 0;
r++;
}
days[r][c].setText("" + i);
if (year == calendar.get(1))
{
if (month == calendar.get(2) && i == day)
{
days[r][c].setForeground(Color.red);
break label0;
}
}
days[r][c].setForeground(Color.black);
}
days[r][c].setVisible(true);
c++;
}
while (r < 6)
{
while (c < 7)
{
days[r][c].setVisible(false);
c++;
}
r++;
c = 0;
}
if (popup != null)
text.setText(df_all.format(date));
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source == arrow)
{
setupCalendar();
popup.show(this, 0, getHeight());
}
else
if (source == next)
{
calendar.set(2, calendar.get(2) + 1);
setupCalendar();
}
else
if (source == prev)
{
calendar.set(2, calendar.get(2) - 1);
setupCalendar();
}
else
{
JButton b = (JButton) source;
day = Integer.parseInt(b.getText());
month = calendar.get(2);
year = calendar.get(1);
calendar.set(5, day);
setupCalendar();
if (popup != null)
popup.setVisible(false);
fireActionPerformed();
}
}
public void addActionListener(ActionListener l)
{
listenerList.add(
class$java$awt$event$ActionListener != null
? class$java$awt$event$ActionListener
: (class$java$awt$event$ActionListener =
class1("java.awt.event.ActionListener")),
l);
}
public void removeActionListener(ActionListener l)
{
listenerList.remove(
class$java$awt$event$ActionListener != null
? class$java$awt$event$ActionListener
: (class$java$awt$event$ActionListener =
class1("java.awt.event.ActionListener")),
l);
}
protected void fireActionPerformed()
{
Object listeners[] = listenerList.getListenerList();
ActionEvent e = null;
for (int i = listeners.length - 2; i >= 0; i -= 2)
if (listeners[i]
== (class$java$awt$event$ActionListener != null
? class$java$awt$event$ActionListener
: (class$java$awt$event$ActionListener =
class1("java.awt.event.ActionListener"))))
{
if (e == null)
e = new ActionEvent(this, 1001, "Set");
((ActionListener) listeners[i + 1]).actionPerformed(e);
}
}
static Class class1(String x0)
{
try
{
return Class.forName(x0);
}
catch (ClassNotFoundException x1)
{
throw new NoClassDefFoundError(x1.getMessage());
}
}
private static DateFormat df_all = DateFormat.getDateInstance(2);
private static SimpleDateFormat df_my = new SimpleDateFormat("MMMM yyyy");
private JPopupMenu popup;
private JLabel title;
private JTextField text;
private JButton days[][];
private BasicArrowButton arrow;
private BasicArrowButton prev;
private BasicArrowButton next;
private java.util.Calendar calendar;
private Time time;
private int day;
private int month;
private int year;
static Class class$java$awt$event$ActionListener; /* synthetic field */
public static void main(String[] args)
{
JFrame frm = new JFrame();
frm.getContentPane().add(new UTCalendar());
frm.setBounds(100, 100, 400, 300);
frm.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?