设置 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()

相等