java前端界面展示一周时间段选择

时间: 2023-07-05 12:28:39 浏览: 54
好的,下面是一个简单的 Java 前端界面展示一周时间段选择的示例代码: ```java import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; public class WeekdayPicker extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private static final String[] WEEKDAYS = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; private static final String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; private JButton[] dayButtons; private JLabel monthLabel; private JLabel yearLabel; private Calendar currentCalendar; public WeekdayPicker() { super("WeekdayPicker"); currentCalendar = Calendar.getInstance(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(new Dimension(400, 300)); setLocationRelativeTo(null); setResizable(false); setLayout(new BorderLayout()); initUI(); setVisible(true); } private void initUI() { JPanel topPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); JButton prevYearButton = new JButton("<<"); prevYearButton.setActionCommand("prevYear"); prevYearButton.addActionListener(this); topPanel.add(prevYearButton); JButton prevMonthButton = new JButton("<"); prevMonthButton.setActionCommand("prevMonth"); prevMonthButton.addActionListener(this); topPanel.add(prevMonthButton); monthLabel = new JLabel(getMonthString(currentCalendar.get(Calendar.MONTH)), SwingConstants.CENTER); monthLabel.setFont(new Font("Arial", Font.BOLD, 18)); monthLabel.setPreferredSize(new Dimension(120, 30)); topPanel.add(monthLabel); yearLabel = new JLabel(String.valueOf(currentCalendar.get(Calendar.YEAR)), SwingConstants.CENTER); yearLabel.setFont(new Font("Arial", Font.BOLD, 18)); yearLabel.setPreferredSize(new Dimension(60, 30)); topPanel.add(yearLabel); JButton nextMonthButton = new JButton(">"); nextMonthButton.setActionCommand("nextMonth"); nextMonthButton.addActionListener(this); topPanel.add(nextMonthButton); JButton nextYearButton = new JButton(">>"); nextYearButton.setActionCommand("nextYear"); nextYearButton.addActionListener(this); topPanel.add(nextYearButton); add(topPanel, BorderLayout.NORTH); JPanel centerPanel = new JPanel(new GridLayout(7, 7)); dayButtons = new JButton[49]; for (int i = 0; i < 7; i++) { centerPanel.add(new JLabel(WEEKDAYS[i], SwingConstants.CENTER)); } for (int i = 0; i < 49; i++) { JButton button = new JButton(); button.setPreferredSize(new Dimension(50, 50)); button.setBorder(BorderFactory.createEmptyBorder()); button.setFocusPainted(false); button.addActionListener(this); dayButtons[i] = button; centerPanel.add(button); } updateDayButtons(); add(centerPanel, BorderLayout.CENTER); JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); JButton cancelButton = new JButton("Cancel"); cancelButton.addActionListener(this); bottomPanel.add(cancelButton); JButton okButton = new JButton("OK"); okButton.addActionListener(this); bottomPanel.add(okButton); add(bottomPanel, BorderLayout.SOUTH); } private void updateDayButtons() { int year = currentCalendar.get(Calendar.YEAR); int month = currentCalendar.get(Calendar.MONTH); int dayOfWeek = currentCalendar.get(Calendar.DAY_OF_WEEK); int firstDayOfWeek = currentCalendar.getFirstDayOfWeek(); currentCalendar.set(Calendar.DAY_OF_MONTH, 1); int daysInMonth = currentCalendar.getActualMaximum(Calendar.DAY_OF_MONTH); int day = 1; int i = 0; for (; i < dayOfWeek - firstDayOfWeek; i++) { dayButtons[i].setText(""); dayButtons[i].setEnabled(false); dayButtons[i].setBackground(new Color(240, 240, 240)); } for (; i < dayOfWeek - firstDayOfWeek + daysInMonth; i++) { dayButtons[i].setText(String.valueOf(day)); dayButtons[i].setEnabled(true); dayButtons[i].setBackground(new Color(255, 255, 255)); day++; } for (; i < dayButtons.length; i++) { dayButtons[i].setText(""); dayButtons[i].setEnabled(false); dayButtons[i].setBackground(new Color(240, 240, 240)); } monthLabel.setText(getMonthString(month)); yearLabel.setText(String.valueOf(year)); } private String getMonthString(int month) { return MONTHS[month]; } @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); switch (command) { case "prevYear": currentCalendar.add(Calendar.YEAR, -1); break; case "prevMonth": currentCalendar.add(Calendar.MONTH, -1); break; case "nextMonth": currentCalendar.add(Calendar.MONTH, 1); break; case "nextYear": currentCalendar.add(Calendar.YEAR, 1); break; case "Cancel": dispose(); break; case "OK": SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); StringBuilder builder = new StringBuilder(); builder.append(sdf.format(currentCalendar.getTime())).append(" - "); currentCalendar.add(Calendar.DAY_OF_MONTH, 6); builder.append(sdf.format(currentCalendar.getTime())); System.out.println(builder.toString()); dispose(); break; default: break; } updateDayButtons(); } public static void main(String[] args) { new WeekdayPicker(); } } ``` 该示例代码实现了一个简单的一周时间段选择的功能,具体如下: 1. 界面由上、中、下三个部分组成,分别是顶部的年月选择、中间的日期选择和底部的取消和确定按钮。 2. 日期选择部分使用 GridLayout 布局方式,排列为 7 行 7 列的网格,第一行为星期几,其余行为日期。使用 JButton 实现每个日期的按钮。 3. 使用 Calendar 类获取当前年月和计算每个月的日期,并且根据日期的星期几确定在网格中的位置,更新每个日期按钮的显示文本、是否可用和背景色。 4. 点击年月选择按钮或日期按钮,更新当前年月或者选择日期,并且更新日期选择部分的显示。 5. 点击确定按钮,将选择的时间段输出到控制台,并且关闭界面。 希望这个示例代码能够对您有所帮助。

最新推荐

recommend-type

基于J2EE框架的个人博客系统项目毕业设计论...

即应用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)...
recommend-type

node-v6.11.1-linux-armv7l.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告.docx

2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告
recommend-type

node-v4.8.6-linux-x86.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

dust_sensor_code_x2.zip

dust_sensor_code_x2.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。