gpt4 book ai didi

java - 如何让用户只选择特定座位?

转载 作者:行者123 更新时间:2023-12-02 13:42:32 25 4
gpt4 key购买 nike

我在这里遇到问题..任何人都可以为我提供一个合适的解决方案来解决这个问题...问题是,如何确保用户不能选择混合的座位,例如用户不能选择右 3 个和左 3 个……但用户可以一次选择多个座位。

我该如何解决这个问题?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class CinemaTicketMachine {

private JComponent ui = null;
private JToggleButton[] seats = new JToggleButton[80];
private JTextArea selectedSeats = new JTextArea(3, 40);

CinemaTicketMachine() {
initUI();
}

public void initUI() {
if (ui!=null) return;

ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new EmptyBorder(4,4,4,4));

selectedSeats.setLineWrap(true);
selectedSeats.setWrapStyleWord(true);
selectedSeats.setEditable(false);
ui.add(new JScrollPane(selectedSeats), BorderLayout.PAGE_END);

JPanel cinemaFloor = new JPanel(new BorderLayout(40, 0));
cinemaFloor.setBorder(new TitledBorder("Available Seats"));
ui.add(cinemaFloor, BorderLayout.CENTER);
JPanel leftStall = new JPanel(new GridLayout(0, 2, 2, 2));
JPanel centerStall = new JPanel(new GridLayout(0, 4, 2, 2));
JPanel rightStall = new JPanel(new GridLayout(0, 2, 2, 2));

cinemaFloor.add(leftStall, BorderLayout.WEST);
cinemaFloor.add(centerStall, BorderLayout.CENTER);
cinemaFloor.add(rightStall, BorderLayout.EAST);

ActionListener seatSelectionListener = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
showSelectedSeats();
}
};

for (int ii=0; ii <seats.length; ii++) {
JToggleButton tb = new JToggleButton("S-" + (ii+1));
tb.addActionListener(seatSelectionListener);
seats[ii] = tb;
int colIndex = ii%8;
if (colIndex<2) {
leftStall.add(tb);
} else if (colIndex<6) {
centerStall.add(tb);
} else {
rightStall.add(tb);
}
}
}

private void showSelectedSeats() {
StringBuilder sb = new StringBuilder();
for (int ii=0; ii<seats.length; ii++) {
JToggleButton tb = seats[ii];
if (tb.isSelected()) {
sb.append(tb.getText());
sb.append(", ");
}
}
String s = sb.toString();
if (s.length()>0) {
s = s.substring(0, s.length()-2);
}
selectedSeats.setText(s);
}

public JComponent getUI() {
return ui;
}

public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
CinemaTicketMachine o = new CinemaTicketMachine();

JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);

f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());

f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}

最佳答案

有多种方法可以防止用户选择无效的席位组合。

  1. 在选择座位时,您可以禁用现在代表无效选择的所有切换按钮(使用 setEnabled(false))。这样用户就无法选择无效的组合。

  2. 选择无效座位后,您可能会显示错误消息并立即取消选择座位。

  3. 选择无效席位后,您可以自动取消选择导致当前选择无效的席位。

  4. 您可以允许选择无效的组合,但显示错误消息,并且在错误解决之前不允许用户提交/落实该组合。

关于java - 如何让用户只选择特定座位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42669293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com