1

私がやろうとしているのは、CButton インスタンスを作成すると、カスタマイズされたツールチップと画像レイヤーを持つ JButton インスタンスが返されるということです。

私のアプリケーションはエラーなしで完全に実行され、カスタムボタンのツールチップは正しく機能しますが、画像オブジェクトパラメーターが JButton に送信されるため、ボタンに画像レイヤーが存在しません (私の質問はなぜですか?)。

import java.awt.Color;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JToolTip;

public class CButton extends JButton
{
    CButton(String text, String source)
    {
        ImageIcon iconButton = new ImageIcon(source);
        new JButton(text, iconButton)
        {
            public JToolTip createToolTip()
            {
                JToolTip toolTip = super.createToolTip();
                toolTip.setForeground(Color.BLACK);
                toolTip.setBackground(Color.WHITE);
                toolTip.setFont(new Font("Arial", Font.PLAIN, 12));
                return toolTip;
            }
        };
    }
};
4

1 に答える 1

3

コンポーネントの動作をカスタマイズするには、拡張するクラスの新しいインスタンスを作成するのではなく、メソッドをオーバーライドする必要があります。

何かのようなもの:

public class CButton extends JButton
{
    public CButton(String text, Icon icon)
    {
        super(text, icon);
    }

    @Override
    public JToolTip createToolTip()
    {
        JToolTip toolTip = super.createToolTip();
        toolTip.setForeground(Color.BLACK);
        toolTip.setBackground(Color.WHITE);
        toolTip.setFont(new Font("Arial", Font.PLAIN, 12));
        return toolTip;
    }
};
于 2013-12-08T21:04:37.707 に答える