我使用的是Nimbus外观,它的颜色只有3处变化:
UIManager.put("nimbusSelection", new Color(164,164,164));
UIManager.put("nimbusSelectionBackground", new Color(214,217,223));
UIManager.put("nimbusSelectedText", Color.BLACK);我的FileChooser看起来像这样:

因此,所选文件的名称显示为白色且看起来不好,在组合框中选择的文件类型也会出现这种情况。我想将其更改为黑色,但nimbusSelectedText已经是黑色的,并且不起作用。
我还查看了http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html#primary上的Nimbus默认指南,我在FileChooser或Combobox中看不到可以修复此问题的参数。
需要帮助确定必要的参数吗?谢谢
发布于 2011-07-20 16:16:06
好吧,有一种方法可以做到这一点。您可以从JFileChooser获取JList并对其进行修改:
public boolean getJList(Container c)
{
Component[] cmps = c.getComponents();
for (Component cmp : cmps)
{
if (cmp instanceof JList)
{
modifyJList((JList)cmp);
return true;
}
if (cmp instanceof Container)
{
if(getJList((Container) cmp)) return true;
}
}
return false;
}
private void modifyJList(JList list)
{
// Here you can modify your JList
}要使用它,只需调用getJList()
JFileChooser chooser = new JFileChooser();
getJList(chooser);发布于 2011-07-20 16:20:27
JFileChooser是复合JComponent,你可以提取JButtons,JToggleButtons和JScrollPane with JViewPort that contains JList,请下载Darryl的Swing Utils,阅读说明,然后运行(Darryl的)代码,结果是选择JList或JTable (我投票赞成)
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
import javax.swing.plaf.metal.MetalButtonUI;
public class CrazyFileChooser {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CrazyFileChooser().makeUI();
}
});
}
public void makeUI() {
JFileChooser chooser = new JFileChooser();
for (AbstractButton button : SwingUtils.getDescendantsOfType(AbstractButton.class, chooser)) {
button.setUI(new XORButtonUI());
}
for (JList list : SwingUtils.getDescendantsOfType(JList.class, chooser)) {
list.setBackground(Color.PINK);
}
chooser.showOpenDialog(null);
}
}
class XORButtonUI extends MetalButtonUI {
@Override
public void paint(Graphics g, JComponent c) {
g.setXORMode(Color.YELLOW);
super.paint(g, c);
}
} 发布于 2011-07-20 16:13:51
我真的不知道,但是你有没有试过设置这个属性:
List.selectionForceground
List.selectionBackgroundFileChooser看起来很像一个列表...
再试一次。也许这些设置会有所帮助:
controlHighlight
controlLHighlighthttps://stackoverflow.com/questions/6758719
复制相似问题