kullanılmaksızın bir javafx sahne başlat bir javafx projesinde quiz_scene ve quiz_scene_controller aradı. Bu sahne bir soru ve cevap sınav oyunu simüle eder. Sahnelerin nesnesi, question_label ve answer_text_field veya answer_buttons. Toplamda soru sayısı 7'dir ve sistem bir sonraki sahneye yönlendirildikten sonra.Ben yeni bir sahne yarattık bir düğme olayı
Sisteme girdiğimde, soruları ve yanıtları almak için soruları ve yanıtları içeren bir sql veritabanına bir başlatma işlevinde bir sorguyu gerçekleştirmek için sisteme giriyorum. Bu prosedür, sistem quiz_scene (ve ayrıca her yanıt düğmesine basıldığında) açıldığında bir kez gerçekleşmelidir. Sorgunun işlevselliğini **@FXML public void initialize()**
içinde eklemeyi denedim, ancak çalışmadı.
Bir düğme olayında işlevselliği eklemeyi denediğimde, sorgu çalıştı ve ben db'den gelen bilgileri kullanarak sahnenin etiketini ve düğmelerini değiştirebiliyorum. Bulduğum konulardan biri, sorguyu gerçekleştirdiğimde quiz_scene için yükleyiciyi içeren ana sınıfıma bir başvuru oluşturduğum gerçeğidir. Olay olmadan mevcut nesneyi almıyorum ve boş bir tane alıyorum. Bir düğme kullanmadan nasıl yapabilirim? Neden nesnem boş?
Buradaki kodu şu adreste bulabilirsiniz: code.
loader = new FXMLLoader();
loader.setLocation(Flow.class.getResource("/gui/quiz/quiz.fxml"));
quizPane = loader.load();
quizSceneController quiz = loader.getController();
EDIT:
public class quizSceneController{
private Flow flow;
public void setMain(Flow flow){ this.flow = flow;}
@FXML Button answerbutton;
@FXML Text timeField, scoreField;
@FXML public Label question, showQuestionCounter, answer, questionId, questionType, questionSpeed;
NextQuestion nextQuestion;
public String temp, temp2;
public GridPane takingTestPane = new GridPane();
public void chooseNextQuestion(Flow flow){
try {
this.flow.nextQ = false;
this.flow.startTime = System.currentTimeMillis();
//Choosing the next question
String sql = "select * from Questions where Subject = ? and Level = ? and questionId = ?";
PreparedStatement pst =
this.flow.connectionQuestions.prepareStatement(sql);
pst.setString(1, this.flow.textSubjectQTest);
pst.setString(2, this.flow.user_course_level);
pst.setString(3, this.flow.list.get(counter));
ResultSet rs = pst.executeQuery();
if (rs.next()) {
temp = rs.getString("Question");
temp2 = rs.getString("Answer");
pst.execute();
pst.close();
} else {
System.out.println("No data for this subject");
}
} catch (Exception a) {
System.out.println(a);
}
}
@FXML private void myButton(ActionEvent event){
chooseNextQuestion(this.flow);
this.question.setText(temp);
}
@FXML public void initialize(){
chooseNextQuestion(this.flow);
this.question.setText(temp);
}
}
Sonunda ana sınıfından fxml yükleme am yolu şudur Nasıl olabilir yerine chooseNextQuestion kodunu kullanarak tüm sahneyi başlatmak için düğmeye kullanmanın?
Sadece scene_controller ürününün basit bir örneğini ekleyin. – christosh
Olumlu tarafta olsa kod, java web ide içinde, bu yüzden daha iyi yapılandırılmış. Bu nedenle orada yayınladım. Benim düşünceme göre, kodu kontrol etmek için stackoverflow formatı kullanmaktan daha kolay. – christosh
Haklısın, her ikisi de daha iyi. Ancak bana inanın, nedenleri estetikti. – christosh