Итак, уважаемые обитатели сего ресурса, пишу элементарный IQ тест, но уже второй раз натыкаюсь на проблемы, полное описание этой выглядит как-то так. Есть два класса, интерфейс и класс с вопросами к тесту, интерфейс работает исправно. В классе с вопросами есть несколько функций, функции с наполнением (текст вопроса, изображения), функция вызывающая тот или иной вопрос в зависимости от переменной
int qx;
и две функции которые отвечают за переход между вопросами, они меняют значение той самой переменной и следом перевыхывают функцию выбора вопроса, дабы изменить наполнение интерфейса. Функции работают исправно, переменная qx исправно меняется что подтверждает
System.out.println("nextQ"+qx);
и подобные ей, функции смены вопроса вызывают повторно функцию
public void chooseQuest();
но, наполнение интерфейса не желает меняться, хотя функция с необходимым наполнением вызвана, подскажите что не так.
Вопросы:
public class Question {
public String question;
public String img;
public boolean obrazek;
public boolean tlacitka;
public boolean textBox;
private int qx = 1;
public void nextQuestion(){
if(qx >= 1 & qx < 40){
qx = qx + 1;
}else if(qx == 40){
qx = 1;
}
System.out.println("nextQ"+qx);
chooseQuest();
}
public void prevQuestion(){
if(qx <= 40 & qx > 1){
qx = qx - 1;
}else if(qx == 1){
qx = 40;
}
System.out.println("prevQ"+qx);
chooseQuest();
}
/**
* Funkce ktera vyvolava zvolenou otazku
*/
public void chooseQuest(){
if(qx == 1){
Q1();
}else if(qx == 2){
Q2();
}
System.out.println("chQ"+qx);
}
/**
* Funkce ktera obsahuje prvky otazky 1(jedna)
*/
public void Q1(){
question = "Tady bude otazka1";
img = "img\\TASK1.png";
obrazek = true;
tlacitka = true;
textBox = false;
qx = 1;
System.out.println("Otazka 1");
}
public void Q2(){
question = "Tady bude otazka2";
img = "img\\TASK9.png";
obrazek = true;
tlacitka = true;
textBox = false;
qx = 2;
System.out.println("Otazka 2");
}
}
Интерфейс:
public UserInterface(){
setBounds(100,35,500,680);
setResizable(false);
setTitle("IQ test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setLayout(null);
quest = new Question();
JButton prevQ = new JButton("<<<");
prevQ.setBounds(120, 615, 60, 20);
prevQ.addActionListener(new pQuestButtonEvent());
panel.add(prevQ);
JButton nextQ = new JButton(">>>");
nextQ.setBounds(320, 615, 60, 20);
nextQ.addActionListener(new nQuestButtonEvent());
panel.add(nextQ);
JButton chButton = new JButton("Check Answer");
chButton.setBounds(190, 610, 120, 30);
chButton.addActionListener(new chButtonEvent());
panel.add(chButton);
quest.chooseQuest();
JTextField input = new JTextField("Answer here...");
input.setBounds(300, 550, 140, 20);
input.setVisible(quest.textBox);
panel.add(input);
JLabel questionT = new JLabel(quest.question);
questionT.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, true));
questionT.setBounds(10, 10, 470, 70);
panel.add(questionT);
ButtonGroup group = new ButtonGroup();
JRadioButton radio1 = new JRadioButton("Select 1");
JRadioButton radio2 = new JRadioButton("Select 2");
JRadioButton radio3 = new JRadioButton("Select 3");
JRadioButton radio4 = new JRadioButton("Select 4");
JRadioButton radio5 = new JRadioButton("Select 5");
JRadioButton radio6 = new JRadioButton("Select 6");
group.add(radio1);
group.add(radio2);
group.add(radio3);
group.add(radio4);
group.add(radio5);
group.add(radio6);
radioPanel = new JPanel(new GridLayout(0, 2));
radioPanel.add(radio1);
radioPanel.add(radio2);
radioPanel.add(radio3);
radioPanel.add(radio4);
radioPanel.add(radio5);
radioPanel.add(radio6);
radioPanel.setBounds(250, 80, 230, 450);
radioPanel.setVisible(quest.tlacitka);
panel.add(radioPanel);
img = new JLabel();
img.setBounds(10, 80, 230, 520);
img.setIcon(new javax.swing.ImageIcon(quest.img));
img.setVisible(quest.obrazek);
panel.add(img);
getContentPane().add(panel);
}
class nQuestButtonEvent implements ActionListener{
public void actionPerformed(ActionEvent e){
quest.nextQuestion();
}
}
class pQuestButtonEvent implements ActionListener{
public void actionPerformed(ActionEvent e){
quest.prevQuestion();
}
}
}