Java JPanel只是白色/灰色

Java JPanel只是白色/灰色,java,swing,jpanel,Java,Swing,Jpanel,EDIT2:如果我尝试在第二张图中看到的复选框所在的区域中添加一个JLabel,我还会得到一个白色/灰色区域 编辑:还要注意:当我刚刚创建一个JLabel并在totalResultArea添加到panelResults之前添加它时,它也只显示一个白色/灰色区域 我创建了两个jpanelpanelResults和totalResultArea,但是第二个面板只看到一个白色/灰色区域(totalResultArea)。 首先,我将panelResults的布局设置为GridBagLayout JPa

EDIT2:如果我尝试在第二张图中看到的复选框所在的区域中添加一个JLabel,我还会得到一个白色/灰色区域

编辑:还要注意:当我刚刚创建一个JLabel并在totalResultArea添加到panelResults之前添加它时,它也只显示一个白色/灰色区域

我创建了两个jpanel
panelResults
totalResultArea
但是第二个面板只看到一个白色/灰色区域(
totalResultArea
)。

首先,我将
panelResults
的布局设置为
GridBagLayout

JPanel panelResults = new JPanel();
JPanel totalResultArea = new JPanel();
panelResults.setLayout(new GridBagLayout());
然后我将
totalResultArea
添加到
panelResults

GridBagContraints  c = new GridBagConstraints();
totalResultArea.setLayout(new BoxLayout(totalResultArea, BoxLayout.Y_AXIS));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.weightx = 2;
panelResults.add(totalResultArea, c);
在按钮的单击事件侦听器中,我将
JLabel
添加到
totalResultArea
并将
JFrame
设置为可见:

JLabel totalResultsText = new JLabel("<html><body>...</body></html>");
totalResultArea.add(totalResultsText);

// revalidate and repaint totalResultArea and panelResults
totalResultArea.revalidate();
totalResultArea.repaint();
panelResults.revalidate();
panelResults.repaint();

// add panelResults to frame
frame.getContentPane().add(panelResults, BorderLayout.NORTH);

// invalidate, repaint the frame and make it visible 
frame.invalidate();
frame.repaint();
frame.setVisible(true);
JLabel totalResultsText=新JLabel(“…”);
添加(totalResultsText);
//重新验证并重新绘制totalResultArea和panelResults
totalResultArea.revalidate();
totalResultArea.repaint();
panelResults.revalidate();
panelResults.repaint();
//将panelResults添加到框架
frame.getContentPane().add(panelResults,BorderLayout.NORTH);
//使框架无效、重新上漆并使其可见
frame.invalidate();
frame.repaint();
frame.setVisible(true);
这一切看起来都是这样的:

我希望你能复制这个。如果看不到图片


为什么我看不到JLabel中的文本,而只是一个白色/灰色区域?标签的背景色和字体颜色都是白色,所以你看不到文本

当您使用油漆并用另一种颜色填充标签时,您将看到有一个文本


因此,请检查您的样式和/或添加
totalResultsText.setForeground(Color.BLACK)

尝试
重新验证
而不是
无效
@RafałLaskowski,@MatheM,这两种方法都不起作用(同时尝试)。还要注意:当我创建一个JLabel并在
totalResultsArea
添加到
panelResults
之前添加它时,它也只显示一个白色/灰色区域。
我希望您可以复制它。
否,因为您没有发布正确的结果。我们无法猜测您发布的代码是如何使用的<代码>将主JFrame设置为可见:-不知道这意味着什么。一个应用程序应该只有一个JFrame,所以它应该已经是可见的。如果您要动态创建一个新窗口,它应该是一个JDialog,并且不需要revalidate()或其他任何东西,因为您只需要将组件添加到对话框中并使其可见。
我的代码太广泛了
——关键是简化代码以演示问题。当你这样做的时候,你会发现你的问题。有可能只是颜色有问题吗?看起来背景色和前景色都是白色的。尝试输出当前使用的颜色或将其更改为其他颜色。我猜您使用的是
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
所以操作系统提供的外观一定有问题。而且白色背景通常不是来自
JLabel
,因为它没有任何背景,所以它必须是具有白色背景的父窗格。你似乎是对的!我添加了
totalResultsText.setForeground(Color.WHITE)并显示文本!但是除此之外,我只设置了
radioOrCheckbox
radioOrCheckbox.setBackground(backgroundColor);radioOrCheckbox.setForeground(foreggroundcolor);
)。我不明白,为什么JLabel会显示为白色而不是黑色(如图中所示)。是的,我使用
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())所以白色字体应该是正确的(黑色上的白色)。JLabel怎么可能是白色对白色?