从JButton中删除三个点“...”?

11

嘿,我正在创建一个计算器程序,其中有一些小按钮,我想让其中一个按钮上面显示“Ans”,但是每当我将JButton大小缩小到50x50以下时,它会显示三个点“...”,我该如何删除这些点并显示正常的文本?


我已经很久没有使用jButton了,但也许你想要减小在jButton中输入的文本字体大小,或者一个简单的hack就是将一个jLabel粘贴到jButton上,并将jButton文本设置为""。 - chaitanya
5个回答

26

可能是因为您的按钮边距太大了。

尝试这样做:

myButton.setMargin(new Insets(0, 0, 0, 0));

您还可以关闭边框:

button.setBorder(null);

3
不要设置按钮的首选大小。使用按钮的首选大小,让布局管理器 layout 组件。首选大小确保所有文本在不同的外观和感觉下都能正确显示。

是的,但我希望所有的空间都能按照我想要的方式和位置排列得整整齐齐的。我禁用了布局管理器,并使用了button.setBounds()方法。 - Stan
你的意思是不要设置最大尺寸,对吗? - Ido Weinstein
不,我只是想让“...”消失,但是我的问题已经被smas回答了。 - Stan
1
@Stan,使用setBounds不是设计GUI的正确方式。只有刚学Java的人才会这样做。使用布局管理器是正确的方法。你的代码将无法在其他平台上移植。 - camickr

1

这段代码试图解释为什么布局和首选大小非常重要。重要的部分在于输入/输出。

TestGuiSize.java

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

class TestGuiSize {

    public static void addButtonToPanel(JPanel panel, String label) {
        JButton button = new JButton(label);
        button.setMargin(new Insets(1,1,1,1));
        panel.add(button);
    }

    public static void main(String[] args) {
        JPanel p = new JPanel(new GridLayout(4,3,3,3));
        addButtonToPanel(p, "7");
        addButtonToPanel(p, "8");
        addButtonToPanel(p, "9");
        addButtonToPanel(p, "/");

        addButtonToPanel(p, "4");
        addButtonToPanel(p, "5");
        addButtonToPanel(p, "6");
        addButtonToPanel(p, "*");

        addButtonToPanel(p, "1");
        addButtonToPanel(p, "2");
        addButtonToPanel(p, "3");
        addButtonToPanel(p, "-");

        addButtonToPanel(p, "0");
        p.add(new JLabel(""));
        addButtonToPanel(p, "Del");
        addButtonToPanel(p, "+");

        Dimension d = p.getPreferredSize();
        System.out.println(
            "Preferred Size: " +
            d.getWidth() +
            "x" +
            d.getHeight());

        JOptionPane.showMessageDialog(null, p);
    }
}

输入/输出

prompt> java TestGuiSize
Preferred Size: 113.0x105.0

prompt>java -Dswing.plaf.metal.controlFont=Dialog-22 TestGuiSize
Preferred Size: 169.0x157.0

prompt>java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel TestGuiSize
Preferred Size: 93.0x93.0

prompt>java -Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel TestGuiSize
Preferred Size: 205.0x129.0

prompt> 

运行时参数只是运行之间可能会导致应用程序 GUI 代码崩溃的差异的冰山一角。布局旨在处理这些差异。


0

0
使用setMargin(Insets m)调整JButton边框和标签之间的间隔。默认值为(2, 14, 2, 14)。要最大化标签可用的空间(并完全删除点),您可以使用类似于以下内容的东西。
myButton.setFont(new Font("Tahoma", Font.BOLD, 11));
myButton.setMargin(new Insets(0, -1, 0, -20));
myButton.setHorizontalAlignment(SwingConstants.LEFT);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接