我试图创建一个包含大量JPanel和文本部分的JFrame,所有这些都有默认颜色(面板背景为白色,文本为黑色)。我想允许用户在运行时动态地更改这些内容,因此我实现了一个JColorChooser对话框,在这里我可以单击一个按钮,显示对话框,从那里我可以保存颜色。
我的默认颜色在实例变量中设置,如下所示:
private Color panelColor;
private Color textColor;
要设置面板的背景色,我使用:
JPanel samplePanel = new JPanel();
samplePanel.setBackground(panelColor); //panelColor has already been instantiated
这很好,使面板变白。但是,当我尝试使用JColorChooser加载新的颜色以供使用时,面板不会改变。选择颜色后我使用的代码是:
if(newColor != null)
{
panelColor = newColor;
myFrame.repaint();
}
我所有的组件都在一个JFrame中,我认为在JFrame上调用repaint()会反过来调用paintChildren(),并级联到最低级别。
我相信我的问题在于我对Java中如何处理对象的理解。我知道对象是按引用传递的,但我也假设当我设置组件的背景颜色时,这是通过按引用传递场景实现的,对此我开始怀疑。当我调用setbackground()时,我传递的颜色参数最终会作为通过值传递的副本吗?
如果我的直觉是正确的,这是否意味着我应该编写一个方法,让所有需要更改其背景的组件,并调用每个组件的setBackground(),将颜色变量与新值传递进来?
干杯
由于在使用setbackground()时,颜色对象是按值传递给组件的,因此,正如Markspace建议的那样,每个组件都将调用其单独的方法。
使用Dan O在这个线程中提供的代码的修改版本:迭代Jframe中的所有对象,我想出了一个解决方案,允许修改JFrame中的每个JPanel(或者任何容器)。这是一个递归解决方案,所以任何嵌套的容器实例也将迭代它们的子实例。
public void setPanelColor(Container parent)
{
for(Component c : parent.getComponents())
{
if(c instanceof Container)
{
if(c instanceof JPanel)
{
c.setBackground(panelColor);
}
setPanelColor((Container)c);
}
}
}
由于我使用一个实例变量(panelColor)来保存颜色,我可以从方法中引用它,但您可以轻松地将其作为参数传入,并用panelColor替换传入的颜色变量的名称。
我在设计JScrollPane的样式时遇到问题。我只想能够更改拇指和背景的颜色(同时删除增加/减少按钮)。到目前为止,我尝试了以下方法: 而且 有了上面所有的代码,我得到了一个白色背景的暗拇指。有趣的是,如果我删除setUI函数,我会得到一个默认的拇指,背景变暗... 有什么想法吗? 谢啦 解决****** 上面的configureScrollBarColors函数可以通过以下方式使用: 把拇指的
我有一个带有半径和笔划的CardView,但当我以编程方式更改CardView背景时,半径和笔划将丢失,我希望新颜色保留在笔划内。 这是我的cardview xml 这里是我换颜色的地方:
我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景 我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗? 谢谢
问题内容: 有什么方法可以更改RibbonApplicationMenuEntryPrimary(Flamingo)的背景颜色吗? 我看了看它的javadoc,但找不到方法。 问题答案: 1)请注意,我已检查API;从开始,有很多导入和扩展,它们来自许多不同的方法(这里是我尝试覆盖MetalButtonUI的尝试)。 2)也许更改内置颜色主题会很容易,但是我不建议这样做。 3)我不是Flaming
这是我的java文本,看起来有点出乎意料,但是我想改变按钮的背景颜色,这取决于答案是正确的还是错误的 属于“voortgang-button”的css } 然而;现在的问题是我做错了什么?我是一个刚开始的JavaScript程序员,也是荷兰人,所以请多包涵;).
我正在使用浮动操作按钮,我想更改背景颜色。 这是我的密码 下面是我用来尝试实现这一点的代码: 我也得到我的FAB的角落,如图所示。我应该如何消除那些角落的阴影?