java要求:编写具有图形用户界面(GUI)的日历组件显示日期和时间并进行适当的功能扩充。主要功能:
1、显示当月日历,当前日期、当前时间;2、可查询任意月以及任意年的日历;3、正常运行和退出程序。
4、每日具有记账功能,需要至少包含1)记账id;2)记账类型;2)支出费用;3)关键字(关键字写为一行,关键字数量不限,使用分号分割<需查阅使用>)
5、能够通过关键字查询某一种类型的记账记录。6、对当月记账类型的汇总;对特定关键字的记账汇总。
除Swing/AWT以外,可能是用到的类:日期类;String/StringBuffer;容器类;Math类,IO相关类。(要自己写,不能抄袭)
具有每日记账功能的简易日历程序
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答 默认 最新
小小y979 2023-05-28 13:01关注引用部分chatgpt如下回答:
以下是一份 Java GUI 日历组件的代码示例,实现了上述5个主要功能:import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableModel; public class CalendarGUI extends JFrame { private static final long serialVersionUID = 1L; private JLabel labelMonth, labelYear, labelDate, labelTime, labelAccount, labelKey; private JButton btnPrev, btnNext, btnSearch; private JTable tableAccounts, tableSummary; private JTextField txtYear, txtMonth, txtKey; private JCheckBox chkIncome, chkExpense; private JPanel paneCalendar, paneAccount, paneSummary; private Calendar cal; public CalendarGUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("日历组件"); // 设置日历面板 createCalendarPane(); // 设置记账面板 createAccountPane(); // 设置汇总面板 createSummaryPane(); setSize(800, 500); setLocationRelativeTo(null); setVisible(true); } // 创建日历面板 private void createCalendarPane() { // 创建面板和布局 paneCalendar = new JPanel(); paneCalendar.setLayout(new BorderLayout()); // 创建日历部分和按钮部分 JPanel paneCalendarTop = new JPanel(); paneCalendarTop.setLayout(new GridLayout(1, 7)); JPanel paneCalendarBottom = new JPanel(); paneCalendarBottom.setLayout(new FlowLayout()); // 创建上一个月按钮 btnPrev = new JButton("上一月"); btnPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cal.add(Calendar.MONTH, -1); updateCalendar(); } }); // 创建下一个月按钮 btnNext = new JButton("下一月"); btnNext.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cal.add(Calendar.MONTH, 1); updateCalendar(); } }); // 创建查询区域,包括输入框和查询按钮 JPanel paneSearch = new JPanel(new FlowLayout()); txtYear = new JTextField(4); txtMonth = new JTextField(2); paneSearch.add(new JLabel("查询年份: ")); paneSearch.add(txtYear); paneSearch.add(new JLabel("查询月份(01-12): ")); paneSearch.add(txtMonth); btnSearch = new JButton("查询"); btnSearch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { int year = Integer.parseInt(txtYear.getText()); int month = Integer.parseInt(txtMonth.getText()) - 1; cal.set(year, month, 1); updateCalendar(); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(paneCalendar, "请输入正确的年份和月份。"); } } }); paneSearch.add(btnSearch); // 添加日历面板顶部的组件 labelMonth = new JLabel("", SwingConstants.CENTER); labelYear = new JLabel("", SwingConstants.CENTER); paneCalendarTop.add(labelMonth); paneCalendarTop.add(labelYear); paneCalendarTop.add(Box.createHorizontalGlue()); paneCalendarTop.add(paneSearch); paneCalendarTop.add(Box.createHorizontalGlue()); paneCalendarTop.add(btnPrev); paneCalendarTop.add(btnNext); // 创建日历部分的网格布局和表格模型 DefaultTableModel modelCalendar = new DefaultTableModel() { public boolean isCellEditable(int rowIndex, int mColIndex) { return false; } }; JTable tableCalendar = new JTable(modelCalendar); String[] headers = { "日", "一", "二", "三", "四", "五", "六" }; modelCalendar.setColumnIdentifiers(headers); tableCalendar.setRowHeight(35); // 添加日历部分的组件 paneCalendar.add(paneCalendarTop, BorderLayout.NORTH); paneCalendar.add(new JScrollPane(tableCalendar), BorderLayout.CENTER); add(paneCalendar, BorderLayout.WEST); // 初始化 Calendar 和显示当前日期、时间 cal = Calendar.getInstance(); ```java解决 无用评论 打赏 举报