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 回答