2012-05-11 18 views
0

動的チェックボックスに問題があります。私は1つまたは複数が選択されたときにチェクボックス/チェックボックスの横にコンボボックスを表示したい。しかし、新しいチェックボックスを選択するたびに移動するコンボボックスは1つしかありません。だから、誰かが私に何が間違っているのか、私は複数のコンボボックスをどうやって得るのかを教えてくれますか?動的チェックボックスとコンボボックス

for(int i = 0; i < names.length; i++) { 
     // ParameterField 
     JTextField fieldParam = new JTextField(); 
     fieldParam.setText(names[i]); 
     fieldParam.setEditable(false); 
     addElement(contentPanel, fieldParam, 25, yPos, 100, 20); 

     // ValueField 
     JTextField fieldValue = new JTextField(); 
     fieldValue.setText("" + values[i]); 
     fieldValue.setEditable(false); 
     addElement(contentPanel, fieldValue, 160, yPos, 100, 20); 

     //RadioButtonField   
     final JCheckBox checkboxes = new JCheckBox(); 
     checkboxes.setActionCommand(names[i]); 
     checkboxes.addActionListener(this); 
     addElement(contentPanel, checkboxes, 325, yPos, 100, 20); 


     final int checkBoxIndex = i; 
     checkboxes.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent ae2) { 
       if (checkboxes.isSelected()) { 
        comboProcent.setEnabled(true); 
        comboProcent.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"2%", "5%", "10%"})); 
        addElement(contentPanel, comboProcent, 435, 50 + checkBoxIndex * 25, 80, 20); 

        setVisible(true); 

       } 

        if (!checkboxes.isSelected()) { 
        contentPanel.remove(comboProcent); 

       } 

       System.out.println("checkbox is: " + checkBoxIndex); 
      } 
     }); 

     yPos = yPos + 25; 
    } 
+0

レイアウトの問題のようです。このような場合、コードのように新しいレイアウトが作成されたときにコンボボックスが動かないように、スペースを間に入れてさまざまな組み合わせを試してみる必要があります。 – NiranjanBhat

+0

好奇心の渦中に、「addElement」はどのオブジェクトに属していますか? –

答えて

0

私は正しく理解していますが、dinamycコンボボックスを使用する場合は、独自のComboBoxModelを実装する必要があります。

+0

私はComboBoxModelがインターフェースであることがわかりますが、私はJavaで新しくなっていますので、どうすれば問題が解決するのか説明できますか? –

+0

が良い例です。http://www.java2s.com/Tutorial/Java/0240__Swing/JComboBoxUsingtheCustomModel.htm – memo

1

各チェックボックスに新しいコンボボックスインスタンスを作成する必要があります。私が考えている最良の方法は、チェックボックスの値がいつ変更されたかに基づいて可視性を変更することです。 (私は前にこのようにしています)

+0

チェックボックスが動的で、どのようにわかっていないのか、それぞれのチェックボックスにコンボボックスのインスタンスを作成するにはどうすればよいですか多くのことがありますか? –

+0

addElementのコードは以下のとおりです。private void addElement(Container c、Component、int x、int y、int h、int w){ element.setBounds(x、y、h、w); c.add(要素); } ' –

+0

あなたは、そこにいくつのチェックボックスがあるかを知ることができます。 –

関連する問題