Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2022, 03:27   #1
noob-saibot
 
Регистрация: 05.05.2022
Сообщений: 9
По умолчанию Как сделать так, чтобы вопрос квиза появлялся до клика на кнопку Ок?

Всем привет!

Пытаюсь сделать квиз по математике.

Код:
public void checkfield() {
    String yourText = field.getText();
    String message = "";
    String messageTwo = "";
    try {

        String res = yourText;
        message = "Как называется таблица, где перемножаются числа?";
        if (res.equals("таблица умножения"))
            messageTwo = "Правильно!";
        else
            messageTwo = "Неправильно!";
    } catch (Exception e) {
        messageTwo = "и нажмите на кнопку";
    } finally {

        field.requestFocus();
        field.selectAll();

        lblOutput.setText(message);
        lblOutputTwo.setText(messageTwo);

    }
}
Как сделать так, чтобы вопрос квиза появлялся до клика на кнопку Ок?

Код:
lblOutput.setText(message);
в разные части кода, но не работает как надо.

Например, не работает при таком варианте:

Код:
String message = "";
message = "Как называется таблица, где перемножаются числа?";
lblOutput.setText(message);
        
public void checkfield() {
    String yourText = field.getText();        
    String messageTwo = "";
Вот весь код https://pastebin.com/ydgc5fek

Последний раз редактировалось noob-saibot; 28.11.2022 в 03:30.
noob-saibot вне форума Ответить с цитированием
Старый 28.11.2022, 10:18   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 491
По умолчанию

Не тот ли ты самый космический нуб?
У тебя сразу неправильный подход к коду.
Вопросы и правильные ответы (да и другая информация типа заголовков и категорий) должны храниться отдельно от кода, так называемого "движка". Т.е. код вообще никак не должен меняться, если у тебя возникнет желание вместо квиза по математике, сделать квиз по биологии.
Valick вне форума Ответить с цитированием
Старый 29.11.2022, 14:17   #3
noob-saibot
 
Регистрация: 05.05.2022
Сообщений: 9
По умолчанию

Valick, это школьный проект, братан. Просто подскажи. Я навряд ли стану программистом)
noob-saibot вне форума Ответить с цитированием
Старый 02.12.2022, 16:06   #4
noob-saibot
 
Регистрация: 05.05.2022
Сообщений: 9
По умолчанию

Добавил загрузку вопросов с файла.

Но не совсем понимаю, как сделать так, чтобы после правильного ответа появлялся следующий вопрос.

Подскажите пож-та

Код:
package com.company;

import java.awt.*; // для GUI и программ на основе окон
import java.awt.event.ActionEvent; // события
import javax.swing.*; // окна, панели, кнопки, текст
import javax.swing.SwingConstants; // выравнивание компонентов на экране
import java.awt.event.ActionListener; // обработчик событий
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class quizTest extends javax.swing.JFrame {
    private JTextField field; // поле для ввода
    private JLabel lblOutput; // текст или иконка
    private JLabel lblOutputTwo; // текст или иконка
    private JLabel label1; // текст или иконка
    private ImageIcon image1; // картинка в виде иконки

    public void checkfield() {
        String yourText = field.getText(); // с помощью метода getText() берем текст, который ввели в поле
        String message = "";
        try {

            String res = yourText;
            if (res.equals("таблица умножения")) // если значение переменной res соответствует тексту "Таблица умножения"
                message = "Правильно!";
            else
                message = "Неправильно!";
        } catch (Exception e) {
            message = "и нажмите на эту кнопку";
        } finally {

            field.requestFocus(); // установить фокус на нужном компоненте
            field.selectAll(); // выделение текста в поле JTextField

            lblOutputTwo.setText(message);

        }
    }

    public quizTest() throws FileNotFoundException {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // выход из программы при закрытии окна
        setTitle("Квиз \"Математика\""); // установить название окна
        setLayout(new FlowLayout()); // Менеджер последовательного расположение FlowLayout размещает компоненты в контейнере слева направо, сверху вниз

        JLabel lblTitle = new JLabel("Квиз \"Математика\""); // текст в окне
        lblTitle.setFont(new Font("Tahoma", Font.BOLD, 15)); // характеристики шрифта
        lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
        lblTitle.setBounds(10, 37, 414, 24);
        getContentPane().add(lblTitle);

        image1 = new ImageIcon(getClass().getResource("images/1.png")); // загрузка картинки из файла

        label1 = new JLabel(image1); // добпавление картинки в JLabel
        add(label1); // добавить JLabel в панель
        label1.setHorizontalAlignment(SwingConstants.CENTER); // выравнивание по центру

        String separator = File.separator;
        String path = separator + "Users" + separator + "powha" + separator + "Documents" + separator + "Programming" + separator + "Java" + separator + "Проекты" + separator + "quizTest" + separator + "src" + separator + "com" + separator + "company" + separator + "questions.txt";
        File file = new File(path);
        Scanner scanner = new Scanner(file);
        String line = scanner.nextLine();
        System.out.println(line);
        scanner.close();

        JLabel subject = new JLabel(line); // текст описания предмета
        subject.setHorizontalAlignment(SwingConstants.CENTER); // выравнивание
        subject.setBounds(10, 98, 272, 14); // задание координат и размеров текста
        getContentPane().add(subject); // добавление JLabel в панель

        field = new JTextField(); // создание поля для ввода
        field.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                checkfield();
            }
        });
        field.setBounds(92, 95, 43, 20);
        getContentPane().add(field);
        field.setColumns(10);





        JButton btnClick = new JButton("Ok");
        btnClick.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                checkfield();
            }
        });

        btnClick.setBounds(172, 149, 89, 23);
        getContentPane().add(btnClick);

        lblOutput = new JLabel("и нажмите на кнопку");
        lblOutput.setHorizontalAlignment(SwingConstants.CENTER);
        lblOutput.setBounds(10, 100, 414, 14);
        getContentPane().add(lblOutput);

        lblOutputTwo = new JLabel();
        lblOutputTwo.setHorizontalAlignment(SwingConstants.CENTER);
        lblOutputTwo.setBounds(10, 100, 414, 14);
        getContentPane().add(lblOutputTwo);
    }

    public static void main(String args[]) throws FileNotFoundException {
        quizTest gui = new quizTest();
        gui.setVisible(true);
        gui.setSize(new Dimension(1092,830));
        gui.setResizable(false);

    }
}
Содержимое файла questions.txt:

Как называется таблица, в которой перемножаются числа?
Вопрос 2
Вопрос 3
noob-saibot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтобы при нажатии на кнопку менялось какое либо свойство объекта? kotbezusov HTML и CSS 1 28.10.2016 22:28
как сделать чтобы при нажатии на кнопку на форме появлялся текст из файла belkeandrey Помощь студентам 4 23.02.2013 16:26
Как сделать чтобы при нажатии на кнопку точки двигались? pastuhdima Помощь студентам 0 13.11.2011 00:11
сделать, чтобы текст введенный в Edit появлялся в Textarea guffer HTML и CSS 1 08.07.2009 23:21
Как сделать так,чтобы при нажатии на кнопку выполнялась процедура? Bolgarin Общие вопросы Delphi 10 03.06.2008 23:48