Java Jdatechooser前台

Java Jdatechooser前台,java,swing,foreground,jdatechooser,Java,Swing,Foreground,Jdatechooser,你好 我正在尝试更改框文本(jtextfile)的颜色,它带来了内置的jdatechooser 我正在开发一个jdatechooser的白色背景完全不匹配的应用程序,我用以下代码更改了jtextfile和jdatechooser按钮的背景颜色: for( Component c : jdate.getComponents()){ ((JComponent)c).setBackground(new Color(20,25,34)); } 我现在的问题是,我需要

你好

我正在尝试更改框文本(jtextfile)的颜色,它带来了内置的jdatechooser

我正在开发一个jdatechooser的白色背景完全不匹配的应用程序,我用以下代码更改了jtextfile和jdatechooser按钮的背景颜色:

for( Component c : jdate.getComponents()){
        ((JComponent)c).setBackground(new Color(20,25,34)); 
        }

我现在的问题是,我需要的背景颜色很暗,日期文本是黑色的,目前在图像中有一个选定的日期,你只是看不到任何东西

我试图将文本改为白色,但没有成功

尝试同样的方法,但不获得解决方案

for( Component text : jdate.getComponents()){
        ((JComponent)text).setForeground(new Color(255,255,255)); 
        }
我还尝试删除我在开始时为背景添加的代码,认为这可能会阻止文本颜色的更改,但也不起作用

尝试以下其他方法来获得更改:

JTextFieldDateEditor dateChooserEditor = ((JTextFieldDateEditor)jdate.getDateEditor());
        
         dateChooserEditor.setForeground(new Color(255, 255, 255));
当然,简单的方法也不管用:

jdate.set前台(颜色.白色)

我更改文本颜色的唯一方法是禁用文本字段,并使按钮处于启用状态,以选择按钮的日期,而不能将其写入文本框中

jdate.getDateEditor().setEnabled(false);
         
         ((JTextFieldDateEditor) jdate.getDateEditor ())
            .setDisabledTextColor(Color.WHITE);
问题是,除了不允许手动写入日期外,我还丢失了所需的背景颜色

有没有解决方案?最好不用禁用文本框

jdate.getDateEditor().setEnabled(false);
         
         ((JTextFieldDateEditor) jdate.getDateEditor ())
            .setDisabledTextColor(Color.WHITE);

提前谢谢

我提出以下解决方案

JTextFieldDateEditor
扩展。因此,前景色是一个绑定属性,这意味着您可以监听对它的更改。因此,您可以添加一个。如果新的前景色为黑色,只需将其更改为白色即可

下面是一个演示的小应用程序

导入com.toedter.calendar.IDateEditor;
导入com.toedter.calendar.JDateChooser;
导入com.toedter.calendar.JTextFieldDateEditor;
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.WindowConstants;
公共类JdcTest0实现可运行{
私有JFrame;
私有JDateChooser jdate;
@凌驾
公开募捐{
showGui();
}
私有JPanel createDateChooser(){
JPanel面板=新的JPanel();
jdate=新的JDateChooser();
IDateEditor dateEditor=jdate.getDateEditor();
if(JTextFieldDateEditor的dateEditor实例){
JTextFieldDateEditor txtFld=(JTextFieldDateEditor)日期编辑器;
txtFld.立根背景(颜色:黑色);
txtFld.addPropertyChangeListener(“前台”,事件->{
if(Color.BLACK.equals(event.getNewValue())){
txtFld.setForeground(颜色:白色);
}
});
}
panel.add(jdate);
返回面板;
}
私有void showGui(){
框架=新的JFrame(“JDC”);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(createDateChooser(),BorderLayout.PAGE_START);
frame.pack();
frame.setLocationByPlatform(真);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
invokeLater(新的JdcTest0());
}
}

请注意,如果日期无效,类JTextFieldDateEditor将其前景色更改为红色,如果日期有效,则将其前景色更改为绿色。如果您还想处理这些颜色,则红色为[255,0,0],绿色为自定义颜色[0,150,0]。

如果您指的是
JDateChooser
,那么请查看类
JTextFieldDateEditor
,该类本身会动态更改前景颜色。我欠你一个好人一杯啤酒或一杯好咖啡,我不太清楚如何修改有效日期和错误日期的红色和绿色,你能向我解释这一部分吗?@ramej你希望无效日期的前景也为白色吗?你也希望有效日期的前景是白色的吗?目前无论日期是否正确,字母都是空白的,这对我来说很好,我只想在日期不正确时更改颜色。是否可以在jdatechooser的文本框中创建按键事件???