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); 

null 레이아웃과 setBounds()를 사용하지 마십시오. 스윙은 레이아웃 관리자와 함께 사용하도록 설계되었습니다.

public void itemStateChanged1(ItemEvent e1) throws IOException 

코드가 어떻게 컴파일되는지 모르겠습니다. 잘못된 방법을 구현하고 있습니다. 또, ItemListener가 IOException를 Throw하는 이유는 무엇입니까?

잘못하고있는 것을 추측 할 수있는 실수는 너무 많습니다. 적절한 SSCCE를 게시하십시오.

+0

약간의 실수를 수정했습니다. 사본 붙여 넣기를하지 않았습니다 ... SSCCE는 괜찮습니다. – BDillan

+2

아무런 변화가 없습니다. SSCCE가 없으므로 제안 사항이 수정되지 않으므로 아무 도움도 필요하지 않습니다. – camickr

+0

변수를 적절한 규칙으로 변경할 수는 있지만 레이아웃을 업데이트하는 것은 문제와 관련이 없습니다. 나는 여전히 System.out.println이 왜 보이지 않는지 이해할 수 없다. – BDillan

0

당신은 Object source = e.getItemSelectable();

라고 말하면서 e1ItemEvent이라고 선언합니다.

Object source = e.getItemSelectable();Object source = e1.getItemSelectable();으로 변경해보세요.

+0

원본 프로그램에이 실수가 없습니다. 그것의 실수는 여기에 쓰여졌습니다 ... – BDillan

+0

@B 딜란은 그것을 고쳐 주십니까? 잘못된 정보가있는 SO에 대한 귀하의 제공 사람들 – Tdorno

+0

내가 편집했습니다. 다른 도움을받을 곳이 어디인지 알 수 없으며 왜 itemListener 메서드를 호출하지 않는지 알 수 없습니다. 코드에 무엇을 추가할지 모르기 때문에 누군가가 나에게 해결책을 줄 수 있기를 바랬다. – BDillan

관련 문제