Java Swing抽奖程序

内容要求

1) 本次程序设计是专门针对 Java 课程的,要求使用 Java 语言进行具有一定代码量的程序开发。程序的设计要结合一定的算法,在进行代码编写前要能够设计好自己的算法。

2)本次程序设计涉及到 Java 的基本语法,即课堂上所介绍的变量、条件语句、循环语句、数组、方法、类、对象、继承、多态、异常等,除此之外还可能涉及图形用户界面编(GUI输入输出作(I0家进行自学,其中GUI开发涉及的 swing 组件或者iavafx 组件,请大家选择其中一个组件自行学习进行 GU的开发

3)开发工具不限,可以是 Eclipse,NetBeans 等。

题目 

抽奖程序可应用于多个场合,如公司年会、组织活动、班级随机点名等。要 求以文件形式存放用户名和编号,按“开始抽奖”按钮以后,屏幕上滚动显示用 户名和编号,按下“结束抽奖”按钮后,则屏幕上的用户名和号码,即为中奖号 码。

 基本要求:

     1.熟悉 Java 的 GUI 设计及基本组件和布局; 

    2.熟悉事件处理机制;

     3.完成规定的基本功能;

扩展要求: 

    1.能够在屏幕中滚动显示用户的照片(作为课堂点名用)。

    2.已抽到过的号码,下一轮不再参与抽奖。 

关注UP主,获取更多源码资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下步骤使用Java Swing创建一个简单的转盘抽奖程序: 1. 创建一个JFrame,并将其设置为GridLayout,以便在其中放置转盘和指针。 2. 在JFrame中创建一个JPanel,用于绘制转盘。您可以使用Graphics类的drawArc方法来绘制圆形部分,并使用drawLine方法绘制指针。您还可以使用FontMetrics类来计算文本的宽度和高度,以便在转盘上显示文本。 3. 创建一个ActionListener,用于处理抽奖按钮的点击事件。当用户单击按钮时,该监听器应该计算随机数,并将指针旋转到相应的位置。 4. 将转盘和抽奖按钮添加到JFrame中,并显示该窗口。 以下是一个简单的示例代码,可以帮助您开始编写您的转盘抽奖程序: ```java import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class LuckyDraw extends JFrame { private static final long serialVersionUID = 1L; private static final int PANEL_WIDTH = 500; private static final int PANEL_HEIGHT = 500; private static final int NUM_SECTORS = 8; private static final int ANGLE_INCREMENT = 360 / NUM_SECTORS; private static final int POINTER_LENGTH = 200; private JPanel panel; private JButton button; public LuckyDraw() { setTitle("Lucky Draw"); setSize(PANEL_WIDTH, PANEL_HEIGHT); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); setLayout(new GridLayout(2, 1)); panel = new JPanel() { private static final long serialVersionUID = 1L; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); int x = getWidth() / 2; int y = getHeight() / 2; int radius = Math.min(getWidth(), getHeight()) / 2 - 50; g.setColor(Color.WHITE); g.fillArc(x - radius, y - radius, radius * 2, radius * 2, 0, 360); g.setColor(Color.BLACK); g.drawArc(x - radius, y - radius, radius * 2, radius * 2, 0, 360); for (int i = 0; i < NUM_SECTORS; i++) { int startAngle = i * ANGLE_INCREMENT; int endAngle = (i + 1) * ANGLE_INCREMENT; g.setColor(getSectorColor(i)); g.fillArc(x - radius, y - radius, radius * 2, radius * 2, startAngle, ANGLE_INCREMENT); g.setColor(Color.BLACK); g.drawArc(x - radius, y - radius, radius * 2, radius * 2, startAngle, ANGLE_INCREMENT); drawSectorText(g, i, startAngle, endAngle, x, y, radius); } g.setColor(Color.RED); g.drawLine(x, y, (int) (x + POINTER_LENGTH * Math.cos(Math.toRadians(0))), (int) (y - POINTER_LENGTH * Math.sin(Math.toRadians(0)))); } }; button = new JButton("Lucky Draw"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int sector = (int) (Math.random() * NUM_SECTORS); int angle = sector * ANGLE_INCREMENT + (int) (Math.random() * ANGLE_INCREMENT); panel.getGraphics().setColor(Color.RED); panel.getGraphics().drawLine(PANEL_WIDTH / 2, PANEL_HEIGHT / 2, (int) (PANEL_WIDTH / 2 + POINTER_LENGTH * Math.cos(Math.toRadians(angle))), (int) (PANEL_HEIGHT / 2 - POINTER_LENGTH * Math.sin(Math.toRadians(angle)))); } }); add(panel); add(button); setVisible(true); } private Color getSectorColor(int sector) { switch (sector) { case 0: return Color.YELLOW; case 1: return Color.GREEN; case 2: return Color.ORANGE; case 3: return Color.BLUE; case 4: return Color.PINK; case 5: return Color.MAGENTA; case 6: return Color.CYAN; case 7: return Color.DARK_GRAY; default: return Color.WHITE; } } private void drawSectorText(Graphics g, int sector, int startAngle, int endAngle, int x, int y, int radius) { String text = "Sector " + sector; Font font = new Font("Arial", Font.BOLD, 16); g.setFont(font); FontMetrics metrics = g.getFontMetrics(font); int textWidth = metrics.stringWidth(text); int textHeight = metrics.getHeight(); double angle = Math.toRadians((startAngle + endAngle) / 2.0); int cx = (int) (x + (radius - textHeight) * Math.cos(angle)); int cy = (int) (y - (radius - textHeight) * Math.sin(angle)); g.drawString(text, cx - textWidth / 2, cy + textHeight / 2); } public static void main(String[] args) { new LuckyDraw(); } } ``` 希望这可以帮助您开始编写Java Swing转盘抽奖程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值