2016-05-19 6 views
1

, пожалуйста, помогите мне проверить, что я пропустил здесь. Я вытягиваю свои волосы из этого и расстраиваюсь по этим проблемам.Обнаружить, что toggleButotn был нажат

У меня есть 30 JToggle и 2 кнопки. Когда нажата кнопка подтверждения, я хочу распечатать, на какой щелчок нажмите кнопку.

Выход, который я получаю, всегда Не нажата кнопка, хотя я нажал кнопку toggleButton.

enter image description here

public selectSeat(String title, String day, String time) 
    { 
     JPanel topPanel= new JPanel(new GridLayout(1, 215)); 
     RectDraw rect= new RectDraw(); 
     rect.setPreferredSize(new Dimension(3,25)); 
     topPanel.add(rect); 

      JToggleButton[] ButtonList = new JToggleButton[30]; 

      JPanel ButtonPanel= new JPanel(new GridLayout(5,25,45,25)); // row,col,hgap,vgap 
      for(int i = 0; i < 30; i++) { 
       int a=i+1; 
       ButtonList[i]= new JToggleButton(""+a); 
       ButtonPanel.add(ButtonList[i]); 

      } 

      JPanel bottomPanel = new JPanel(new GridLayout(1,5,40,20)); 
      JButton cancel= new JButton("Cancel"); 
      JButton confirm= new JButton("Confirm"); 
      bottomPanel.add(cancel); 
      bottomPanel.add(confirm); 

      setLayout(new BorderLayout(0, 45)); 
      add(topPanel, BorderLayout.PAGE_START); 
      add(ButtonPanel, BorderLayout.CENTER); 
      add(bottomPanel, BorderLayout.PAGE_END); 
      ButtonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); 
      bottomPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 20, 20)); //top,left,bottom,right 

      confirm.addActionListener(new ActionListener() 
        { 
       public void actionPerformed(ActionEvent e) 
       { 
        for(int i=0;i<30;i++) 
       { 
        if(ButtonList[i].isSelected()) 
         { 
         System.out.println(i); 
         }     
        else { 
         System.out.println("No button is clicked"); 
        } 
        }  
     } 
     }); 
       } 

ответ

4

В настоящее время Ваша программа дает выход для каждой кнопки, как в вашей реализации, следовательно, при нажатии кнопки confirm будет печататься количество переключаемых кнопки и для всех остальных он будет печатать «ни одна кнопка не была нажата кнопка» , Если вы просто хотите, чтобы напечатать количество переключаемых кнопки или «ни одна кнопка не нажата», если ни одна кнопка не была переключена, то вам необходимо изменить реализацию для:

confirm.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       boolean buttonClicked = false; 
       for (int i = 0; i < 30; i++) { 
        if (ButtonList[i].isSelected()) { 
         buttonClicked = true; 
         System.out.println(i); 
        } 
       } 
       if (!buttonClicked) { 
        System.out.println("No button is clicked"); 
       } 
      } 

     }); 

Надеюсь, что это помогает.

+0

Спасибо !!! он отлично работает –

+1

Рад, что помогло вам ура. – Sanjeev

+0

Знаете ли вы, как увеличить ширину прямоугольника и переместить его ниже? –