我如何隐藏或禁用 JDateChooser 上的所有星期日?

How do i hide or disable all the Sundays on a JDateChooser?

我想禁用 JDateChooser 上的所有星期日,但我不知道如何。

我早些时候在搜索时看到了一些答案,他们使用的是带有开始和结束的范围,但在我的例子中,它是 jdatechooser 中的所有星期日。这是我们学校的项目,我们不允许拖放控件,所以我声明了日期选择器并导入了 com.toedter.calendar.JDateChooser;

下面是我的 JDateChooser 代码。真心希望多多学习,谢谢

    JDateChooser date = new JDateChooser(new Date());
                        date.setBounds(120,150,150,30);
                        sapp1.add(date);

正如我在对原始 post 的评论中提到的,您可以从 JDateChooser 中获取 JCalendar 并对其进行自定义以获得所需的结果。

JDateChooser date = new JDateChooser(new Date());
date.getJCalendar().getDayChooser().addDateEvaluator(new MyDateEvaluator());

您可以设置自定义 IDateEvaluator,允许禁用所有 Sundays

@Override
public boolean isInvalid(Date date) {
    return date.getDay() == 0;

}

这是禁用所有星期日的代码:

import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JDateChooser;

import javax.swing.*;
import java.awt.*;
import java.util.Date;

public class CustomizedDateChooser {
    public static void main(String[] args) {
        JFrame f = new JFrame("ComboBox Example");

        JDateChooser date = new JDateChooser(new Date());
        date.getJCalendar().getDayChooser().addDateEvaluator(new MyDateEvaluator());
        date.setBounds(200,200,200,50);
        JPanel p = new JPanel();
        p.add(new JLabel("Choose a Date:"));
        p.add(date);
        f.add(p);
        f.setLayout(new FlowLayout());
        f.setSize(400, 500);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

    private static class MyDateEvaluator implements IDateEvaluator {

        @Override
        public boolean isSpecial(Date date) {
            return false;
        }

        @Override
        public Color getSpecialForegroundColor() {
            return null;
        }

        @Override
        public Color getSpecialBackroundColor() {
            return null;
        }

        @Override
        public String getSpecialTooltip() {
            return null;
        }

        @Override
        public boolean isInvalid(Date date) {
            return date.getDay() == 0;

        }

        @Override
        public Color getInvalidForegroundColor() {
            return null;
        }

        @Override
        public Color getInvalidBackroundColor() {
            return null;
        }

        @Override
        public String getInvalidTooltip() {
            return null;
        }
    }

}