5

1つのコンポーネントのみのツールチップの色を変更するにはどうすればよいですか?

ツールチップの色を変更するには、次のことができると思います。

UIManager.put("ToolTip.background", new ColorUIResource(255, 247, 200)); 

ただし、これにより、1つだけでなく、すべてのコンポーネントのツールチップの背景が変わります。

簡単な解決策はありますか?

4

4 に答える 4

9

アドバイスと例については、@MadProgrammerと@Reimeusに+1してください。

これらは両方とも正しいです。

たす...

これを行うデフォルトの方法はありません。クラスを拡張し、前景色と背景色ToolTipを使用して独自のカスタムを作成してから、sクラス(、、などはすべてs)を拡張し、そのメソッドをオーバーライドして、次のようにカスタムをsとして設定する必要があります。ToolTipJComponentJButtonJLabelJComponentcreateToolTip()ToolTipJComponentToolTip

これが私が作った例です:

ここに画像の説明を入力してください

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);
    }
}
于 2012-11-12T21:03:43.273 に答える
6

JTooltipコンポーネントのカスタムを提供する必要があります。

JComponent#createToolTipを見てください

Javaドキュメントから

ツールチップを表示するために使用する必要があるJToolTipのインスタンスを返します。通常、コンポーネントはこのメソッドをオーバーライドしませんが、異なるツールチップを異なる方法で表示するために使用できます。

于 2012-11-12T20:58:11.683 に答える
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);
   }
}
于 2012-11-12T21:01:53.587 に答える
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ピクセルは金属LAFで機能するようです。

于 2015-08-05T07:30:30.870 に答える