ausgewählten radio-button-Liste in swing
Werde ich erstellen, multiple-choice-Frage-Anwendung mit java swing.Erstellt habe ich die swing-Klasse mit einer Liste von radio-buttons in gesonderten jPanels.Ich muss die ausgewählten radio-button und stellen hervorgehoben, die auf die richtige Antwort, wenn senden Sie die-Taste. aber ich kann nicht Holen Sie sich die ausgewählten radio-button-Liste in der Schwungphase. kann mir jemand empfehlen, eine gute Lösung ?
private void myInitComponents() {
jLabel = new javax.swing.JLabel();
setLayout(new BorderLayout());
jButton1 = new javax.swing.JButton();
QuestionDaoIF questionDao = new QuestionDao();
List<Question> listOfQuestion = questionDao.getQuestion();
jPanel2 = new javax.swing.JPanel();
jPanel2.setLayout(new BoxLayout(jPanel2, BoxLayout.Y_AXIS));
JScrollBar vbar = new JScrollBar(JScrollBar.VERTICAL, 30, 100, 0, 300);
vbar.addAdjustmentListener(new MyAdjustmentListener());
add(jLabel, BorderLayout.CENTER);
jPanel2.setAutoscrolls(true);
List<String> answerList = new ArrayList<>();
List<Question> questionList = listOfQuestion ;
Collections.shuffle(questionList);
int i = 1;
for (Question question : questionList) {
QuestionPane pane = new QuestionPane();
pane.getjTextPane1().setText("("+i+") "+question.getQuestion());
//genarate random answers
genarateRandomAnswer(question, answerList, pane);
jPanel2.add(pane);
i++;
}
jButton1.setText("Submit");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel2.add(jButton1);
//jPanel2.setBounds(100, 100, 800, 700);
this.add(getJMainScrollPane());
this.setTitle("Quizz");
this.setSize(1000, 700);
//pack();
}
private JScrollPane getJMainScrollPane() {
JScrollPane jMainScrollPane = new JScrollPane(jPanel2);
jMainScrollPane.setViewportBorder(BorderFactory
.createLineBorder(Color.GREEN));
jMainScrollPane
.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
return jMainScrollPane;
}
private void genarateRandomAnswer(Question question, List<String> answerList, QuestionPane pane) {
String answer1 = question.getCorrectAnswer();
String answer2 = question.getWrongAnswer1();
String answer3 = question.getWrongAnswer2();
String answer4 = question.getWrongAnswer3();
List<Answer> answrList = new ArrayList<>();
Answer ans1 = new Answer();
ans1.setAnswer(answer1);
ans1.setCorrectAnswer(true);
Answer ans2 = new Answer();
ans2.setAnswer(answer2);
ans2.setCorrectAnswer(false);
Answer ans3 = new Answer();
ans3.setAnswer(answer3);
ans3.setCorrectAnswer(false);
Answer ans4 = new Answer();
ans4.setAnswer(answer4);
ans4.setCorrectAnswer(false);
answrList.add(ans1);
answrList.add(ans2);
answrList.add(ans3);
answrList.add(ans4);
Collections.shuffle(answrList);
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup1.add(pane.getjRadioButton1());
buttonGroup1.add(pane.getjRadioButton2());
buttonGroup1.add(pane.getjRadioButton3());
buttonGroup1.add(pane.getjRadioButton4());
pane.getjRadioButton1().setText("(a) "+answrList.get(0).getAnswer());
pane.getjRadioButton1().setHideActionText(answrList.get(0).isCorrectAnswer());
pane.getjRadioButton2().setText("(b) "+answrList.get(1).getAnswer());
pane.getjRadioButton2().setHideActionText(answrList.get(1).isCorrectAnswer());
pane.getjRadioButton3().setText("(c) "+answrList.get(2).getAnswer());
pane.getjRadioButton3().setHideActionText(answrList.get(2).isCorrectAnswer());
pane.getjRadioButton4().setText("(d) "+answrList.get(3).getAnswer());
pane.getjRadioButton4().setHideActionText(answrList.get(3).isCorrectAnswer());
}
class MyAdjustmentListener implements AdjustmentListener {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
jLabel.setText(" New Value is " + e.getValue() + " ");
repaint();
}
}
- Erstellen Sie ein Modell, die Frage, die sich die Benutzeroberfläche erstellen können, die Sicht. Erlauben Sie die Ansicht, um das ausgewählte Antwort zurück zum Modell...
- bitte was ist Logik??? quesions werden nach dem Zufallsprinzip angezeigt, wo hast du das speichern von vorherigen Auswahlen??? in dem JLabel nur, getCorrectAnswer ist hardcoded???
- Ich habe bereits QuestionUI in der QuestionPane Klasse und ich verwenden Sie Ihr Objekt hier
- Für bessere Hilfe früher, nach einem SSCCE.
- ja, Fragen und Antworten werden nach dem Zufallsprinzip angezeigt, Nein, getCorrectAnswer() ist der getter in der Frage pojo und gespeichert werden, ist die richtige Antwort. Ich verwendet separate Antwort dto setzen
true
auf die richtige Antwort, und speichern Sie es alssetHideActionText()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine
QuestionAnswerPane
die fähig ist, einen Verweis auf eineQuestion
ModellDieser Tafel verantwortlich für die Generierung der Ansicht, vertreten durch die
Question
Modell und die Speicherung der Antwort des Benutzers in der it.Den
QuestionAnswerPane
sollte wissen, wasJRadioButton
gehört zu demanswer
. Wenn der Benutzer wählt einen der radio-buttons, erfolgt die Aktualisierung derQuestion
Modell mit der Antwort, die der Benutzer ausgewählt hat.Wenn der Benutzer auf
Submit
, Sie würde einfach jedesQuestion
und abrufen der Antwort des Benutzers.Es entkoppelt auch das Modell von der Benutzeroberfläche macht es einfacher zu handhaben. Mit dieser Idee könnte man tatsächlich überprüfen, ob alle Fragen beantwortet beispielsweise. Dies könnte auch erreicht werden, indem etwas Hinzugefügt, was wie ein
ChangeListener
dem ModellAktualisiert mit BASIC-Beispiel
Dies ist nur ein Beispiel entwickelt, um zu demonstrieren, das Konzept der
Question
wird der zentrale controller/modelDie, basierend auf der screen-shot oben, Ausgänge,...
Question
Modell festgelegt, das alle AttributQuestionAnswerPane
nach dem DurchlaufenQuestionAnswerPane
und zeigen Sie Fragen ? Ich habe ein problem, getSelectedValue wenn ich auf den submit-buttonQuestionAnswerPane
um die "wählen Sie die Antwort aus der Benutzer" ZURÜCK zu denQuestion
Modell, dann müssen Sie sich nicht kümmern, in welchem Zustand sich die Benutzeroberfläche ist in...Question
ist der Schlüssel, es enthält alle erforderlichen Informationen, um zu bestimmen, was die Frage ist, zu Fragen und was der Benutzer ausgewählt ist, werden alle, ohne sich auf die UI in irgendeiner Art und Weise...ich glaube nicht egal, wo die Antworten herkommen oder wie Sie formatiert sind...QuestionPane
. Haupt-problem ist, kann ich nicht direkt auswählen extrahieren, die Frage in ui.