设置 toggleButton 不可点击
Set toggleButton non-clickable
所以这是我的电影GUI。有30个JToggleButton
。我希望它通过检查 MySQL
中的值找出选择了哪个座位。如果没有选择座位,它们是可点击的,否则它们是不可点击的。
public selectSeat(String title, String day, String time) throws Exception
{
JPanel topPanel= new JPanel(new GridLayout(1, 15));
RectDraw rect= new RectDraw();
rect.setPreferredSize(new Dimension(30,25));
topPanel.add(rect);
JToggleButton[] ButtonList = new JToggleButton[30];
JPanel ButtonPanel= new JPanel(new GridLayout(5,15,45,25)); // row,col,hgap,vgap
for(int i = 0; i < 30; i++) {
a=i+1;
ButtonList[i]= new JToggleButton(""+a);
ButtonPanel.add(ButtonList[i]);
}
int no= findNo(day,title,time); // get hall number
System.out.println(no);
List<String> seats= checkSeat(no); // get selected seats value
System.out.println(seats); // [22,23]
for(String s : seats)
{
for(int j = 0; j<30;j++)
{
if(s.contains(ButtonList[j].getText())) // if seats label with 22 and 23
{
ButtonList[j].setEnabled(false); // non-clickable
}
}
}
但是,标记为 2、3、22 和 23 的切换按钮变得不可点击。
好的,我用这个方法解决了
for(String s : seats) // remove [] brackets (22,23)
{
String[] selected=s.split(","); // remove the comma
for (String t: selected)
{
for(int j = 0; j<30;j++)
{
if(ButtonList[j].getText().equals(t)) // if seats label with 22 and 23
{
ButtonList[j].setEnabled(false); // non-clickable
}
}
}
}
您正在检查“23”是否包含“2”或“3”,确实如此。摆脱 outer for 循环,而是简单地检查 ArrayList 是否包含 字符串,而不是列表的字符串是否包含子字符串:
for(int j = 0; j < ButtonList.length; j++) {
ButtonList[j].setEnabled(!seats.contains(ButtonList[j].getText()));
}
错误是if语句if(s.contains(ButtonList[j].getText()))
您正在检查您的字符串 s
是否包含您应该比较的按钮数量,如果它们与 s.equals()
相等
所以这是我的电影GUI。有30个JToggleButton
。我希望它通过检查 MySQL
中的值找出选择了哪个座位。如果没有选择座位,它们是可点击的,否则它们是不可点击的。
public selectSeat(String title, String day, String time) throws Exception
{
JPanel topPanel= new JPanel(new GridLayout(1, 15));
RectDraw rect= new RectDraw();
rect.setPreferredSize(new Dimension(30,25));
topPanel.add(rect);
JToggleButton[] ButtonList = new JToggleButton[30];
JPanel ButtonPanel= new JPanel(new GridLayout(5,15,45,25)); // row,col,hgap,vgap
for(int i = 0; i < 30; i++) {
a=i+1;
ButtonList[i]= new JToggleButton(""+a);
ButtonPanel.add(ButtonList[i]);
}
int no= findNo(day,title,time); // get hall number
System.out.println(no);
List<String> seats= checkSeat(no); // get selected seats value
System.out.println(seats); // [22,23]
for(String s : seats)
{
for(int j = 0; j<30;j++)
{
if(s.contains(ButtonList[j].getText())) // if seats label with 22 and 23
{
ButtonList[j].setEnabled(false); // non-clickable
}
}
}
但是,标记为 2、3、22 和 23 的切换按钮变得不可点击。
好的,我用这个方法解决了
for(String s : seats) // remove [] brackets (22,23)
{
String[] selected=s.split(","); // remove the comma
for (String t: selected)
{
for(int j = 0; j<30;j++)
{
if(ButtonList[j].getText().equals(t)) // if seats label with 22 and 23
{
ButtonList[j].setEnabled(false); // non-clickable
}
}
}
}
您正在检查“23”是否包含“2”或“3”,确实如此。摆脱 outer for 循环,而是简单地检查 ArrayList 是否包含 字符串,而不是列表的字符串是否包含子字符串:
for(int j = 0; j < ButtonList.length; j++) {
ButtonList[j].setEnabled(!seats.contains(ButtonList[j].getText()));
}
错误是if语句if(s.contains(ButtonList[j].getText()))
您正在检查您的字符串 s
是否包含您应该比较的按钮数量,如果它们与 s.equals()