请根据如下要求编写一个java程序:实现多窗口卖票情况进度显示功能;界面上显示一个大窗口包含三个小窗口,每个小窗口的内容包括:(1)窗口名称为TXY_2_016_该窗口的编号(2)该窗口分配的票数(3)已卖票数;要求所有小窗口分配的票数总和等于16,每个小窗口每次卖出的票数由不大于5的随机数指定。添加一个按键,通过按键手动启动窗口卖票,谢谢
时间: 2024-02-17 19:04:49 浏览: 97
以下是一个实现多窗口卖票情况进度显示功能的Java程序,其中包含一个大窗口和三个小窗口,每个小窗口都显示了窗口名称、分配的票数和已卖票数。程序中还添加了一个按钮,可以手动启动卖票操作。
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TicketSeller extends JFrame {
private JPanel mainPanel;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JButton sellButton;
private int[] ticketCounts = {5, 6, 5};
private int[] soldCounts = {0, 0, 0};
public TicketSeller() {
setTitle("卖票情况进度显示");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(1, 3));
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3, 1));
label1 = new JLabel("TXY_2_016_1");
panel1.add(label1);
panel1.add(new JLabel("分配票数:" + ticketCounts[0]));
panel1.add(new JLabel("已卖票数:" + soldCounts[0]));
mainPanel.add(panel1);
panel2 = new JPanel();
panel2.setLayout(new GridLayout(3, 1));
label2 = new JLabel("TXY_2_016_2");
panel2.add(label2);
panel2.add(new JLabel("分配票数:" + ticketCounts[1]));
panel2.add(new JLabel("已卖票数:" + soldCounts[1]));
mainPanel.add(panel2);
panel3 = new JPanel();
panel3.setLayout(new GridLayout(3, 1));
label3 = new JLabel("TXY_2_016_3");
panel3.add(label3);
panel3.add(new JLabel("分配票数:" + ticketCounts[2]));
panel3.add(new JLabel("已卖票数:" + soldCounts[2]));
mainPanel.add(panel3);
sellButton = new JButton("开始卖票");
sellButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sellTickets();
}
});
add(mainPanel, BorderLayout.CENTER);
add(sellButton, BorderLayout.SOUTH);
pack();
}
private void sellTickets() {
int totalTickets = 0;
int totalSold = 0;
for (int i = 0; i < ticketCounts.length; i++) {
int sold = (int)(Math.random() * 5) + 1;
soldCounts[i] += sold;
totalTickets += ticketCounts[i];
totalSold += soldCounts[i];
}
label1.setText("TXY_2_016_1(已卖" + soldCounts[0] + "张)");
label2.setText("TXY_2_016_2(已卖" + soldCounts[1] + "张)");
label3.setText("TXY_2_016_3(已卖" + soldCounts[2] + "张)");
JOptionPane.showMessageDialog(this, "卖出" + totalSold + "张票,还剩" + (totalTickets - totalSold) + "张票。");
}
public static void main(String[] args) {
TicketSeller seller = new TicketSeller();
seller.setVisible(true);
}
}
```
在程序中,我们使用了JFrame、JPanel、JLabel和JButton等Swing组件来实现用户界面。在程序启动时,我们创建了一个包含三个JPanel的JFrame,每个JPanel都包含了一个JLabel来显示窗口名称、分配的票数和已卖票数。我们还创建了一个JButton,当用户点击该按钮时,程序会随机卖出每个小窗口中的一些票,并更新显示的已卖票数。
我们使用了一个数组来存储每个小窗口分配的票数和已卖票数,并在卖票时更新这些数组。在卖票时,我们使用了Java的随机数生成器来生成一个不大于5的随机数,表示卖出的票数。最后,我们使用JOptionPane来显示卖票结果和剩余票数。
请注意,本程序仅供参考,实际应用中还需要考虑更多的细节和错误处理。
阅读全文