java结合GUI程序设计,编写选号程序,在窗体中安排11个标签,每个标签上显示0-9之间的一位数字,每位数字用一个线程控制其变化,单机“停止”按钮则所有标签数字停止变化。
时间: 2023-09-13 10:06:15 浏览: 75
JAVA设计界面的程序设计
以下是一个简单的Java GUI程序,使用11个线程控制每个标签上的数字变化,并且有一个“停止”按钮可以停止所有标签数字的变化。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class NumberPicker extends JFrame implements ActionListener {
private JLabel[] numberLabels = new JLabel[11];
private Thread[] numberThreads = new Thread[11];
private JButton stopButton;
public NumberPicker() {
setTitle("Number Picker");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1, 11));
for (int i = 0; i < 11; i++) {
numberLabels[i] = new JLabel(Integer.toString(i % 10));
add(numberLabels[i]);
}
stopButton = new JButton("Stop");
stopButton.addActionListener(this);
add(stopButton);
pack();
setVisible(true);
startNumberThreads();
}
private void startNumberThreads() {
for (int i = 0; i < 11; i++) {
int index = i;
numberThreads[i] = new Thread(() -> {
try {
while (true) {
int number = (index + (int) (Math.random() * 10)) % 10;
SwingUtilities.invokeLater(() -> numberLabels[index].setText(Integer.toString(number)));
Thread.sleep(100);
}
} catch (InterruptedException e) {
// Thread interrupted
}
});
numberThreads[i].start();
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == stopButton) {
for (int i = 0; i < 11; i++) {
numberThreads[i].interrupt();
}
}
}
public static void main(String[] args) {
new NumberPicker();
}
}
```
在这个程序中,我们使用了一个 `JFrame` 来显示窗体,并且使用了一个 `GridLayout` 来排列11个标签和一个按钮。我们使用了一个 `startNumberThreads()` 方法来启动11个线程,每个线程控制一个标签上的数字变化。在 `actionPerformed()` 方法中,我们响应了“停止”按钮的点击事件,通过调用 `interrupt()` 方法停止所有线程。最后,在 `main()` 方法中,我们创建了一个 `NumberPicker` 实例来启动程序。
阅读全文