相关疑难解决方法(0)

Swing和Nimbus:替换JPopupMenu的背景(附加到JMenu)

Nimbus通常看起来很棒,但对于某些颜色组合,结果是非最佳的.在我的情况下,a的背景JPopupMenu不适合,这就是我想手动设置的原因.

我在Java 7上,有趣的是,Nimbus完全忽略了UIManager(像PopupMenu.background)中某些属性的设置.所以我唯一的选择是创建JPopupMenu该覆盖的子类paintComponent(...).我知道,那很讨厌,但至少它起作用了.

但是,如果你添加一个JMenu到另一个菜单,它嵌入它自己的实例,JPopupMenu我无法弄清楚如何用我自己的子类替换它.

即使PopupMenuUI为嵌入式实例分配自己也没有带来任何结果.如果直接从JPopupMenuoverriden paint(...)方法继承而被调用,但是,无论我做了什么,都没有绘制.如果继承的javax.swing.plaf.synth.SynthPopupMenuUI paint甚至没有被调用,结果就是我根本没有设置自己PopupMenuUI.

所以简单的问题是:如何JPopupMenu使用Nimbus作为L&F,在Java 7上调整一个或者(如果这更容易)的背景颜色?

编辑:代码示例

看一下下面的代码和结果:

public static void main(final String[] args) {
    try {
        UIManager.setLookAndFeel(NimbusLookAndFeel.class.getCanonicalName());
        UIManager.getLookAndFeelDefaults().put("PopupMenu.background", Color.GREEN);
        UIManager.getLookAndFeelDefaults().put("Panel.background", Color.RED);
        UIManager.getLookAndFeelDefaults().put("List.background", Color.BLUE);
    } catch (ClassNotFoundException | InstantiationException
            | IllegalAccessException | UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200,200);

    JPanel panel = new JPanel(new BorderLayout());
    panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    JList …
Run Code Online (Sandbox Code Playgroud)

java swing nimbus jpopupmenu

15
推荐指数
3
解决办法
6815
查看次数

Java中的梯度问题

在我的程序中,我希望在我的JFrame上有一个半透明的白色到透明渐变,以覆盖黄色背景.这工作正常,它需要是白色到透明,因为我的程序设置如何为用户工作.然而,当我把程序带入大学(JRE7到我的JRE6)时,渐变变成白色到黑色然后透明......直到你开始增加白色的不透明度就没那么糟了...无论如何我能解决这个问题?

这是我的JFrame代码顶部的相关代码.

public class DictionaryGUI extends JFrame
{   
    protected JPanel pGradientPane;

    //Interface gradient specification
    private Color pInterfaceColour = new Color(255, 245, 62);
    protected int iDegreeWhite = 180
    protected int iDegreeBlack = 0

    DictionaryGUI(int iWidth, int iHeight)
    {
        /*General definitions*/
        super(String.format("French Verb Conjugator - Version %s", MainLauncher.version));
        setSize(iWidth, iHeight);
        new Menu(this);

        this.iWidth = iWidth;    
        this.iHeight = iHeight;

        getContentPane().setBackground(pInterfaceColour);
        pGradientPane = new JPanel(new GridBagLayout())
        {
            private static final long serialVersionUID = 1L;

            protected void paintComponent(Graphics pGraphics) 
            {
                Graphics2D pGraphicsGradientRender = (Graphics2D) pGraphics; …
Run Code Online (Sandbox Code Playgroud)

java swing gradient nimbus

13
推荐指数
3
解决办法
2377
查看次数

使用Nimbus时,只有在控制有焦点时才将控制背景颜色设为黄色?

这似乎应该是直截了当的,但我还没有找到一个"好"的方法来做到这一点......

在使用Swing Nimbus L&F时,我想让我的控件(JButtons,JTextField等)在焦点时呈现黄色背景色.除了黄色背景颜色,我希望它们保留所有常见的Nimbus造型.

如果没有聚焦,我希望它们能够用正常的Nimbus样式绘制.

我发现这样做的唯一方法是为每个控件重写控件 [Focused] .backgroundPainter(这相当于从头开始重写大部分Nimbus).

我错过了什么吗?谢谢!

java swing look-and-feel nimbus

4
推荐指数
1
解决办法
2363
查看次数

标签 统计

java ×3

nimbus ×3

swing ×3

gradient ×1

jpopupmenu ×1

look-and-feel ×1