java:Swing(1)模拟随机抽签

本文介绍了如何使用Java的Swing库创建一个GUI小程序,实现随机抽签的功能。通过示例代码展示了运行结果,提供了 javax.swing 相关的实践应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package SwingBasicStudy;


import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
import java.util.concurrent.TimeUnit
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/* 模拟随机抽签过程,
 * */
 //定义一个随机生成器接口;
interface Generator2<T>{
    T next();
}
//用于现实游戏用户头像的随机生成
class MemberImages implements Generator2<File> {

    @Override
    public File next() {
        //把文件中图片加到map集合中
        HashMap<String,File> fileMap = 
            new HashMap<String, File>();
        File[] files = new File("img").listFiles();
        ArrayList<String> names = new ArrayList<String>();
        for(File f:files){
            names.add(f.getName());
            fileMap.put(f.getName(),f);
        }

        File file = fileMap.get(names.get(
            new Random().nextInt(files.length)));
        return file;
    }

}
public class RandDrawLotsGameTwo {
    public static void ini(){
        JFrame frame = new JFrame("Random Draw Lots Game");
        JLabel label = new JLabel("Ready Go:");
        JLabel label2 = new JLabel("name");
        JButton button  = new JButton("随机抽签");

        //设置布局管理:
        GridBagLayout gl = new GridBagLayout();
        frame.setLayout(gl);

        frame.add(label);
        frame.add(label2);
        frame.add(button);

        //是用来控制添加进的组件的显示位置  
        GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints,  
        s.fill = GridBagConstraints.NONE;  
        //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况  

        s.gridwidth=0;//该方法是设置组件水平所占用的格子数,
        s.weightx = 1;//该方法设置组件水平的拉伸幅度,
        s.weighty=1;//该方法设置组件垂直的拉伸幅度,
        gl.setConstraints(label, s);//设置组件  

        s.gridwidth=0;
        s.weightx = 1;
        s.weighty=1;
        gl.setConstraints(label2, s); 

        s.gridwidth=0;  
        s.weightx = 0;  
        s.weighty=1;  
        gl.setConstraints(button, s);  
        //给按钮增加点击事件:
        class ButtonListener implements ActionListener{
            private int count=1;
            public void actionPerformed(ActionEvent e) {

                    File file = new Resourse().next();
                    ImageIcon icon = new ImageIcon(file.getAbsolutePath());
                    label.setText("");
                    label.setIcon(icon);

                    String fileName = file.getName();
                    String name = fileName.substring(
                        0, fileName.length()-4);
                    label2.setText("第 "+ count++ +
                        " 次抽签的幸运号是: "+name);

                    try {
                        TimeUnit.SECONDS.sleep((long)0.5);
                    } catch (InterruptedException e1) {
                        e1.printStackTrace();
                    }
            }
        }           

        //在按钮上注册这个事件:
        button.addActionListener(new ButtonListener());


        //设置默认关闭动作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗体大小
        frame.setBounds(300, 100, 100, 200);
        frame.setSize(600,500);
        frame.setVisible(true);
    }


    public static void main(String[] args) throws InterruptedException {
        ini();
    }   

}



运行结果展示:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值