2013-05-14 2 views
-3

Я взял сегмент своей программы и разместил здесь код. В основном проблема заключается в том, что метод прослушивания элемента не называется. Здесь, если пользователь выбирает правильный ответ и нажимает «Отправить», метод actionlistener скажет ему/ей, если они ответят правильно.Java - ItemListener не слушает мои компоненты?

static boolean answer = false; // returns this as true if user got question right 

public void QuizPanel() { 
    QuizPanel = new JPanel(); 
    QuizPanel.setLayout(null); // default layout 

    JLabel label = new JLabel("True/False- Java is Object Orientated?"); 
    label.setBounds(10, 50, 400, 20); 
    QuizPanel.add(label); 

    option1 = new JCheckBox("True"); 
    option1.setSelected(false); 
    option1.setBounds(10, 70, 120, 40);       
    QuizPanel.add(option1); 
    option1.addItemListener(this); // Adds a item listener 

    option2 = new JCheckBox("False"); 
    option2.setSelected(false); 
    option2.setBounds(40, 70, 120, 40); 
    QuizPanel.add(option2); 
    option2.addItemListener(this); 

    /////////////////////////////////////// 

    JButton submit = new JButton("SUBMIT ANSWER:"); 
    submit.setBounds(10, 100, 150, 20); 
    QuizPanel.add(submit); 

    submit.addActionListener(new ActionListener() { // Action Listener  
     public void actionPerformed(ActionEvent evt2) { 
      System.out.println ("Your answer is " + answer); // Got it right? 
     } 
    }); 
} 

public void itemStateChanged1(ItemEvent e1) { 
    Object source = e.getItemSelectable();   
    if (source == option1) { 
     answer = true; 
    } else { 
     //nothing- stays false 
    }  
} 

Ничего не происходит, и он не сообщает пользователю, правильно ли он/она прав.

+0

'e.getItemSelectable();' логика требует, чтобы этот код даже не компилировался. Кроме того, для лучшей помощи, пожалуйста, добавьте [sscce] (http://www.sscce.org). – mre

+0

Вы используете IDE, чтобы написать это? – Tdorno

+0

Этот код не компилируется вообще, начиная с; вы забыли на линии с System.out.println() и закончили тем, что не применяли методы ItemListener (ваш - itemStateChanged1. Почему 1?) – stealthjong

ответ

3
QuizPanel = new JPanel(); 

Использовать стандартные соглашения об именах Java. Имена переменных не должны начинаться с верхним регистром символом:

QuizPanel.setLayout(null); 
... 
label.setBounds(10, 50, 400, 20); 

Не используйте нулевой макет и SetBounds(). Swing был разработан для использования с менеджером макета.

public void itemStateChanged1(ItemEvent e1) throws IOException 

Я не знаю, как компилируется ваш код. Вы используете неправильный метод. Кроме того, почему ItemListener выбрасывает исключение IOException?

Слишком много небольших ошибок, чтобы угадать, что вы делаете неправильно. Отправьте надлежащий SSCCE.

+0

Я исправил некоторые из небольших ошибок. Я не копировал пасту ... SSCCE выключен ok – BDillan

+2

Ничто не меняет меня. Нет SSCCE, ни одно из предложений не исправлено, поэтому, я думаю, вы действительно не хотите никакой помощи. – camickr

+0

Я могу изменить переменные в правильное соглашение, но обновление макета не будет иметь отношения к проблеме. Я все еще не могу понять, почему System.out.println не отображается? – BDillan

0

Вы говорите Object source = e.getItemSelectable();

но вы объявляете e1 в качестве ItemEvent.

Попробуйте изменить Object source = e.getItemSelectable(); на Object source = e1.getItemSelectable();.

+0

В моей первоначальной программе не было этой ошибки. Его ошибка написана здесь ... – BDillan

+0

@ BDillan исправить это? Ваше предоставление людям здесь на SO с недействительной информацией – Tdorno

+0

Я отредактировал его. Я просто не знаю, где еще искать помощь, и я не знаю, почему она не вызывает метод itemlistener. Я надеялся, что кто-то может дать мне решение, потому что я не знаю, что добавить в код. – BDillan

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