2012-04-18 3 views
1

У меня есть массив JTogglebuttons и JButton, когда JButton нажат, он запускает цикл, который выполняет итерацию через все кнопки JToggle, чтобы увидеть, нажата ли она, и если это так, это отключить/unclickableПроверьте, нажата ли JToggleButton и отключена ли она

Вот фрагмент кода, который является проблемой

Public void actionPerformed(ActionEvent e){ 
     Object pressed = e.getSource(); 
     if (pressed == btnPurchase) { 
      for(int row = 0; row<8 ; row++){ 
       for(int column = 0; column < 4; column++) {  
        if (seat[row][column].isPressed()) { 
         seat[row][column].setEnabled(false); 
        } 
       } 
      } 
     } 

Я получаю эту ошибку

cannot find symbol 
symbol : method isPressed() 
location: class javax.swing.JToggleButton 
        if (seat[row][column].isPressed()) { 

Если я использую .isSelected

я получить

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at cinemaManager.actionPerformed(cinemaManager.java:174) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
    at java.awt.Component.processMouseEvent(Component.java:6375) 
+2

Ищите методы с 'selected' в имени в документах. для ['JToggleButton'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JToggleButton.html). –

ответ

2

взгляд на ButtonModel, тот возвращает ожидаемые метод, в том числе IsSelected

import javax.swing.ButtonModel; 
import javax.swing.JFrame; 
import javax.swing.JToggleButton; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class JToggleButtonChangeListener { 

    public static void main(String args[]) { 
     JFrame frame = new JFrame("Selecting Toggle"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     final JToggleButton toggleButton = new JToggleButton("Selecting Toggle/Deselacting Toggle"); 
     toggleButton.addChangeListener(new ChangeListener() { 

      @Override 
      public void stateChanged(ChangeEvent e) { 
       ButtonModel buttonModel = toggleButton.getModel(); 
       boolean armed = buttonModel.isArmed(); 
       boolean pressed = buttonModel.isPressed(); 
       boolean selected = buttonModel.isSelected(); 
       System.out.println("Changed: " + armed + "/" + pressed + "/" + selected); 
      } 
     }); 
     frame.add(toggleButton); 
     frame.pack(); 
     frame.setLocation(150, 150); 
     frame.setVisible(true); 
    } 
} 

уведомление: изменение фоновой не работает для всех Смотри и ощущению

+2

Вам не нужно входить в модель кнопок. См. [This] (http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#isSelected%28%29). – user1329572

+0

Что это значит? Как его использовать? Я попробовал .isSelected, он компилируется, но ничего не происходит. – h00j

+0

@Henry Hoggard, пожалуйста, см. Мое редактирование, вы должны принять JToggleButton ближе к JCheckBox/JRadioButton относительно сообщения JButton – mKorbel

0

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

Смежные вопросы