我是靠谱客的博主 干净时光,最近开发中收集的这篇文章主要介绍Java实例——随机抽取幸运观众,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作者:Waylon
作者简介:小白一枚,和大多数同学一样从零开始一步步学习,一步步积累。期待您的关注,让我们一起成长~注:本人学疏才浅,如有错误之处,还有望指出~

项目功能简介:用户输入所有的观众名称,点击立即抽奖,即可获得一位幸运观众并将获奖信息显示出来;点击EXIT可退出程序。

图片

 

实现思路

1.创建窗体:用来显示在屏幕上和存放各种组件

2.创建一个文本框:用来实现用户的输入

3.创建两个多行文本域:用来显示观众信息和抽奖结果信息

4.创建两个按钮:用来开始抽奖和退出程序

所需技术

    本实例中的重点,是把字符串中的人员名单分割为数组,以及随机生成数组下标索引,这分别需要用到String类的spilt()方法和Math类的random()方法。

实现过程

1.创建窗体

关键代码如下:

public class Demo extends JFrame {
    /**
     * 创建窗体
     */
    public Demo() {
        setTitle("随机抽取幸运观众");
        setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭程序
        setBounds(200, 200, 520, 300);//设置窗体的位置及大小
}

2.创建画板

关键代码如下:

        private JPanel contentPane;
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//创建空边框
        setContentPane(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, 175, 242);//设置panel的位置及大小
        contentPane.add(panel);
        panel.setLayout(new BorderLayout(0, 5));
        
        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);
        panel_1.setLayout(new BorderLayout(0, 0));
        contentPane.add(panel_1);
        
        JScrollPane jscrollPane_1 = new JScrollPane();
        panel_1.add(jscrollPane_1);

3.创建多行文本域

关键代码如下:

        personnelArea = new JTextArea();
        personnelArea.setEditable(false);
        jscrollPane.setViewportView(personnelArea);

        resultArea = new JTextArea();
        resultArea.setEditable(false);
        resultArea.setLineWrap(true);
        jscrollPane_1.setViewportView(resultArea);

4.创建文本框

关键代码如下:

        nameField = new JTextField();
        nameField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                nameField_keyPressed(e);
            }
        });
        panel.add(nameField, BorderLayout.NORTH);
        nameField.setColumns(8);

5.创建按钮

关键代码如下:

        ImageIcon icon1 = new ImageIcon("src/img_1.png");
        ImageIcon icon2 = new ImageIcon("src/img_2.png");
        JButton button_1 = new JButton();
        button_1.setIcon(icon1);//设置显示的图片
        JButton button_2 = new JButton();
        button_2.setIcon(icon2);//设置显示的图片
        button_1.setBounds(407, 20, 82, 32);
        button_2.setBounds(407, 65, 82, 32);
        contentPane.add(button_1);
        contentPane.add(button_2);

6.添加按钮动作事件

 //添加按钮动作事件
        button_1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                button_1_actionPerformed(e);
            }
        });
        button_2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });

7.核心代码

    为文本框添加按键事件监听器,并编写事件处理方法,当用户在文本框中输入观众姓名并按下enter键时,如果文本内容为空,事件处理方法将发出提示信息,否则将观众姓名添加到文本域中,并以回车换行作为分隔符,然后选择文本框中所有的文本,准备接收用户的下一次输入。如果用户输入的观众姓名已经存在,则提示该观众已存在。具体代码如下:

private void nameField_keyPressed(KeyEvent e) {
        text = personnelArea.getText();// 获取人员列表文本
        split = text.split("n{1,}");//创建人员数组
        if (e.getKeyChar() != 'n') {
            return;// 不是回车字符不做处理
        }
        String name = nameField.getText();
        if (name.isEmpty()) {
            // 如果内容为空,发出提示信息
            JOptionPane.showMessageDialog(null, "内容不能为空!");
        }
        //检查name是否已存在split数组当中
        for (int i = 0; i < split.length; i++) {
            if (name.equals(split[i])) {
                JOptionPane.showMessageDialog(null, "该观众已存在!");
                return;
            }
        }
        personnelArea.append(name + "n");//将用户输入的文本添加到人员列表中
        nameField.selectAll();// 选择文本框所有字符
    }

        编写“立即抽奖”按钮的事件处理方法,通过随机数生成数组下标,当然这个下标是固定不变的,在在另一个文本域控件中输出抽取幸运观众的获奖信息,具体代码如下:

private void button_1_actionPerformed(ActionEvent e) {
        int a = (int) (Math.random() * split.length);//生成随机索引
        //格式化中奖信息
        String formatArg = "幸运观众:nt%1$sn恭喜%1$s成为本次的大奖得主。" + "nn我们将为Ta颁发:nt过期的酸奶二十箱。n让我们把掌声送给%1$s!";
        String format = String.format(formatArg, split[a]);
        resultArea.setText(format);
    }    

图片

完整代码链接:
https://download.csdn.net/download/Waylon_Ma/20430396

我是码龙,如果我的文章对你有帮助,请点个 ???????? 支持我一下 

最后

以上就是干净时光为你收集整理的Java实例——随机抽取幸运观众的全部内容,希望文章能够帮你解决Java实例——随机抽取幸运观众所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部