嘿,我正在创建一个计算器程序,其中有一些小按钮,我想让其中一个按钮上面显示“Ans”,但是每当我将JButton大小缩小到50x50以下时,它会显示三个点“...”,我该如何删除这些点并显示正常的文本?
可能是因为您的按钮边距太大了。
尝试这样做:
myButton.setMargin(new Insets(0, 0, 0, 0));
您还可以关闭边框:
button.setBorder(null);
这段代码试图解释为什么布局和首选大小非常重要。重要的部分在于输入/输出。
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 代码崩溃的差异的冰山一角。布局旨在处理这些差异。
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);