运行界面:

130458484.jpg

除了界面部分主要在于三个区域的处理: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,如需转载请自行联系原作者