Java 摆动更改Basicarrow按钮的前景色
在Java 摆动更改Basicarrow按钮的前景色,java,swing,custom-component,jspinner,uimanager,Java,Swing,Custom Component,Jspinner,Uimanager,在JSpinner类中,如何更改两个BasicArrowButton(上下)组件的前景色? 组件.setForeground()不工作。 提前感谢。 编辑 private void set_colors(JSpinner spinner){ int n = spinner.getComponentCount(); for (int i=0; i<n; i++) { Component c = spinner.getComponent(i);
JSpinner
类中,如何更改两个BasicArrowButton
(上下)组件的前景色?组件.setForeground()
不工作。提前感谢。
编辑
private void set_colors(JSpinner spinner){
int n = spinner.getComponentCount();
for (int i=0; i<n; i++)
{
Component c = spinner.getComponent(i);
System.out.println(c);
if (c instanceof BasicArrowButton)
{
c.setForeground(ds_conn_text.getForeground());//doesn't work, doesn't change arrow color
c.setBackground(ds_conn_text.getBackground());
BasicArrowButton c0=(BasicArrowButton) c;c0.setBorder(ok_button.getBorder());
}
}
}
private void set_颜色(JSpinner微调器){
int n=spinner.getComponentCount();
对于(inti=0;i这是一个关于
在不覆盖绘制方法的情况下,不可能只设置箭头的颜色。原因很简单,箭头的颜色与按钮“阴影”所用的颜色相同。因此,您可以放置线条
UIManager.getDefaults().put("controlDkShadow", Color.MAGENTA);
在main
中的某个位置,但这不仅会更改箭头颜色,而且还会更改实际上不应该更改的其他元素的颜色
仅为特定实例设置此颜色的一种丑陋/老套的方法是
private static void hackilySetColor(JSpinner spinner, Color color)
{
int n = spinner.getComponentCount();
for (int i=0; i<n; i++)
{
Component c = spinner.getComponent(i);
if (c instanceof BasicArrowButton)
{
try
{
Field field = BasicArrowButton.class.getDeclaredField("darkShadow");
field.setAccessible(true);
field.set(c, color);
field.setAccessible(false);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
private static void hackilySetColor(JSpinner微调器,彩色)
{
int n=spinner.getComponentCount();
对于(inti=0;iPERFECT,完美。谢谢亲爱的。只是根本不改变颜色==使用合适的L&F