JButton去掉按钮字周围的虚线框

JButton去掉按钮字周围的虚线框

  • JButton去掉按钮字周围的虚线框
    • 1.问题描述
    • 2.解决办法
    • 3.代码示例
    • 4.效果演示

JButton去掉按钮字周围的虚线框

系统:Win10
JDK:1.8.0_121
IDEA:2017.3.2

1.问题描述

在测试Swing项目的时候,发现每次点击按钮,按钮上面字的周围都会出现一个线框,现在不想该线框显示。
如下图所示:
JButton去掉按钮字周围的虚线框_第1张图片

2.解决办法

使用类 AbstractButton 下的 setFocusPainted 方法,将绘制焦点状态设置为false,则不会在获取到焦点的时候,绘制这个框框了

// 设置 paintFocus 属性,设置为false 则不会绘制焦点状态
button.setFocusPainted(false);

setFocusPainted 方法的源码

/**
     * Sets the paintFocus property, which must
     * be true for the focus state to be painted.
     * The default value for the paintFocus property
     * is true.
     * Some look and feels might not paint focus state;
     * they will ignore this property.
     *
     * @param b if true, the focus state should be painted
     * @see #isFocusPainted
     * @beaninfo
     *        bound: true
     *    attribute: visualUpdate true
     *  description: Whether focus should be painted
     */
    public void setFocusPainted(boolean b) {
     
        boolean oldValue = paintFocus;
        paintFocus = b;
        firePropertyChange(FOCUS_PAINTED_CHANGED_PROPERTY, oldValue, paintFocus);
        if (b != oldValue && isFocusOwner()) {
     
            revalidate();
            repaint();
        }
    }

3.代码示例

/*
 测试按钮不绘制焦点状态
 */
public class JButtonDemo {
     
    public static void main(String[] args) {
     
        JFrame frame = new JFrame("测试绘制焦点状态");
        frame.setLayout(null);
        JPanel panel = new JPanel();
        panel.setBounds(140,100,100,40);
        frame.setSize(new Dimension(400, 300));
        JButton button = new JButton("普通按钮");
        // 设置 paintFocus 属性,设置为false 则不会绘制焦点状态
        button.setFocusPainted(false);

        // 添加按钮
        panel.add(button);
        frame.add(panel);
        // 获取焦点
        frame.setFocusable(true);
        // 居中显示
        frame.setLocationRelativeTo(null);
        // 设置可见
        frame.setVisible(true);
    }
}

4.效果演示

JButton去掉按钮字周围的虚线框_第2张图片

你可能感兴趣的:(Java,Swing,的使用,Java,Swing,JButton)