用Java实现多窗口卖票情况进度显示:(1)界面上显示两个的窗口卖票情况,窗口名称分别为“LYH_1_108_1"和”LYH_1_108_2",同时每个窗口用进度条加数字的形式显示该窗口分配的票数和已卖票数。(2)所有窗口分配的票数总和等于108,每个窗口每次卖出的票数由随机数指定。(3)两个窗口共同显示在一个主窗口中,并有一个按钮,单击自动按钮同时启动两个窗口的启动卖票行为,窗口的每次买票间隔不少于1秒。
时间: 2024-02-18 18:03:44 浏览: 35
好的,我会尽力回答你的问题。首先,你需要使用Java Swing库来创建窗口和进度条,同时使用Java中的Random类来生成随机数。下面是实现多窗口卖票情况进度显示的代码:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class TicketSeller {
private JFrame mainFrame;
private JPanel panel;
private JProgressBar progressBar1;
private JProgressBar progressBar2;
private JLabel label1;
private JLabel label2;
private JButton startButton;
private int totalTickets = 108;
private int ticketSold1 = 0;
private int ticketSold2 = 0;
public TicketSeller() {
prepareGUI();
addComponents();
}
private void prepareGUI() {
mainFrame = new JFrame("Ticket Seller");
mainFrame.setSize(400, 200);
mainFrame.setLayout(new GridLayout(2, 1));
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addComponents() {
panel = new JPanel(new GridLayout(2, 2));
label1 = new JLabel("LYH_1_108_1");
progressBar1 = new JProgressBar(0, totalTickets);
progressBar1.setValue(0);
panel.add(label1);
panel.add(progressBar1);
label2 = new JLabel("LYH_1_108_2");
progressBar2 = new JProgressBar(0, totalTickets);
progressBar2.setValue(0);
panel.add(label2);
panel.add(progressBar2);
mainFrame.add(panel);
startButton = new JButton("Start");
startButton.addActionListener(e -> {
Thread thread1 = new Thread(() -> sellTickets(1));
Thread thread2 = new Thread(() -> sellTickets(2));
thread1.start();
thread2.start();
});
mainFrame.add(startButton);
mainFrame.setVisible(true);
}
private void sellTickets(int windowNum) {
while (ticketSold1 + ticketSold2 < totalTickets) {
int ticketSold = new Random().nextInt(5) + 1;
if (windowNum == 1) {
if (ticketSold1 + ticketSold <= totalTickets) {
ticketSold1 += ticketSold;
progressBar1.setValue(ticketSold1);
}
} else {
if (ticketSold2 + ticketSold <= totalTickets) {
ticketSold2 += ticketSold;
progressBar2.setValue(ticketSold2);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new TicketSeller();
}
}
```
这段代码创建了一个名为"Ticket Seller"的主窗口,其中包含一个面板,面板上有两个标签和两个进度条。主窗口下方还有一个"Start"按钮,用于启动两个窗口的卖票行为。在sellTickets方法中,我们使用随机数生成每个窗口卖出的票数,并根据窗口编号更新相应的进度条和已卖票数。每次买票间隔不少于1秒。