0

グループで使用すると問題が発生しcheckboxます。イベントアクションを使用してcheckboxラベル文字列を取得します。私は2つのグループを使用しており、その時点でcheckbox最初のグループをクリックすると、ラベルのテキストが変更されます。checkboxしかし、最初のグループをクリックするとcheckbox、両方のラベルが変更されます。

これが私のコードです:

/* <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両方のラベル文字列が変更されることです。
では、どうすればそれを止めることができますか?

4

1 に答える 1

0

この問題はItemEvent、選択したチェックボックス項目の比較が原因です。
クリックイベントごとに、イベントのソースアイテムを1つだけ確認する必要があります。
あなたの場合、それはまたはのどちらcb1かになりますcb2
ただし、チェックボックスをクリックしていFemaleますが、そのラベルをとの両方に割り当てていcb1ますcb2
したがって、両方のチェックボックスが同じラベルで表示されます。

次の変更を適用して、それがどのように影響するかを確認してください。

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

  if ( cb.getLabel().equals( "Male" ) ) {
    l1.setText( cb.getLabel() );
  }
  else if ( cb.getLabel().equals( "Female" ) ) {
    l2.setText( cb.getLabel() );
  }
于 2012-10-26T10:56:05.553 に答える