13

我有一个带有 GridLayout 的 JPanel。在网格的每个单元格中,我都有一个按钮。我看到每个按钮都被灰色边框包围。我想删除这些边框。有人知道怎么做吗?

4

6 回答 6

14
Border emptyBorder = BorderFactory.createEmptyBorder();
yourButton.setBorder(emptyBorder);

有关边框的更多详细信息,请参阅BorderFactory

于 2010-04-26T12:10:50.643 回答
11
yourButton.setBorderPainted(false);
于 2011-07-14T05:50:06.893 回答
7

在最新的 Java 版本中,需要调用 setContentAreaFilled(false) 来完全移除边框。为一些填充添加一个空边框:

button.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
button.setContentAreaFilled(false);
于 2017-04-12T07:52:17.580 回答
3

我认为边框很可能是按钮 GUI 的一部分。您可以尝试调用.setBorder(null)所有按钮,看看会发生什么!

于 2010-04-26T12:02:08.770 回答
2

它可以是这样的:

yourButton.setBorder(null);
于 2016-04-02T12:45:53.463 回答
1

虽然所有这些答案都以某种方式起作用,但我想我会提供一些更深入的比较以及示例。

第一个默认按钮:

在此处输入图像描述

边框绘制设置为 false 的按钮将删除边框和悬停动作,但保留填充:

button.setBorderPainted(false);

在此处输入图像描述

带有空边框或空边框的按钮会移除边框、悬停动作和填充:

button.setBorder(BorderFactory.createEmptyBorder());

或者

button.setBorder(null);

在此处输入图像描述

具有空边框和尺寸的按钮会删除边框和悬停动作并将填充设置为提供的值:

border.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));

在此处输入图像描述

最后,将这些与背景和悬停动作相结合,以获得在悬停时突出显示的自定义遮罩按钮:

button.setBackground(Color.WHITE);
button.setBorderPainted(false);

button.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseEntered(java.awt.event.MouseEvent evt) {
        button.setBackground(Color.GRAY);
    }

    public void mouseExited(java.awt.event.MouseEvent evt) {
        button.setBackground(Color.WHITE);
    }
});

在此处输入图像描述

于 2020-04-03T15:28:44.523 回答