Java上机作业
完成注册界面
代码如下:
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.FlowLayout;
4 import java.awt.Font;
5 import java.awt.Rectangle;
6 import java.awt.event.ItemEvent;
7 import java.awt.event.ItemListener;
8
9 import javax.swing.BorderFactory;
10 import javax.swing.Box;
11 import javax.swing.ButtonGroup;
12 import javax.swing.JButton;
13 import javax.swing.JCheckBox;
14 import javax.swing.JComboBox;
15 import javax.swing.JFrame;
16 import javax.swing.JLabel;
17 import javax.swing.JPanel;
18 import javax.swing.JPasswordField;
19 import javax.swing.JRadioButton;
20 import javax.swing.JTextField;
21
22
23 //日历下拉框
24 class YearMonthDay extends JFrame {
25
26 private final int STARTYEAR = 2000;// 年份的开始值
27 private final int ENDYEAR = 2020;// 年份的结束值
28
29 //JPanel contentPane;
30 // 年月日的选择框
31 JComboBox cboYear = new JComboBox();
32 JComboBox cboMonth = new JComboBox();
33 JComboBox cboDay = new JComboBox();
34 // 年月日标签
35 JLabel jLabel1 = new JLabel();
36 JLabel jLabel2 = new JLabel();
37 JLabel jLabel3 = new JLabel();
38
39 public YearMonthDay() {
40
41 setDefaultCloseOperation(EXIT_ON_CLOSE);
42 jbInit();
43
44 }
45
46 private void jbInit() {
47
48 // contentPane = (JPanel) getContentPane();
49 // contentPane.setLayout(null);
50 // setSize(new Dimension(400, 300));
51 // setTitle("年月日下拉列表级联");
52 // 年的下拉选择框
53 cboYear.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
54 cboYear.setBounds(new Rectangle(0, 0, 55, 18));
55 // 月的下拉选择框
56 cboMonth.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
57 cboMonth.setBounds(new Rectangle(80, 0, 45, 18));
58 cboMonth.addItemListener( new DateItemAdapter(this));
59 // 日的下拉选择框
60 cboDay.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
61 cboDay.setBounds(new Rectangle(150, 0, 45, 18));
62 // cboDay.setEditable(true);
63 // 年的label
64 jLabel3.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
65 jLabel3.setText("年");
66 jLabel3.setBounds(new Rectangle(60, 0, 20, 20));
67 // 月的label
68 jLabel2.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
69 jLabel2.setText("月");
70 jLabel2.setBounds(new Rectangle(130, 0, 20, 20));
71 // 日的label
72 jLabel1.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
73 jLabel1.setText("日");
74 jLabel1.setBounds(new Rectangle(200, 0, 20, 20));
75
76 // contentPane.add(cboYear);
77 // contentPane.add(cboMonth);
78 // contentPane.add(cboDay);
79 // contentPane.add(jLabel3);
80 // contentPane.add(jLabel2);
81 // contentPane.add(jLabel1);
82
83 // 添加初始值
84 AddInfo();
85 }
86
87 private void AddInfo() {
88 // 年下拉选择框
89 for (int i = STARTYEAR; i < ENDYEAR; i++) {
90 cboYear.addItem("" + i);
91 }
92
93 // 月下拉选择框
94 for (int i = 0; i < 12; i++) {
95 cboMonth.addItem("" + (i + 1));
96 }
97
98 // 日下拉选择框
99 for (int j = 0; j < 31; j++) {
100 cboDay.addItem("" + (j + 1));
101 }
102 }
103
104 public void cboMonth_itemStateChanged(ItemEvent e) {
105
106 Object obj = cboMonth.getSelectedItem();// 取得选中月份
107
108 if (obj != null) {
109 cboDay.removeAllItems();// 清空日的下拉列表框
110
111 int month = Integer.valueOf(obj.toString());
112 int days = 31;
113 if (month == 4 || month == 6 || month == 9 || month == 11) {
114 days = 30;
115 } else if (month == 2) {
116 // 取得选中年份
117 int year = Integer.parseInt(cboYear.getSelectedItem()
118 .toString());
119 if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
120 // 是闰年
121 days = 29;
122 } else {
123 // 不是闰年
124 days = 28;
125 }
126 }// if
127
128 for (int j = 0; j < days; j++) {
129 cboDay.addItem("" + (j + 1));
130 }// for
131 }// if
132 }// if
133 }// end class
134 //事件监听器
135 class DateItemAdapter implements ItemListener {
136
137 private YearMonthDay adaptee;
138
139 DateItemAdapter(YearMonthDay adaptee) {
140 this.adaptee = adaptee;
141 }
142 public void itemStateChanged(ItemEvent e) {
143 adaptee.cboMonth_itemStateChanged(e);
144 }
145 }
146
147
148
149 public class Text extends JFrame {
150
151 /**
152 * @param args
153 */
154 public static void main(String[] args){
155 // TODO Auto-generated method stub
156 JFrame jf = new JFrame("注册");
157 jf.setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭
158 jf.setSize(800, 600); // 窗口大小
159 jf.setLocation(200, 200); // 窗口位置
160 JPanel pan = new JPanel();
161 jf.add(pan);
162 jf.setVisible(true);
163 pan.setLayout(null);
164 // 组件字体
165 Font f = new Font("宋体", Font.BOLD, 14);
166
167 // 添加标签和文本框
168 JLabel l_account = new JLabel("账号");
169 l_account.setBounds(20,0,100,100); //设置布局
170 pan.add(l_account);
171 l_account.setFont(f);
172 JTextField tf_account = new JTextField(10);
173 tf_account.setBounds(100, 40, 150, 25);
174 pan.add(tf_account);
175
176
177 JLabel l_password = new JLabel("密码");
178 l_password.setBounds(20, 40, 100, 100);
179 pan.add(l_password);
180 l_password.setFont(f);
181
182 JPasswordField password = new JPasswordField(20);
183 password.setEchoChar('*');
184 password.setBounds(100, 80, 150, 25);
185 pan.add(password);
186
187
188
189 JLabel l_qrpassword = new JLabel("确认密码");
190 l_qrpassword.setBounds(20, 80, 100, 100);
191 pan.add(l_qrpassword);
192 l_qrpassword.setFont(f);
193
194 JPasswordField qrpassword = new JPasswordField(20);
195 password.setEchoChar('*');
196 qrpassword.setBounds(100, 120, 150, 25);
197 pan.add(qrpassword);
198
199
200
201 JLabel l_sex = new JLabel("性别");
202 pan.add(l_sex);
203 l_sex.setFont(f);
204 l_sex.setBounds(20, 140, 100, 100);
205
206 JPanel p1 = new JPanel(); //设置边框
207 p1.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
208 p1.setBounds(100, 180, 150, 100); //设置边框位置
209
210 JRadioButton male = new JRadioButton("男", true);// 单选框
211 JRadioButton female = new JRadioButton("女");
212 ButtonGroup pan1=new ButtonGroup(); //设置单选框
213 pan1.add(male);
214 pan1.add(female);
215 pan.add(male);
216 pan.add(female);
217 male.setBounds(130,200,50,20);
218 female.setBounds(130,235,50,20);
219 pan.add(p1);
220
221
222 JLabel l_birthday = new JLabel("生日");
223 l_birthday.setBounds(300, 0, 100, 100);
224 pan.add(l_birthday);
225 l_birthday.setFont(f);
226 // 日历下拉菜单
227 YearMonthDay testDate = new YearMonthDay();
228 JPanel p = new JPanel();
229 p.add(testDate.cboYear);
230 p.add(testDate.jLabel3);
231 p.add(testDate.cboMonth);
232 p.add(testDate.jLabel2);
233 p.add(testDate.cboDay);
234 p.add(testDate.jLabel1);
235 p.setBounds(345, 30, 205, 40);
236 pan.add(p);
237
238
239 JLabel l_hobby = new JLabel("兴趣");
240 l_hobby.setBounds(300, 50, 100, 100);
241 pan.add(l_hobby);
242 l_hobby.setFont(f);
243 JPanel jp2 = new JPanel();
244 jp2.setBounds(350, 75, 240, 100);
245 jp2.setBorder(BorderFactory.createRaisedBevelBorder());
246 pan.add(jp2);
247
248 JPanel l_x = new JPanel();
249 JCheckBox[] interest = {new JCheckBox("阅读",true),new JCheckBox("唱歌"),new JCheckBox("跳舞")};
250 Box b2 = Box.createVerticalBox();
251 b2.add(interest[0]);
252 b2.add(interest[1]);
253 b2.add(interest[2]);
254 jp2.add(l_x);
255 jp2.add(b2);
256
257
258 JLabel l_bz = new JLabel("备注");
259 l_bz.setBounds(300, 140, 100, 100);
260 pan.add(l_bz);
261 l_bz.setFont(f);
262 JTextField tf_bz = new JTextField(100);
263 tf_bz.setBounds(350, 180, 180, 100);
264 pan.add(tf_bz);
265
266
267 // 添加按钮
268 JButton b_register = new JButton("注册");
269 b_register.setBounds(250,500,100,50);
270 pan.add(b_register);
271 b_register.setFont(f);
272 JButton b_reset = new JButton("重置");
273 b_reset.setBounds(450,500,100,50);
274 pan.add(b_reset);
275 b_reset.setFont(f);
276
277 }
278
279 }
运行结果图:
问题:
性别单选框的外边框,刚运行的时候没有,放大窗口才会出现,这是为什么?