我目前正在尝试创建一个我认为简单的 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 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 事件做出反应。例如。在此示例中,您选择一天并填充一个列表。您可能想要创建一个类来代表一项杂务。