如何仅为一个组件更改工具提示的颜色?
我知道您可以执行以下操作来更改工具提示颜色:
UIManager.put("ToolTip.background", new ColorUIResource(255, 247, 200));
但是这会改变所有组件的工具提示背景,而不仅仅是一个。
任何简单的解决方案?
答案 0 :(得分:8)
+1给@MadProgrammer和@Reimeus他们的建议和例子。
这些都是正确的。
添加......
没有默认方法可以做到这一点。您必须扩展ToolTip
类,以创建具有前景色和背景色的自定义ToolTip
,然后扩展JComponent
类(JButton
,JLabel
等等都是JComponent
s)并覆盖其createToolTip()
方法,并将自定义ToolTip
设置为JComponent
s ToolTip
,如下所示:
这是我做的一个例子:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JToolTip;
import javax.swing.SwingUtilities;
/**
*
* @author David
*/
public class CustomJToolTipTest {
private JFrame frame;
public CustomJToolTipTest() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CustomJToolTipTest();
}
});
}
private void initComponents() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
JButton button = new JButton("button") {
//override the JButtons createToolTip method
@Override
public JToolTip createToolTip() {
return (new CustomJToolTip(this));
}
};
button.setToolTipText("I am a button with custom tooltip");
frame.add(button);
frame.pack();
frame.setVisible(true);
}
}
class CustomJToolTip extends JToolTip {
public CustomJToolTip(JComponent component) {
super();
setComponent(component);
setBackground(Color.black);
setForeground(Color.red);
}
}
答案 1 :(得分:6)
答案 2 :(得分:5)
没有标准的方法可以执行此操作,但您可以覆盖JComponent.createToolTip()
。这是一个按钮示例:
MyButton testButton = new MyButton("Move Mouse Over Button");
testButton.setToolTipText("Some text");
class MyButton extends JButton {
public MyButton(String text) {
super(text);
}
@Override
public JToolTip createToolTip() {
return (new MyCustomToolTip(this));
}
}
class MyCustomToolTip extends JToolTip {
public MyCustomToolTip(JComponent component) {
super();
setComponent(component);
setBackground(Color.black);
setForeground(Color.red);
}
}
答案 3 :(得分:1)
如果您有权访问源代码,我不会建议这样做。但如果还没有,可以使用HTML格式化功能更改颜色。
JButton b = new JButton();
b.setToolTipText("<html><div style='margin:0 -3 0 -3; padding: 0 3 0 3; background:green;'>My Text</div></html>");
您需要负余量,因为存在标准保证金,否则将不会着色。我们通过添加填充来弥补边际。 3 px似乎适用于金属LAF。