Как мне запустить свой Java-код на моем JFrame в eclipse?

В настоящее время я пытаюсь создать то, что, как мне казалось, будет простой программой на Java. Я хочу создать графический интерфейс, который предложит пользователю ввести день недели и выдаст список дел, которые ему нужно выполнить в этот день. Я также хотел поставить флажки рядом с делами, чтобы можно было отмечать то, что выполнено. Я могу заставить код нормально работать в окне консоли (очевидно, за исключением флажков), но я не знаю, как заставить мой код работать в созданном мной JFrame. Я знаю, что есть также способ добавлять метки, кнопки, текстовые поля и т. д. без фактического написания кода и простого вывода их на JFrame, но я не могу заставить свой фрейм появиться без запуска кода, поэтому его нельзя редактировать.

Вот где мой код находится до сих пор:

/**
 * @author AMoore
 * @date 4/4/24
 * The purpose of this program  is to prompt a user to enter a day of the week, give them  the daily chores, and allow them to check them off. 
 * 
 */

import java.util.Scanner;
import javax.swing.JFrame;

public class ChoreChartBuilder {
    
    JFrame frame;
    
    public ChoreChartBuilder() {
        initComponenent();
    }
    
    public void initComponenent() {
        frame = new JFrame("Daily Chore Chart");
        frame.setSize(600,600);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        new ChoreChartBuilder();
        
        Scanner input = new Scanner(System.in);
        
        String mon = "Monday";
        String tue = "Tuesday";
        String wed = "Wednesday";
        String thu = "Thursday";
        String fri = "Friday";
        String sat = "Saturday";
        String sun = "Sunday";
        
        System.out.println("");
        System.out.println("Please enter the day of the week: ");
        
        String day = input.nextLine();
        
        input.close();
        
        if (day.equalsIgnoreCase(mon)) {
            System.out.println("Monday Chores: ");
        }
        else if (day.equalsIgnoreCase(tue)) {
            System.out.println("Tuesday Chores: ");
        }
        else if (day.equalsIgnoreCase(wed)) {
            System.out.println("Wednesday Chores: ");
        }
        else if (day.equalsIgnoreCase(thu)) {
            System.out.println("Thursday Chores: ");
        }
        else if (day.equalsIgnoreCase(fri)) {
            System.out.println("Friday Chores: ");
        }
        else if (day.equalsIgnoreCase(sat)) {
            System.out.println("Saturday Chores: ");
        }
        else if (day.equalsIgnoreCase(sun)) {
            System.out.println("Sunday Chores: ");
        }
        else {
            System.out.println("A day of the week was not entered. Goodbye.");
        }
    
    
    }
}

Это не очень хороший вопрос SO, потому что он слишком расплывчатый. Вероятно, вам следует сосредоточиться на конкретной задаче. Что ты хочешь сделать в первую очередь? Например. Я хочу, чтобы появилось окно с кнопкой. Когда пользователь нажимает кнопку, открывается диалоговое окно для выбора данных.

matt 04.04.2024 11:48

Я не понимаю фразу «но я не могу заставить свой фрейм появиться без запуска кода, поэтому его нельзя редактировать». часть. Если вы хотите, чтобы ваш вывод отображался в графическом интерфейсе, вам нужно добавить JLabel/JTextArea/... в JFrame и добавить свой вывод в этот JLabels вместо вызова System.out.println.

f1sh 04.04.2024 11:58

Как сказал f1sh выше, вам нужно добавить компоненты в ваш JFrame, например frame.add(component); или frame.add(new JLabel("Label text"));. Отличным местом для изучения того, как это работает, является официальное руководство Java по созданию графического интерфейса здесь: docs.oracle.com/javase/tutorial/uiswing/index.html Вы быстро увидите, как это работает, и сможете добавить свои с легкостью создавать собственные компоненты.

sorifiend 04.04.2024 12:10

Прошло некоторое время с тех пор, как я в последний раз использовал Eclipse, и я не знаю текущих предустановленных плагинов, но раньше вам нужно было установить что-то вроде этого eclipse.dev/windowbuilder для возможности перетаскивания опустить компоненты поворота. В любом случае, как утверждают другие пользователи, непонятно, о чем именно вы спрашиваете.

RubioRic 04.04.2024 12:26

@RubioRic Да, конструктор окон заставил меня застрять! Я не хотел «вручную» кодировать каждую кнопку, функцию и т. д. Спасибо!

abbey 09.04.2024 12:15

@sorifiend Спасибо! Это руководство по Java было действительно полезным!

abbey 09.04.2024 12:15

@ f1sh Извините, мне было сложно объяснить, что я имел в виду, но Рубиорик и Сорифенд смогли понять, что я пытался сказать, лол, спасибо!

abbey 09.04.2024 12:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот полный компилируемый пример с использованием графического интерфейса Java.

import javax.swing.*;
import java.util.List;
import java.awt.BorderLayout;

public class DayChooser{

    void buildGui(){
        JFrame frame = new JFrame();

        List<String> days = List.of("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" );
        JComboBox<String> box = new JComboBox<>(days.toArray(new String[0]));
        JList<String> chores = new JList<>(new DefaultListModel<>());

        box.addActionListener( evt->{
           DefaultListModel<String> model = (DefaultListModel<String>)chores.getModel();
           model.clear();

           model.addElement(box.getSelectedItem() + " chores");
           model.addElement("refactor code");
           model.addElement("write tests");
           model.addElement("Do java swing tutorial");
        });
        //add some junk for layout purposes.
        DefaultListModel<String> model = (DefaultListModel<String>)chores.getModel();
        model.addElement("chores by day");
        model.addElement("1.");
        model.addElement("2.");
        model.addElement("3.");
        model.addElement("4.");

        frame.add(box, BorderLayout.NORTH);
        frame.add(chores, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    public static void main(String[] args){

       DayChooser dc = new DayChooser();
       SwingUtilities.invokeLater( dc::buildGui );

    }

}

Поток вашей программы должен реагировать на события графического интерфейса. Например. В этом примере вы выбираете день, и он заполняет список. Вероятно, вы захотите создать класс, представляющий рутинную работу.

Или, может быть, JComboBox<DayOfWeek> box = new JComboBox<>(DayOfWeek.values());, что, естественно, интернационализируется.

g00se 04.04.2024 14:18

Другие вопросы по теме