2012-01-20 2 views
0

私は、チェックボックスでウィンドウインターフェイスを作成する必要がある動的アプリケーションを持っています。チェックボックスの値は、プログラムの次のステップを制御します。java-catch特定の瞬間のチェックボタンの値

私はボタンとのインターフェイスを持っているので、私はしたいボタンを選択し、 "RUN"ボタンを押してください(選択の瞬間にプログラムが待機している必要があります)。 どうすればいいですか?

(私はhtmlタグでサーバーアプリケーションを使用することはできません。それはあまりにも簡単だろう。)

これは私のコードです。問題は、プログラムがRUNボタンを押す前にチェックボックスの値を制御することです。したがって、すべてのボタンの状態はFALSEになります。

public class JRadiobuttonExample extends JFrame { 
private JCheckBox radioButton1; 
private JCheckBox radioButton2; 
private JCheckBox radioButton3; 
private JLabel label; 
int i, state[] = {0,0,0,0}; 
JCheckBox b[]; 
static ArrayList<Boolean> check=new ArrayList<Boolean>(); 
JButton altervista=new JButton("RUN"); 
static int num; 


public JCheckBox[] getB() { 
    return b; 
} 
public void setB(JCheckBox[] b) { 
    this.b = b; 
} 
public ArrayList<Boolean> getCheck() { 
    return check; 
} 
public void setCheck(ArrayList<Boolean> check2) { 
    check = check2; 
} 
public JRadiobuttonExample(int num, ArrayList<String> lbl) { 
    super("JRadiobuttonExample"); 
    getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER)); 

    b= new JCheckBox[num]; 

    CheckBoxListener ckListener = new CheckBoxListener(); 

    for(i=0; i<num; i++) { 
     b[i] = new JCheckBox(lbl.get(i)); 
     b[i].addItemListener(ckListener); 
     getContentPane().add(b[i]); 
    } 

    setVisible(true); 

    getContentPane().add(altervista); 
    getContentPane().setVisible(true); 
    Ascoltatore asc=new Ascoltatore(); 
    altervista.addActionListener(asc); 
} 

class Ascoltatore extends WindowAdapter implements ActionListener{ 
    public void windowClosing(WindowEvent e){ 

    } 
    public void actionPerformed(ActionEvent e){ 
     if(e.getSource()==altervista){ 

     } 
    } 
} 



public static void main(String argv[]) 
{ 
    ArrayList<String> col=new ArrayList<String>(); 

    col.add("hello"); 
    col.add("everyone"); 

    num=col.size(); 
    JRadiobuttonExample b = new JRadiobuttonExample(num,col); 
    JCheckBox[] buttons=b.getB(); 

    for (JCheckBox c:buttons){ 
     check.add(c.isSelected()); 
    } 

    System.out.println("checkbox values are:"); 
    for (boolean sel:check){ 
     System.out.println(sel); 
    } 
} 
} 

答えて

3

「実行」ボタンをクリックしたときに次の画面を表示する必要があります。したがって、ActionListenerをこのボタンに追加する必要があります。

このリスナーは、すべてのチェックボックスの状態を取得し、これらの状態に応じてどの次の画面を表示するかを決定し、適切な次の画面を表示します。

これは、イベントベースのAPIの仕組みです。あなたは何かが起こるのを待つことはありません。リスナーをイベントに登録すると、イベントがトリガーされたときにこのリスナーが呼び出されます。

+0

ですから、このコマンドに問題がありますか? altervista.addActionListener(asc); –

+0

ありがとうございました。役に立つヒントでした! ..問題はactionListener自体にありました...メインコードではなく、メソッドActionPerformedで次のメソッドを呼び出さなければなりませんでした! –

+0

はい。このメソッドは 'if(e.getSource()== altervista){'(これは不必要です)内で、チェックボックスの状態を検査して次の画面を表示する必要があります。 –

関連する問題