如何在 Eclipse 中的 JFrame 上运行 Java 代码?

问题描述 投票:0回答:1

我目前正在尝试创建一个我认为简单的 Java 程序。我想创建一个 GUI,提示用户输入星期几,并列出他们当天必须做的家务。我还想要家务旁边的复选框,以便能够标记已完成的工作。我可以让代码在控制台窗口中正常运行(显然减去复选框),但我不知道如何使我的代码在我创建的 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.");
        }
    
    
    }
}
java eclipse jframe
1个回答
0
投票

这是一个使用 java GUI 的完整可编译示例。

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 );

    }

}

您的程序流程应该对 GUI 事件做出反应。例如。在此示例中,您选择一天并填充一个列表。您可能想要创建一个类来代表一项杂务。

© www.soinside.com 2019 - 2024. All rights reserved.