運作界面:
<a href="http://blog.51cto.com/attachment/201310/130458484.jpg" target="_blank"></a>
除了界面部分主要在于三個區域的處理: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
<code>package</code> <code>com.lixiyu;</code>
<code>import</code> <code>java.awt.BorderLayout;</code>
<code>import</code> <code>java.awt.Color;</code>
<code>import</code> <code>java.awt.EventQueue;</code>
<code>import</code> <code>java.awt.event.ActionEvent;</code>
<code>import</code> <code>java.awt.event.ActionListener;</code>
<code>import</code> <code>java.awt.event.KeyAdapter;</code>
<code>import</code> <code>java.awt.event.KeyEvent;</code>
<code>import</code> <code>javax.swing.JButton;</code>
<code>import</code> <code>javax.swing.JFrame;</code>
<code>import</code> <code>javax.swing.JPanel;</code>
<code>import</code> <code>javax.swing.JScrollPane;</code>
<code>import</code> <code>javax.swing.JTextArea;</code>
<code>import</code> <code>javax.swing.JTextField;</code>
<code>import</code> <code>javax.swing.UIManager;</code>
<code>import</code> <code>javax.swing.border.EmptyBorder;</code>
<code>import</code> <code>javax.swing.border.TitledBorder;</code>
<code>public</code> <code>class</code> <code>SecondArray </code><code>extends</code> <code>JFrame {</code>
<code> </code>
<code>private</code> <code>JPanel contentPane;</code>
<code>private</code> <code>JTextField nameArea;</code>
<code>private</code> <code>JTextArea personalArea;</code>
<code>private</code> <code>JTextArea resultArea;</code>
<code>public</code> <code>static</code> <code>void</code> <code>main(String[] args){</code>
<code> </code><code>try</code><code>{</code>
<code> </code><code>UIManager.setLookAndFeel(</code><code>"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"</code><code>);</code><code>//外觀</code>
<code> </code>
<code> </code><code>}</code><code>catch</code><code>(Throwable e){</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code>EventQueue.invokeLater(</code><code>new</code> <code>Runnable()</code>
<code>{</code>
<code>public</code> <code>void</code> <code>run(){</code>
<code> </code><code>SecondArray frame=</code><code>new</code> <code>SecondArray();</code>
<code> </code><code>frame.setVisible(</code><code>true</code><code>);</code>
<code>}</code><code>catch</code><code>(Exception e){</code>
<code> </code><code>e.printStackTrace();</code>
<code>}</code>
<code>});</code>
<code>public</code> <code>SecondArray(){</code>
<code> </code><code>setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</code>
<code> </code><code>setBounds(</code><code>100</code><code>, </code><code>100</code><code>, </code><code>498</code><code>, </code><code>300</code><code>);</code>
<code> </code><code>contentPane=</code><code>new</code> <code>JPanel();</code>
<code> </code><code>contentPane.setBorder(</code><code>new</code> <code>EmptyBorder(</code><code>5</code><code>,</code><code>5</code><code>,</code><code>5</code><code>,</code><code>5</code><code>));</code>
<code> </code><code>setContentPane(contentPane);</code>
<code> </code><code>setTitle(</code><code>"利用數組随機抽取幸運觀衆"</code><code>);</code>
<code> </code><code>contentPane.setLayout(</code><code>null</code><code>);</code>
<code> </code><code>JPanel panel=</code><code>new</code> <code>JPanel();</code>
<code> </code><code>panel.setBorder(</code><code>new</code> <code>TitledBorder(</code><code>null</code><code>,</code><code>"輸入在場觀衆并按回車"</code><code>,</code>
<code> </code><code>TitledBorder.LEADING, TitledBorder.TOP, </code><code>null</code><code>,</code>
<code> </code><code>new</code> <code>Color(</code><code>59</code><code>, </code><code>59</code><code>, </code><code>59</code><code>)));</code>
<code> </code><code>panel.setBounds(</code><code>10</code><code>, </code><code>10</code><code>, </code><code>174</code><code>, </code><code>242</code><code>);</code><code>//前兩個是坐标,後兩個是寬度和高度</code>
<code> </code><code>contentPane.add(panel);</code>
<code> </code><code>panel.setLayout(</code><code>new</code> <code>BorderLayout(</code><code>0</code><code>, </code><code>5</code><code>));</code><code>//布局管理器</code>
<code> </code><code>nameArea = </code><code>new</code> <code>JTextField();</code>
<code> </code><code>nameArea.addKeyListener(</code><code>new</code> <code>KeyAdapter() {</code>
<code> </code><code>public</code> <code>void</code> <code>keyPressed(KeyEvent e) {</code>
<code> </code><code>do_textField_keyPressed(e);</code>
<code> </code><code>}</code>
<code> </code><code>});</code>
<code> </code><code>panel.add(nameArea, BorderLayout.NORTH);</code>
<code> </code><code>nameArea.setColumns(</code><code>10</code><code>);</code>
<code> </code><code>JScrollPane scrollPane = </code><code>new</code> <code>JScrollPane();</code>
<code> </code><code>panel.add(scrollPane);</code>
<code> </code><code>personalArea = </code><code>new</code> <code>JTextArea();</code>
<code> </code><code>personalArea.setEditable(</code><code>false</code><code>);</code>
<code> </code><code>scrollPane.setViewportView(personalArea);</code>
<code> </code><code>JPanel panel_1 = </code><code>new</code> <code>JPanel();</code>
<code> </code><code>panel_1.setBorder(</code><code>new</code> <code>TitledBorder(</code><code>null</code><code>,</code>
<code> </code><code>"選取觀衆人員:"</code><code>,</code>
<code> </code><code>TitledBorder.LEADING, TitledBorder.TOP, </code><code>null</code><code>, </code><code>new</code> <code>Color(</code><code>59</code><code>, </code><code>59</code><code>,</code>
<code> </code><code>59</code><code>)));</code>
<code> </code><code>panel_1.setBounds(</code><code>183</code><code>, </code><code>10</code><code>, </code><code>219</code><code>, </code><code>242</code><code>);</code>
<code> </code><code>contentPane.add(panel_1);</code>
<code> </code><code>panel_1.setLayout(</code><code>new</code> <code>BorderLayout(</code><code>0</code><code>, </code><code>0</code><code>));</code>
<code> </code><code>JScrollPane scrollPane_1 = </code><code>new</code> <code>JScrollPane();</code>
<code> </code><code>panel_1.add(scrollPane_1);</code>
<code> </code><code>resultArea = </code><code>new</code> <code>JTextArea();</code>
<code> </code><code>resultArea.setEditable(</code><code>false</code><code>);</code>
<code> </code><code>resultArea.setLineWrap(</code><code>true</code><code>);</code>
<code> </code><code>scrollPane_1.setViewportView(resultArea);</code>
<code> </code><code>JButton button = </code><code>new</code> <code>JButton(</code><code>"抽取"</code><code>);</code>
<code> </code><code>button.addActionListener(</code><code>new</code> <code>ActionListener() {</code>
<code> </code><code>public</code> <code>void</code> <code>actionPerformed(ActionEvent e) {</code>
<code> </code><code>do_button_actionPerformed(e);</code>
<code> </code><code>button.setBounds(</code><code>407</code><code>, </code><code>164</code><code>, </code><code>63</code><code>, </code><code>25</code><code>);</code>
<code> </code><code>contentPane.add(button);</code>
<code> </code><code>JButton button_1 = </code><code>new</code> <code>JButton(</code><code>"退出"</code><code>);</code>
<code> </code><code>button_1.addActionListener(</code><code>new</code> <code>ActionListener() {</code>
<code> </code><code>do_button_1_actionPerformed(e);</code>
<code> </code><code>button_1.setBounds(</code><code>407</code><code>, </code><code>215</code><code>, </code><code>63</code><code>, </code><code>25</code><code>);</code>
<code> </code><code>contentPane.add(button_1); </code><code>//以上兩個button為設定抽取和退出鍵</code>
<code>protected</code> <code>void</code> <code>do_textField_keyPressed(KeyEvent e) {</code>
<code> </code><code>if</code> <code>(e.getKeyChar() != </code><code>'\n'</code><code>)</code><code>// 不是回車字元不做處理</code>
<code> </code><code>return</code><code>;</code>
<code> </code><code>String name = nameArea.getText();</code>
<code> </code><code>if</code> <code>(name.isEmpty())</code><code>// 如果文本框沒有字元串不做處理</code>
<code> </code><code>personalArea.append(name + </code><code>"\n"</code><code>);</code><code>// 把輸入人名與回車符添加到人員清單</code>
<code> </code><code>nameArea.selectAll();</code><code>// 選擇文本框所有字元</code>
<code>/*以上是對字輸入字元的限制并加到personalArea區域*/</code>
<code>protected</code> <code>void</code> <code>do_button_actionPerformed(ActionEvent e) {</code>
<code> </code><code>String perstring = personalArea.getText();</code><code>// 擷取人員清單文本</code>
<code> </code><code>String[] personnelArray = perstring.split(</code><code>"\n{1,}"</code><code>);</code><code>// 擷取人員數組</code>
<code> </code><code>int</code> <code>index = (</code><code>int</code><code>) (Math.random() * personnelArray.length);</code><code>// 生成随機數組索引</code>
<code> </code><code>// 定義包含格式參數的中獎資訊</code>
<code> </code><code>String formatArg = </code><code>"本次抽取觀衆人員:\n\t%1$s\n恭喜%1$5s成為本次觀衆抽獎的大獎得主。"</code>
<code> </code><code>+ </code><code>"\n\n我們将為%1$s**頒發:\n\t土豪金Iphone5s一台"</code><code>;</code>
<code> </code><code>// 為中獎資訊添加人員參數</code>
<code> </code><code>String info = String.format(formatArg, personnelArray[index]);</code>
<code> </code><code>resultArea.setText(info);</code><code>// 在文本域顯示中獎資訊</code>
<code>protected</code> <code>void</code> <code>do_button_1_actionPerformed(ActionEvent e) {</code>
<code> </code><code>dispose();</code>
本文轉自lixiyu 51CTO部落格,原文連結:http://blog.51cto.com/lixiyu/1303995,如需轉載請自行聯系原作者