当前位置: 首页 > 知识库问答 >
问题:

根据用户输入计算星期几

谷梁迪
2023-03-14

我很难弄清楚如何让我的程序根据用户输入的月、日、年来计算星期几。如下图所示。关于如何使它与JTextField和JComboBoxes连接,我没有任何线索。我真的很感谢任何人帮我做这件事。我知道我应该用:

Calendar xmas=new GregorianCalendar(1998,Calendar.12,25);int dayOfWeek=xmas.get(calendar.day_of_week);//6=星期五

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextField;
import javax.swing.JTextArea;



public class DayOfWeek extends JFrame 
{

    private JPanel contentPane;
    private JTextField yearField;
    private JLabel dayOfW;

    /**
     * Launch the application.
     */
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                try
                {
                    DayOfWeek frame = new DayOfWeek();
                    frame.setVisible(true);
                } catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public DayOfWeek()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 230);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel monthL = new JLabel("Month:");
        monthL.setBounds(10, 11, 46, 14);
        contentPane.add(monthL);

        JComboBox monthBox = new JComboBox();
        monthBox.setModel(new DefaultComboBoxModel(new String[] {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}));
        monthBox.setBounds(53, 8, 109, 20);
        contentPane.add(monthBox);

        JLabel dayL = new JLabel("Day: ");
        dayL.setBounds(172, 11, 31, 14);
        contentPane.add(dayL);

        JComboBox dayBox = new JComboBox();
        dayBox.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"}));
        dayBox.setBounds(203, 8, 53, 20);
        contentPane.add(dayBox);

        JLabel yearL = new JLabel("Year: ");
        yearL.setBounds(266, 11, 37, 14);
        contentPane.add(yearL);

        yearField = new JTextField();
        yearField.setBounds(301, 8, 86, 20);
        contentPane.add(yearField);
        yearField.setColumns(10);



        JLabel dayOfW;
        dayOfW = new JLabel("The day of the week is");
        dayOfW.setBounds(10, 153, 126, 14);
        contentPane.add(dayOfW);

        JTextArea textArea = new JTextArea();
        textArea.setBounds(172, 148, 160, 19);
        contentPane.add(textArea);

        Calendar xmas = new GregorianCalendar(1998, Calendar.DECEMBER, 25);
        int dayOfWeek = xmas.get(Calendar.DAY_OF_WEEK); // 6=Friday




    yearField.addActionListener(new ActionListener() 
    {

        @Override
        public void actionPerformed(ActionEvent e)
        {

        }
    });
}
}

非常感谢

共有1个答案

司马彬
2023-03-14

你有很多选择...

在每个字段上使用FocusListener,当调用FocusLoster时,验证每个字段的状态,以确定您是否有足够的信息来执行所需的计算...但这没有考虑到如果用户只是在最后一个字段上按下Enter可能发生的情况...

在每个字段上使用ActionListener来检测用户何时按下Enter(或单个字段被操作),并验证每个字段的状态,以确定您是否有足够的信息来执行所需的计算,但这并不考虑用户未在字段上按下Enter的情况

同时使用FocusListenerActionListener,这两种方法只需调用一个方法来验证每个字段的状态,以确定您是否有足够的信息来执行所需的计算

有一个JButton用户必须按下该按钮才能执行计算。激活后,它将验证每个字段的状态,以确定您是否有足够的信息来执行所需的计算

看一看:

  • 如何编写操作侦听器
  • 如何编写焦点侦听器

您甚至可以使用InputVerifier,有关更多详细信息,请参阅验证输入

 类似资料:
  • 本文向大家介绍C#根据年月日计算星期几的函数,包括了C#根据年月日计算星期几的函数的使用技巧和注意事项,需要的朋友参考一下 DateTime.Now.ToString("dddd",new System.Globalization.CultureInfo("zh-cn")); 今天在网上看见一些关于 C#实现的根据年月日计算星期几 的介绍:  算法如下: 基姆拉尔森计算公式 W= (d+2*m+3

  • 我有一个小谜语,我想解开它困扰着我,这个谜语是: 我不确定解决这个问题的假设是什么? 谢谢,请帮帮我。

  • 问题内容: 我如何知道JavaScript的周数和年份来计算日期?对于第20周和2013年以获得5/16/2013,我正在尝试这样做: 问题答案: function getDateOfWeek(w, y) { var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week 这使用简单的周定义,即2013年的第20周是5月14日

  • 我想让程序根据我的扫描仪输入从ArrayList中进行选择。比如,我写早餐和甜食,它必须随机列出早餐甜食,并打印随机索引。 我还在学习Java,我只是在玩,并试图编码小项目来训练它。 下面是我已经写过的课程: 我是否可以将列表存储在变量中,可能是这样的: 我知道很难理解我,但英语不是我的主要语言,希望它能被理解。

  • 问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,

  • 问题内容: 给定一个星期数,例如,您如何计算从星期一开始的那一周中的天数? 第40周的rfc-3339输出示例: 问题答案: PHP 下面的帖子是因为我是个白痴,没有正确阅读问题,但是会获得从星期一开始的一周中的日期,给出的是日期,而不是星期数。 在PHP中 ,改编自PHP日期手册页上的这篇文章 来自的输出: