Swing日期选择滑块

2025-11-01 19:24:33

1.主程序:

package edu.test.swing;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.text.DateFormatSymbols;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.Dictionary;

import java.util.GregorianCalendar;

import java.util.Hashtable;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JSlider;

import javax.swing.UIManager;

import javax.swing.border.EmptyBorder;

import javax.swing.border.EtchedBorder;

import javax.swing.border.TitledBorder;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class DateSilder extends JFrame {

    /**

     * 

     */

    private static final long serialVersionUID = -5326757798867881120L;

    private JPanel contentPane;

    private JSlider yearSlider;

    private JSlider monthSlider;

    private JSlider daySlider;

    private JLabel dateLabel;

    private Calendar calendar = new GregorianCalendar();  //日期类

    private ChangeListener cl = new DateListener();  //变化侦听器

    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy\u5E74MM\u6708dd\u65E5");

    /**

     * Launch the application.

     */

    public static void main(String[] args) {

        try {

            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

        } catch (Throwable e) {

            e.printStackTrace();

        }

        EventQueue.invokeLater(new Runnable() {

            public void run() {

                try {

                    DateSilder frame = new DateSilder();

                    frame.setVisible(true);

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        });

    }

    /**

     * Create the frame.

     */

    public DateSilder() {

        addWindowListener(new WindowAdapter() {

            @Override

            public void windowActivated(WindowEvent e) {

                do_this_windowActivated(e);

            }

        });

        setTitle("Swing日期选定");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setBounds(100, 100, 600, 500);

        contentPane = new JPanel();

        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

        setContentPane(contentPane);

        contentPane.setLayout(new GridLayout(5, 1, 5, 5));

        JPanel panel1 = new JPanel();

        panel1.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Choose the date:", TitledBorder.LEADING, TitledBorder.TOP, null,

                new Color(59, 59, 59)));

        contentPane.add(panel1);

        dateLabel = new JLabel("");

        dateLabel.setFont(new Font("微软雅黑", Font.PLAIN, 20));

        panel1.add(dateLabel);

        JPanel panel2 = new JPanel();

        panel2.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Year", TitledBorder.LEADING, TitledBorder.TOP, null, null));

        contentPane.add(panel2);

        panel2.setLayout(new BorderLayout(0, 0));

        yearSlider = new JSlider();

        yearSlider.setSnapToTicks(true);

        yearSlider.setPaintTicks(true);

        yearSlider.setPaintLabels(true);

        yearSlider.setFont(new Font("微软雅黑", Font.PLAIN, 14));

        panel2.add(yearSlider);

        JPanel panel3 = new JPanel();

        panel3.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "month", TitledBorder.LEADING, TitledBorder.TOP, null, null));

        contentPane.add(panel3);

        panel3.setLayout(new BorderLayout(0, 0));

        monthSlider = new JSlider();

        monthSlider.setSnapToTicks(true);

        monthSlider.setPaintTicks(true);

        monthSlider.setPaintLabels(true);

        monthSlider.setFont(new Font("微软雅黑", Font.PLAIN, 14));

        panel3.add(monthSlider);

        JPanel panel4 = new JPanel();

        panel4.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "day", TitledBorder.LEADING, TitledBorder.TOP, null, null));

        contentPane.add(panel4);

        panel4.setLayout(new BorderLayout(0, 0));

        daySlider = new JSlider();

        daySlider.setSnapToTicks(true);

        daySlider.setPaintTicks(true);

        daySlider.setPaintLabels(true);

        daySlider.setFont(new Font("微软雅黑", Font.PLAIN, 14));

        panel4.add(daySlider);

        JPanel panel5 = new JPanel();

        panel5.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "确定打印", TitledBorder.LEADING, TitledBorder.TOP, null, null));

        contentPane.add(panel5);

        panel5.setLayout(new BorderLayout(0, 0));

        JButton okbutton = new JButton("控制台打印日期");

        okbutton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println(dateFormat.format(calendar.getTime()));

}

});

        panel5.add(okbutton);

    }

    protected void do_this_windowActivated(WindowEvent e) {

        yearSlider.setMaximum(2020);

        yearSlider.setMinimum(2000);

        yearSlider.setMajorTickSpacing(5);

        yearSlider.setMinorTickSpacing(1);

        yearSlider.setValue(calendar.get(Calendar.YEAR));

        Dictionary<Integer, Component> yearLabel = new Hashtable<Integer, Component>();

        yearLabel.put(2000, new JLabel("2000年"));

        yearLabel.put(2005, new JLabel("2005年"));

        yearLabel.put(2010, new JLabel("2010年"));

        yearLabel.put(2015, new JLabel("2015年"));

        yearLabel.put(2020, new JLabel("2020年"));

        yearSlider.setLabelTable(yearLabel);

        yearSlider.addChangeListener(cl);

        monthSlider.setMaximum(12);

        monthSlider.setMinimum(1);

        monthSlider.setMajorTickSpacing(1);

        monthSlider.setValue(calendar.get(Calendar.MONTH) + 1);

        String[] months = (new DateFormatSymbols()).getShortMonths();

        Dictionary<Integer, Component> monthLabel = new Hashtable<Integer, Component>(12);

        for (int i = 0; i < 12; i++) {

            monthLabel.put(i + 1, new JLabel(months[i]));

        }

        monthSlider.setLabelTable(monthLabel);

        monthSlider.addChangeListener(cl);

        daySlider.setMaximum(calendar.getMaximum(Calendar.DAY_OF_MONTH));

        daySlider.setMinimum(1);

        daySlider.setMajorTickSpacing(5);

        daySlider.setMinorTickSpacing(1);

        daySlider.setValue(calendar.get(Calendar.DATE));

        daySlider.addChangeListener(cl);        

        dateLabel.setText(dateFormat.format(new Date()));  //获取当前时间

    }

2.测试示例:

Swing日期选择滑块

3.技术要点:

Swing日期选择滑块

4..打印输出:

Swing日期选择滑块

5.JSlider 是一个让用户以图形的方式在有界区域内通过滑块来选择值的空间。

 protected void do_this_windowActivated(WindowEvent e) {

        yearSlider.setMaximum(2020);

        yearSlider.setMinimum(2000);

        yearSlider.setMajorTickSpacing(5);

        yearSlider.setMinorTickSpacing(1);

        yearSlider.setValue(calendar.get(Calendar.YEAR));

        Dictionary<Integer, Component> yearLabel = new Hashtable<Integer, Component>();

        yearLabel.put(2000, new JLabel("2000年"));

        yearLabel.put(2005, new JLabel("2005年"));

        yearLabel.put(2010, new JLabel("2010年"));

        yearLabel.put(2015, new JLabel("2015年"));

        yearLabel.put(2020, new JLabel("2020年"));

        yearSlider.setLabelTable(yearLabel);

        yearSlider.addChangeListener(cl);

        monthSlider.setMaximum(12);

        monthSlider.setMinimum(1);

        monthSlider.setMajorTickSpacing(1);

        monthSlider.setValue(calendar.get(Calendar.MONTH) + 1);

        String[] months = (new DateFormatSymbols()).getShortMonths();

        Dictionary<Integer, Component> monthLabel = new Hashtable<Integer, Component>(12);

        for (int i = 0; i < 12; i++) {

            monthLabel.put(i + 1, new JLabel(months[i]));

        }

        monthSlider.setLabelTable(monthLabel);

        monthSlider.addChangeListener(cl);

        daySlider.setMaximum(calendar.getMaximum(Calendar.DAY_OF_MONTH));

        daySlider.setMinimum(1);

        daySlider.setMajorTickSpacing(5);

        daySlider.setMinorTickSpacing(1);

        daySlider.setValue(calendar.get(Calendar.DATE));

        daySlider.addChangeListener(cl);        

        dateLabel.setText(dateFormat.format(new Date()));  //获取当前时间

    }

6.

Swing日期选择滑块

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢