运行界面:
除了界面部分主要在于三个区域的处理:nameArea对输入作要求并把输入的所有符合要求的字符提取到personalArea区域,获取观众列表文本并作数组来处理,最后随机生成一名幸运观众。
详细代码及注释如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
package
com.lixiyu;
import
java.awt.BorderLayout;
import
java.awt.Color;
import
java.awt.EventQueue;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.awt.event.KeyAdapter;
import
java.awt.event.KeyEvent;
import
javax.swing.JButton;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
import
javax.swing.JScrollPane;
import
javax.swing.JTextArea;
import
javax.swing.JTextField;
import
javax.swing.UIManager;
import
javax.swing.border.EmptyBorder;
import
javax.swing.border.TitledBorder;
public
class
SecondArray
extends
JFrame {
private
JPanel contentPane;
private
JTextField nameArea;
private
JTextArea personalArea;
private
JTextArea resultArea;
public
static
void
main(String[] args){
try
{
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
//外观
}
catch
(Throwable e){
e.printStackTrace();
}
EventQueue.invokeLater(
new
Runnable()
{
public
void
run(){
try
{
SecondArray frame=
new
SecondArray();
frame.setVisible(
true
);
}
catch
(Exception e){
e.printStackTrace();
}
}
});
}
public
SecondArray(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(
100
,
100
,
498
,
300
);
contentPane=
new
JPanel();
contentPane.setBorder(
new
EmptyBorder(
5
,
5
,
5
,
5
));
setContentPane(contentPane);
setTitle(
"利用数组随机抽取幸运观众"
);
contentPane.setLayout(
null
);
JPanel panel=
new
JPanel();
panel.setBorder(
new
TitledBorder(
null
,
"输入在场观众并按回车"
,
TitledBorder.LEADING, TitledBorder.TOP,
null
,
new
Color(
59
,
59
,
59
)));
panel.setBounds(
10
,
10
,
174
,
242
);
//前两个是坐标,后两个是宽度和高度
contentPane.add(panel);
panel.setLayout(
new
BorderLayout(
0
,
5
));
//布局管理器
nameArea =
new
JTextField();
nameArea.addKeyListener(
new
KeyAdapter() {
public
void
keyPressed(KeyEvent e) {
do_textField_keyPressed(e);
}
});
panel.add(nameArea, BorderLayout.NORTH);
nameArea.setColumns(
10
);
JScrollPane scrollPane =
new
JScrollPane();
panel.add(scrollPane);
personalArea =
new
JTextArea();
personalArea.setEditable(
false
);
scrollPane.setViewportView(personalArea);
JPanel panel_1 =
new
JPanel();
panel_1.setBorder(
new
TitledBorder(
null
,
"选取观众人员:"
,
TitledBorder.LEADING, TitledBorder.TOP,
null
,
new
Color(
59
,
59
,
59
)));
panel_1.setBounds(
183
,
10
,
219
,
242
);
contentPane.add(panel_1);
panel_1.setLayout(
new
BorderLayout(
0
,
0
));
JScrollPane scrollPane_1 =
new
JScrollPane();
panel_1.add(scrollPane_1);
resultArea =
new
JTextArea();
resultArea.setEditable(
false
);
resultArea.setLineWrap(
true
);
scrollPane_1.setViewportView(resultArea);
JButton button =
new
JButton(
"抽取"
);
button.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
button.setBounds(
407
,
164
,
63
,
25
);
contentPane.add(button);
JButton button_1 =
new
JButton(
"退出"
);
button_1.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
button_1.setBounds(
407
,
215
,
63
,
25
);
contentPane.add(button_1);
//以上两个button为设置抽取和退出键
}
protected
void
do_textField_keyPressed(KeyEvent e) {
if
(e.getKeyChar() !=
'\n'
)
// 不是回车字符不做处理
return
;
String name = nameArea.getText();
if
(name.isEmpty())
// 如果文本框没有字符串不做处理
return
;
personalArea.append(name +
"\n"
);
// 把输入人名与回车符添加到人员列表
nameArea.selectAll();
// 选择文本框所有字符
}
/*以上是对字输入字符的限制并加到personalArea区域*/
protected
void
do_button_actionPerformed(ActionEvent e) {
String perstring = personalArea.getText();
// 获取人员列表文本
String[] personnelArray = perstring.split(
"\n{1,}"
);
// 获取人员数组
int
index = (
int
) (Math.random() * personnelArray.length);
// 生成随机数组索引
// 定义包含格式参数的中奖信息
String formatArg =
"本次抽取观众人员:\n\t%1$s\n恭喜%1$5s成为本次观众抽奖的大奖得主。"
+
"\n\n我们将为%1$s**颁发:\n\t土豪金Iphone5s一台"
;
// 为中奖信息添加人员参数
String info = String.format(formatArg, personnelArray[index]);
resultArea.setText(info);
// 在文本域显示中奖信息
}
protected
void
do_button_1_actionPerformed(ActionEvent e) {
dispose();
}
}
|
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1303995,如需转载请自行联系原作者