JButton显示省略号

时间:2016-11-29 20:31:16

标签: java swing

我正在尝试使用Swing库在Java中设置GUI。我创建了一个自定义按钮类,它具有自定义初始化程序,使事情变得更容易。它在下面:

public class JTButton extends JButton {

    char type;

    public JTButton(String title, ActionListener listener, char type) {
        super(title);
        this.type = type;
        addActionListener(listener);
        setForeground(Color.BLACK);
        setBackground(Color.WHITE);
        setFont(new Font("Monospaced", 1, 10));
        setBorderPainted(false);
        if (type == 'h') {
            setFont(new Font("Monospaced", 1, 24));
        }
        setOpaque(true);
    }

    public void setColor(Color t, Color b) {
        setBackground(b);
        setForeground(t);
    }
}

但是,当我运行程序时,它会在我的按钮网格中显示缺点,如下所示。

16x16 grid

16x16 grid

它应该看起来像这样(这是较小的网格):

9x9 grid 9x9 grid

我在GetPreferredSize()上看到了一些东西但却无法发挥作用。让我知道我能做些什么!

额外信息:在macOS中运行,网格在GridLayout中设置

1 个答案:

答案 0 :(得分:-1)

  

当我运行程序时,它会在我的按钮网格中显示省略号。

省略号出现是因为按钮太小而无法显示文本。

这种情况正在发生,因为最终你没有正确使用布局管理器,正如HovercraftFullOfEels所提到的那样。解释如何正确使用布局管理器是一个非常大的答案(而不是我认为你正在寻找的),所以相反,我将为你提供一些快速的方法来摆脱椭圆。

以下是删除省略号的几种方法......

“快速修复”解决方案:

1。修改JButton边距。

JButtons的边距非常小。您可以调整它们的大小,以便为文本显示提供额外的空间。

您可以通过调用...

在JTButton构造函数中执行此操作
setMargin(new Insets(0, 0, 0, 0));

不要忘记import java.awt.Insets;

您可以查看此功能的文档here

2。使每个JButton更大。

由于您使用的是GridLayout,因此可以通过使“网格容器”更大来使每个按钮更大。按钮将伸展以均匀填充可用空间。

根据您对Grid容器的 parent 使用的Layout Manager,将有不同的方法来调整它。深入了解这些内容超出了本答案的范围。