繁体   English   中英

二维 JRadioButton 对象数组

[英]2D JRadioButton object array

我正在使用 java swing 创建一个调查表。 我正在将数据库中的问题和答案加载到视图中,并将单选按钮(答案)动态加载到视图中。

我创建了一个二维数组来生成 JRadioButton 对象。

JRadioButton[][] rdbtnanswer;

public method() {
    int ans_yval = 0; 

    for (int i = 0; i < questions.getNumberOfQuestions(); i++) {

        String questionnair = questions.getQuestion(i);

        Vector<Answers> vector_answers = questions.getAnswer(questionnair);

        ButtonGroup group = new ButtonGroup();

         rdbtnanswer = new JRadioButton[questions.getNumberOfQuestions()][vector_answers.size()];

         for (int v = 0; v < vector_answers.size(); v++) {

            rdbtnanswer[i][v] = new JRadioButton(vector_answers.get(v).getAnswers());
            rdbtnanswer[i][v].setBounds(31, 170+ans_yval, 236, 23);
            contentPane.add(rdbtnanswer[i][v]); 
            group.add(rdbtnanswer[i][v]);

             ans_yval = ans_yval + 25; 
         }          
    }
}

我在 UI 中完美地得到了答案。

但是当我创建另一个内部的外部 for 循环并尝试打印rdbtnanswer对象值时,值不存在。 每个数组都从最后一个替换。 我需要理由。

演示问题(或本例中的解决方案)的mre可能如下所示:

import java.util.List;
import java.util.Vector;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.swing.JRadioButton;

class Main {

    private JRadioButton[][] rdbtnanswer;

    public static void main(String args[]) {
        new Main().method();
    }

    public void method() {

        int numberOfQuestions = 5; //questions.getNumberOfQuestions();
        rdbtnanswer = new JRadioButton[numberOfQuestions ][0];

        for (int i = 0; i < numberOfQuestions; i++) {
            Vector<String> vector_answers = getAnswer(i);
            JRadioButton[] rowOfButtons = new JRadioButton[vector_answers.size()];
             for (int v = 0; v < vector_answers.size(); v++) {
                 rowOfButtons[v] = new JRadioButton(vector_answers.get(v));
             }
             rdbtnanswer[i]= rowOfButtons;
        }

        //printout for testing 
        for(JRadioButton[] rowOfButtons : rdbtnanswer) {
            for(JRadioButton btn : rowOfButtons) {
                System.out.print(btn.getText()); //print row 
            }
            System.out.println();
        }
    }

    //create a vector of Strings with values "0", "1", ......."i" for testing
    private Vector<String> getAnswer(int i) {
        List<String> list = IntStream.range(0, i+1).boxed().map(String::valueOf).collect(Collectors.toList());
        return new Vector<>(list);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM