Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Nimbus LookAndFeel更改JToolTip的背景色?_Java_Swing - Fatal编程技术网

Java 如何使用Nimbus LookAndFeel更改JToolTip的背景色?

Java 如何使用Nimbus LookAndFeel更改JToolTip的背景色?,java,swing,Java,Swing,在使用Nimbus LookAndFeel的基于Swing的Java应用程序中,我尝试设置工具提示的背景色。因此,我创建了JToolTip的一个子类,并通过重写createToolTip()在我的组件中使用它。目前一切正常,工具提示显示正确,但背景色不变。前景颜色按预期设置。 将外观更改为金属时,我可以按预期设置颜色 这里是一个能够在金属和光环之间切换的小例子。正如yopu希望看到的那样,按钮工具提示的背景色只在使用金属时设置 import java.awt.Color; import java

在使用Nimbus LookAndFeel的基于Swing的Java应用程序中,我尝试设置工具提示的背景色。因此,我创建了JToolTip的一个子类,并通过重写createToolTip()在我的组件中使用它。目前一切正常,工具提示显示正确,但背景色不变。前景颜色按预期设置。 将外观更改为金属时,我可以按预期设置颜色

这里是一个能够在金属和光环之间切换的小例子。正如yopu希望看到的那样,按钮工具提示的背景色只在使用金属时设置

import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolTip;

public class TooltipTestApp {

private static final String METAL_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
private static final String NIMBUS_LOOK_AND_FEEL = "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel";
private static JButton button;
private static String usedLookAndFeel = NIMBUS_LOOK_AND_FEEL;

    public static void main(String args[]) {
        button = new JButton() {

            @Override
            public JToolTip createToolTip() {
                JToolTip toolTip = super.createToolTip();
                toolTip.setBackground(Color.BLACK);
                toolTip.setForeground(Color.RED);

                    return toolTip;
            }
        };

        button.addActionListener(new java.awt.event.ActionListener() {

            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TooltipTestApp.toggleLookAndFeel();
            }
        });

        button.setToolTipText("Some text");

        JFrame frame = new JFrame("TooltipTestApp");

        TooltipTestApp.toggleLookAndFeel();
        frame.add(button);
        frame.setSize(450, 100);
        frame.setVisible(true);
    }

    private static void toggleLookAndFeel() {
        try {
            if (usedLookAndFeel.equals(METAL_LOOK_AND_FEEL)) {
                usedLookAndFeel = NIMBUS_LOOK_AND_FEEL;
            } else {
                usedLookAndFeel = METAL_LOOK_AND_FEEL;
            }

            UIManager.setLookAndFeel(usedLookAndFeel);

            String lookAndFeelName = usedLookAndFeel.substring(usedLookAndFeel.lastIndexOf(".") + 1);
            button.setText("This is: " + lookAndFeelName);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
试试这个:

 public class Main {
      public static void main(String args[]) {
        JFrame frame = new JFrame("JToolTip Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton b1 = new JButton("Button 1") {
          public JToolTip createToolTip() {
            JToolTip tip = super.createToolTip();
            tip.setForeground(Color.YELLOW);
            tip.setBackground(Color.RED);
            tip.setFont(new Font("Arial", Font.BOLD,36));
            return tip;
          }
        };
        b1.setToolTipText("HELLO");
        frame.add(b1, BorderLayout.NORTH);
        frame.setSize(300, 150);
        frame.setVisible(true);
      }
    }

来源:

以下内容也适用于金属LAF,无需重写createToolTip()方法:


LAF可以选择是否使用UIManager属性。我不知道这是否适用于Nimbus。

作为提示:使用的LookAndFeel是Nimbus。当改变这一点时,我可以设置背景色。因此,最好的问题是“当使用Nimbus LookAndFeel时如何更改JToolTip的背景色?”“有什么想法吗?”要更快地获得更好的帮助,请发布一篇文章。要获得“额外点数”(或至少更多帮助),请使GUI有一个按钮可以在金属和光环格子之间切换。@AndrewThomson:谢谢!我更改了示例。3条注释。1) SSCCE应包括进口。2) Re异常
//此处不应发生
a)异常适用于异常情况。b) 运行1.6.0_09的客户端将触发该异常。c)
ex.printStackTrace()
不仅比注释短,而且更有用。3) 我不知道如何解决这个问题。我让位给Swing专家,希望他们很快就会发生。更改示例:添加导入和添加异常处理此代码不会更改工具提示的背景色。你可以用一个简单的
挫折来增加它,但这在Nimbus L&F中不起作用。@pmule:你试过吗?@trashgood:我看不到任何效果,也不确定我是否做对了。我尝试了
Color-derivedColor=nimbusLaf.getDerivedColor(“textForeground”,1,1,1,true)并通过
工具提示指定此颜色。设置背景(derivedColor)对于绘制工具提示,Nimbus使用最终类型“ToolTipPaint”的实例,并硬编码使用Nimbus默认值“info”。所以我有两个选择。1.使用
UIManager.put(“info”,Color.BLACK)全局更改默认的“info”值2。通过使用
UIDefaults=newuidefaults()设置自己的画师来覆盖
UIDefaults
;defaults.put(“工具提示[Enabled].backgroundPainter”,新的MyToolTipPaint());toolTip.putClientProperty(“Nimbus.Overrides”,默认值)
UIManager.put("ToolTip.background", Color.RED);