java swing 日期选择控件_Java Swing 日期控件(转载)

这个博客介绍了一个使用Java Swing创建的日期选择组件`DateChooser`,该组件包含多个子面板来展示日期,并提供了注册显示日期的组件、日期选择及提交等功能。用户可以通过点击或拖动来选择日期,选定的日期会显示在指定的`JTextField`或`JLabel`上。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值