1 packagecom.ryd.stocktrader.client.util;2
3 importjava.awt.BasicStroke;4
5 importjava.awt.BorderLayout;6
7 importjava.awt.Color;8
9 importjava.awt.Component;10
11 importjava.awt.Cursor;12
13 importjava.awt.Dimension;14
15 importjava.awt.Font;16
17 importjava.awt.Graphics;18
19 importjava.awt.Graphics2D;20
21 importjava.awt.GridLayout;22
23 importjava.awt.Point;24
25 importjava.awt.Polygon;26
27 importjava.awt.Stroke;28
29 importjava.awt.Toolkit;30
31 importjava.awt.event.FocusEvent;32
33 importjava.awt.event.FocusListener;34
35 importjava.awt.event.MouseAdapter;36
37 importjava.awt.event.MouseEvent;38
39 importjava.awt.event.MouseListener;40
41 importjava.awt.event.MouseMotionListener;42
43 importjava.text.SimpleDateFormat;44
45 importjava.util.ArrayList;46
47 importjava.util.Calendar;48
49 importjava.util.Comparator;50
51 importjava.util.Date;52
53 importjava.util.List;54
55
56
57 importjavax.swing.BorderFactory;58
59 importjavax.swing.JComponent;60
61 importjavax.swing.JFrame;62
63 importjavax.swing.JLabel;64
65 importjavax.swing.JPanel;66
67 importjavax.swing.JTextField;68
69 importjavax.swing.Popup;70
71 importjavax.swing.PopupFactory;72
73 importjavax.swing.SwingUtilities;74
75 importjavax.swing.event.AncestorEvent;76
77 importjavax.swing.event.AncestorListener;78
79 public class DateChooser extendsJPanel {80 private static final long serialVersionUID = 4529266044762990227L;81
82
83
84 privateDate initDate;85
86 private Calendar now =Calendar.getInstance();87
88 privateCalendar select;89
90 private JPanel monthPanel;//月历
91
92 private JP1 jp1;//四块面板,组成
93
94 privateJP2 jp2;95
96 privateJP3 jp3;97
98 privateJP4 jp4;99
100 private Font font = new Font("宋体", Font.PLAIN, 12);101
102 private final LabelManager lm = newLabelManager();103
104 privateSimpleDateFormat sdf;105
106 private boolean isShow = false;107
108 privatePopup pop;109
110
111
112 privateJComponent showDate;113
114
115
116 public staticDateChooser getInstance() {117
118 return newDateChooser();119
120 }121
122
123
124 public staticDateChooser getInstance(Date date) {125
126 return newDateChooser(date);127
128 }129
130
131
132 public staticDateChooser getInstance(String format) {133
134 return newDateChooser(format);135
136 }137
138
139
140 public staticDateChooser getInstance(Date date, String format) {141
142 return newDateChooser(date, format);143
144 }145
146
147
148 /**
149
150 * Creates a new instance of DateChooser151
152 */
153
154 privateDateChooser() {155
156 this(newDate());157
158 }159
160
161
162 privateDateChooser(Date date) {163
164 this(date, "yyyy年MM月dd日");165
166 }167
168
169
170 privateDateChooser(String format) {171
172 this(newDate(), format);173
174 }175
176
177
178 privateDateChooser(Date date, String format) {179
180 initDate =date;181
182 sdf = newSimpleDateFormat(format);183
184 select =Calendar.getInstance();185
186 select.setTime(initDate);187
188 initPanel();189
190 }191
192
193
194 /**
195
196 * 是否允许用户选择197
198 */
199
200 public void setEnabled(booleanb) {201
202 super.setEnabled(b);203
204 showDate.setEnabled(b);205
206 }207
208
209
210 /**
211
212 *得到当前选择框的日期213
214 */
215
216 publicDate getDate() {217
218 returnselect.getTime();219
220 }221
222
223
224 publicString getStrDate() {225
226 returnsdf.format(select.getTime());227
228 }229
230
231
232 publicString getStrDate(String format) {233
234 sdf = newSimpleDateFormat(format);235
236 returnsdf.format(select.getTime());237
238 }239
240
241
242 //根据初始化的日期,初始化面板
243
244 private voidinitPanel() {245
246 monthPanel = new JPanel(newBorderLayout());247
248 monthPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE));249
250 JPanel up = new JPanel(newBorderLayout());251
252 up.add(jp1 = newJP1(), BorderLayout.NORTH);253
254 up.add(jp2 = newJP2(), BorderLayout.CENTER);255
256 monthPanel.add(jp3 = newJP3(), BorderLayout.CENTER);257
258 monthPanel.add(up, BorderLayout.NORTH);259
260 monthPanel.add(jp4 = newJP4(), BorderLayout.SOUTH);261
262 this.addAncestorListener(newAncestorListener() {263
264 public voidancestorAdded(AncestorEvent event) {265
266
267
268 }269
270
271
272 public voidancestorRemoved(AncestorEvent event) {273
274
275
276 }277
278