1つのコンポーネントのみのツールチップの色を変更するにはどうすればよいですか?
ツールチップの色を変更するには、次のことができると思います。
UIManager.put("ToolTip.background", new ColorUIResource(255, 247, 200));
ただし、これにより、1つだけでなく、すべてのコンポーネントのツールチップの背景が変わります。
簡単な解決策はありますか?
アドバイスと例については、@MadProgrammerと@Reimeusに+1してください。
これらは両方とも正しいです。
たす...
これを行うデフォルトの方法はありません。クラスを拡張し、前景色と背景色ToolTip
を使用して独自のカスタムを作成してから、sクラス(、、などはすべてs)を拡張し、そのメソッドをオーバーライドして、次のようにカスタムをsとして設定する必要があります。ToolTip
JComponent
JButton
JLabel
JComponent
createToolTip()
ToolTip
JComponent
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);
}
}
JTooltip
コンポーネントのカスタムを提供する必要があります。
JComponent#createToolTipを見てください
Javaドキュメントから
ツールチップを表示するために使用する必要があるJToolTipのインスタンスを返します。通常、コンポーネントはこのメソッドをオーバーライドしませんが、異なるツールチップを異なる方法で表示するために使用できます。
これを行う標準的な方法はありませんが、をオーバーライドすることができます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);
}
}
ソースコードにアクセスできる場合は、これをお勧めしません。ただし、まだ行っていない場合は、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ピクセルは金属LAFで機能するようです。