2017-11-25 11 views
0

ButtonGroupを使用して、フレームに複数のJButtonを配置しようとしています。複数のButtonGroupを1つのJFrameに配置する

フレームに3つのグループのボタンを入れなければなりません。

次のコードはボタンを作成しますが、分離するのではなく、お互いを「削除」しているようです。

私はそこに別々のボタンのグループ、それぞれ4つのボタンがあることを期待しています。

public class Question { 
private String _question; 
private String _option1; 
private String _option2; 
private String _option3; 
private String _option4; 
} 

ここに方法があります:

方法は、そのように見えるれ、「質問」オブジェクトのArrayListのを受け入れます。 は別のクラスのフレームを継承し、同じフレームにパネルを設定する "DisplayOnPanel"クラス内にあります。

public void addButtonstoFrame(ArrayList<Question> q){ 
    ArrayList<ButtonGroup> BG = new ArrayList<>(); 
    ArrayList<JPanel> JP = new ArrayList<>(); 

    JLabel question1 = new JLabel(); 
    int j=0; 
    for (int i = 0; i <q.size() ; i++) { 
     BG.add(new ButtonGroup()); 
     JP.add(new JPanel()); 
     JRadioButton option1 = new JRadioButton(q.get(i).get_option1()); 
     JRadioButton option2 = new JRadioButton(q.get(i).get_option2()); 
     JRadioButton option3 = new JRadioButton(q.get(i).get_option3()); 
     JRadioButton option4 = new JRadioButton(q.get(i).get_option4()); 
     BG.get(j).add(option1); 
     BG.get(j).add(option2); 
     BG.get(j).add(option3); 
     BG.get(j).add(option4); 
     JP.get(j).add(option1); 
     JP.get(j).add(option2); 
     JP.get(j).add(option3); 
     JP.get(j).add(option4); 


     this.setLayout(new BorderLayout()); //this referes to a frame 
     this.add(JP.get(j)); //this referes to a frame 
     JP.get(i).setLocation(j+10,j+10); 
     JP.get(j).setVisible(true); 
     this.setVisible(true);//this referes to a frame 
     j++; 
    } 

} 

をし、その結果は、12の代わりに、わずか4 butoonsです: "これは" フレームを指し

result

ありがとうございます!

+1

完全なコードサンプル(SSCCE)を必ず含めてください。 – Amber

+0

実際にはたくさんのコードがありますが、最後にコード全体を投稿しないように言われました:-( – Alan

+1

あなたのコード全体を投稿するように言われていませんより早く助けを求めるには、[MCVE] @Amberのヒント: '[mcve]'は[mcve]へのコメント内で自動的に展開されます。 –

答えて

0

まず、変数名は大文字で始めるべきではありません。

JRadioButton option1 = new JRadioButton(q.get(i).get_option1()); 
    JRadioButton option2 = new JRadioButton(q.get(i).get_option2()); 
    JRadioButton option3 = new JRadioButton(q.get(i).get_option3()); 
    JRadioButton option4 = new JRadioButton(q.get(i).get_option4()); 
    BG.get(j).add(option1); 
    BG.get(j).add(option2); 
    BG.get(j).add(option3); 
    BG.get(j).add(option4); 
    JP.get(j).add(option1); 
    JP.get(j).add(option2); 
    JP.get(j).add(option3); 
    JP.get(j).add(option4); 

コンポーネントは、単一の親コンテナにしか属しません。

ボタンを "JP"の封筒に追加すると、その封筒を "BG"コンテナから削除します。

したがって、各ラジオボタンのインスタンスをさらに4つ作成する必要があります。

+0

私はラジオボタンを一度作成する方法はありますか?多分私はあまりにも多くのJPを作成していますか? – Alan

+0

私は 'あなたの質問を理解してください。同じパネルに同じコンポーネントを2回追加することはできません。コンポーネントの複数のインスタンスを作成する必要があります。自宅に「リンゴ」がある場合。あなたは、冷蔵庫に、あなたの台所テーブルのバスケットにリンゴを置くことはできません。あなたは2つのリンゴが必要です。 – camickr

+0

私の質問は、4つのボタンが同じグループにあり、そのために8行のコードを書かなくても可能にする方法です。ありがとうございました! – Alan

関連する問題