将颜色设置为JButton而不调整边框

时间:2017-02-02 14:40:34

标签: java swing

我想创建一个红色JButton

import java.awt.*;
import javax.swing.*;

public class RedButtonTest {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame  frame   = new JFrame("Red Button Color Test");
                JPanel  pane1   = new JPanel(new FlowLayout());
                JPanel  pane2   = new JPanel(new FlowLayout());
                JButton button1 = new JButton();
                JButton button2 = new JButton();

                frame.setSize(new Dimension(300, 300));
                button1.setPreferredSize(new Dimension(100, 100));
                button2.setPreferredSize(new Dimension(100, 100));
                button2.setBackground(Color.red);
                button2.setBorderPainted(false); //This line
                button2.setOpaque(true);

                pane1.add(button1);
                pane2.add(button2);
                frame.add(pane1, BorderLayout.WEST);
                frame.add(pane2, BorderLayout.EAST);

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

有没有办法让按钮变红而不使用

setBorderPainted(false);

当不使用它时,边框变为红色而不是按钮本身,但是,我不想使用此行,因为它会删除按钮的柔化边缘。是否有其他方式为按钮着色?

1 个答案:

答案 0 :(得分:0)

尝试使用button2.setContentAreaFilled(false);。这将保留边缘但设置背景颜色。根据{{​​3}}:

  

如果为true,则按钮将绘制内容区域。如果你想拥有一个   透明按钮,例如,仅图标按钮,然后你   应该将此设置为false。不要调用setOpaque(false)。默认   contentAreaFilled属性的值为true。