我有30 JToggleButton
。如果他们被按下,我想把i和标题传递给另一个班级。
confirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
boolean buttonClicked = false;
for (i = 0; i < 30; i++) {
if (ButtonList[i].isSelected()) {
buttonClicked = true;
System.out.print(i+1);
System.out.println(title);
pass(title, ButtonList[i]);
}
}
if (!buttonClicked) {
JFrame parent= new JFrame();
JOptionPane.showMessageDialog(parent, "You haven't select a seat");
}
}
});
在调用past()函数之前,我在这里做了一个测试。打印的标题数量似乎跟随点击的toggleButton总数。怎么避免这个?
上面的代码给出了这个输出(假设点击了2个切换按钮)
1Marvel的美国队长
2Marvel的美国队长
答案 0 :(得分:1)
您是否尝试传递指定影片的所有选定席位?
Set<Integer> selectedSeats = new LinkedHashSet<>();
for (int i = 0; i < 30; i++)
{
if (ButtonList[i].isSelected())
{
selectedSeats.add(i + 1);
}
}
if (selectedSeats.isEmpty())
{
JFrame parent= new JFrame();
JOptionPane.showMessageDialog(parent, "You haven't select a seat");
}
else
pass(title, selectedSeats);
答案 1 :(得分:1)
我的问题是如何将数组i存储到对象中以便它 可以在名为pass()的新函数中传递标题吗?
所以,我知道您想要通过名为“pass”的方法通知标题及其选中的项目。如果是这种情况,您可以执行以下操作:
pass(list, title);
使用下面的代码(使用ArrayList你不需要使用“buttonClicked”布尔值):
confirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<int> list = new ArrayList<int>();
for (i = 0; i < 30; i++) {
if (ButtonList[i].isSelected()) {
list.add(i);
}
}
if (list.size() == 0) {
JFrame parent= new JFrame();
JOptionPane.showMessageDialog(parent, "You haven't select a seat");
}
}
});
我希望这会有所帮助。
编辑:Andy Turner你是对的,我只是改变了它答案 2 :(得分:0)
想要接收数据的类可以实现ActionListener接口。然后你可以使用该类而不是新的ActionListener。
这可能是这样的:
public class ClassThatWantsEvents implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) { ...
以及如何在当前班级中使用它:
confirm.addActionListener(ClassThatWantsEvents);