Java编写一个程序模拟抽奖活动。有一个"开始"按钮,点击后数字不断的变化,按钮变成"停止"按钮,用于数字号码暂停,点击“停止”按钮后,又变成“开始”按钮。
时间: 2024-03-18 19:40:33 浏览: 60
好的,让我们一步步来编写这个Java程序。
首先,我们需要一个GUI界面,可以使用JavaFX或Swing等工具包来实现。这里以JavaFX为例,我们需要在FXML文件中添加一个Button和一个Label,分别用于展示抽奖结果和控制抽奖:
```xml
<Button fx:id="startButton" text="开始" onAction="#startLottery" />
<Button fx:id="stopButton" text="停止" onAction="#stopLottery" disable="true" />
<Label fx:id="resultLabel" text="等待中..." />
```
接下来,我们需要在Controller类中实现两个方法,分别对应开始和停止抽奖:
```java
public class LotteryController {
@FXML
private Button startButton;
@FXML
private Button stopButton;
@FXML
private Label resultLabel;
private boolean isRunning = false;
private int result = 0;
private Timeline timeline;
@FXML
private void startLottery(ActionEvent event) {
if (isRunning) {
return;
}
isRunning = true;
startButton.setDisable(true);
stopButton.setDisable(false);
timeline = new Timeline(new KeyFrame(Duration.millis(100), e -> {
result = (int) (Math.random() * 100);
resultLabel.setText(String.valueOf(result));
}));
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();
}
@FXML
private void stopLottery(ActionEvent event) {
if (!isRunning) {
return;
}
isRunning = false;
startButton.setDisable(false);
stopButton.setDisable(true);
timeline.stop();
}
}
```
在startLottery方法中,我们首先判断是否已经在运行,如果是则直接返回。接着禁用开始按钮,启用停止按钮,并创建一个Timeline对象,用于每隔100毫秒更新结果Label上的数字。Timeline的循环次数设置为无限循环,并开始播放。
在stopLottery方法中,我们同样判断是否已经在运行,如果是则直接返回。接着启用开始按钮,禁用停止按钮,并停止Timeline的播放。
最后,我们需要在Main类中加载FXML文件,并启动应用程序:
```java
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("lottery.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
这样,我们就完成了一个简单的抽奖程序。
阅读全文