首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFileChooser的UIManager颜色

JFileChooser的UIManager颜色
EN

Stack Overflow用户
提问于 2011-07-20 15:55:09
回答 3查看 2.5K关注 0票数 3

我使用的是Nimbus外观,它的颜色只有3处变化:

代码语言:javascript
复制
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中看不到可以修复此问题的参数。

需要帮助确定必要的参数吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-20 16:16:06

好吧,有一种方法可以做到这一点。您可以从JFileChooser获取JList并对其进行修改:

代码语言:javascript
复制
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()

代码语言:javascript
复制
JFileChooser chooser = new JFileChooser();
getJList(chooser);
票数 1
EN

Stack Overflow用户

发布于 2011-07-20 16:20:27

JFileChooser是复合JComponent,你可以提取JButtonsJToggleButtonsJScrollPane with JViewPort that contains JList,请下载Darryl的Swing Utils,阅读说明,然后运行(Darryl的)代码,结果是选择JList或JTable (我投票赞成)

代码语言:javascript
复制
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);
    }
} 
票数 2
EN

Stack Overflow用户

发布于 2011-07-20 16:13:51

我真的不知道,但是你有没有试过设置这个属性:

代码语言:javascript
复制
List.selectionForceground
List.selectionBackground

FileChooser看起来很像一个列表...

再试一次。也许这些设置会有所帮助:

代码语言:javascript
复制
controlHighlight
controlLHighlight
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6758719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档