2012-10-26 5 views
0

그룹에 checkbox을 사용할 때 몇 가지 문제가 있습니다. 이벤트 액션을 사용하여 checkbox 라벨 문자열을 얻습니다. checkbox에 두 그룹을 사용하고 있는데 그 때 처음에 checkbox을 클릭하면 텍스트가 변경됩니다. 그러나 첫번째 그룹 checkbox을 클릭하면 두 lables가 변경됩니다.Java 체크 박스 문제

여기 내 코드입니다 : 여기

/* <applet code="third.class" width=500 height=500></applet> */ 

import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class third extends Applet implements ItemListener 
{ 
private Label l1,l2; 
private Checkbox cb,cbj2; 
CheckboxGroup grp = new CheckboxGroup(); 
CheckboxGroup grp2 = new CheckboxGroup(); 
public void init() 
{ 



    Checkbox cb1 = new Checkbox("Mango",grp,false); 
    Checkbox cb2 = new Checkbox("Apple",grp,false); 
    Checkbox cb3 = new Checkbox("Orange",grp,false); 

    Checkbox cbj1 = new Checkbox("Male",grp2,false); 
    Checkbox cbj2 = new Checkbox("Female",grp2,false); 

    FlowLayout f1=new FlowLayout(FlowLayout.LEFT); 
    FlowLayout f2=new FlowLayout(FlowLayout.RIGHT); 
    FlowLayout f3=new FlowLayout(FlowLayout.CENTER); 

    cb1.addItemListener(this); 
    cb2.addItemListener(this); 
    cb3.addItemListener(this); 

    cbj1.addItemListener(this); 
    cbj2.addItemListener(this); 

    setLayout(f3); 
    add(cb1); 
    add(cb2); 
    add(cb3); 

    l1 = new Label("               "); 
    add(l1); 

    setLayout(f2); 
    add(cbj1); 
    add(cbj2);    

    l2 = new Label("               "); 
    add(l2); 
} 
public void itemStateChanged(ItemEvent e) 
{ 

    cb=(Checkbox)(e.getItemSelectable()); 
    l1.setText(cb.getLabel()); 

    cb2=(Checkbox)(e.getItemSelectable()); 
    l2.setText(cb2.getLabel()); 
} 
} 

보기 이미지!

http://img201.imageshack.us/img201/9779/76059549.png

문제는 내가 그 시간에 처음으로 checkbox 그룹을 클릭하면 모두 라벨 문자열이 변경 얻을 것입니다.
어떻게 그럴 수 있습니까?

+0

코드에서 컴파일 오류 (변수'itemStateChanged'가 정의되지 않은'방법 CB2'), 그 문제를 해결하시기 바랍니다있다. 또한이 문제는 변수 이름 지정과 관련이 있다고 생각합니다. – 1r0n1k

+0

"java-me"태그를 지정하면 안됩니다. –

답변

0

문제는 선택한 체크 박스 항목에서 ItemEvent 비교 때문입니다.
모든 클릭 이벤트에 대해 이벤트의 소스 항목 하나만 확인해야합니다.
귀하의 경우에는 cb1 또는 cb2입니다.
그러나 Female 체크 박스를 클릭했지만 cb1cb2에 라벨을 지정합니다.
따라서 두 개의 체크 박스는 동일한 라벨로 표시됩니다.

다음 변경 사항을 적용하고 영향을 확인하십시오.

Checkbox cb = (Checkbox) e.getItemSelectable(); 

    if (cb.getLabel().equals("Male")) { 
    l1.setText(cb.getLabel()); 
    } 
    else if (cb.getLabel().equals("Female")) { 
    l2.setText(cb.getLabel()); 
    }