很好的一天
我正在尝试更改框文本(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.setForeground(Color.WHITE);
我唯一能改变文本颜色的方法是禁用文本字段,让按钮处于启用状态,以便为按钮选择日期,并且不能将其写入文本框。
jdate.getDateEditor().setEnabled(false);
((JTextFieldDateEditor) jdate.getDateEditor ())
.setDisabledTextColor(Color.WHITE);
问题是,除了不允许手动写入日期外,我还丢失了所需的背景色。
如图所示
有什么解决方案吗?最好不用禁用文本框。
提前谢谢!。
1条答案
按热度按时间kadbb4591#
我提出以下解决办法。
班级
JTextFieldDateEditor
扩展jformattedtextfield。因此,前景色是一个绑定属性,这意味着您可以监听对它的更改。因此,可以添加propertychangelistener。如果新的前景颜色是黑色,只需将其更改为白色。下面是一个演示的小应用程序。
注意这个类
JTextFieldDateEditor
如果日期无效,则将其前景色更改为红色,如果日期有效,则将其前景色更改为绿色。如果您也想处理这些颜色,那么红色是java.awt.color#red,即[255,0,0],绿色是自定义颜色[0,150,0]。