[英]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.