加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何将按钮的文本调整为按钮的大小 – Java的Swing

发布时间:2020-12-15 04:13:47 所属栏目:Java 来源:网络整理
导读:我是新来的,在 Java中迈出了第一步. 出于学习目的,我正在尝试使用包含编号按钮的网格创建一个简单的GUI. 问题是,按钮的文本不会根据按钮的大小进行调整. 让我先向您展示代码,这样您就会明白我的意思: import javax.swing.*;import java.awt.GridLayout;impo
我是新来的,在 Java中迈出了第一步.

出于学习目的,我正在尝试使用包含编号按钮的网格创建一个简单的GUI.
问题是,按钮的文本不会根据按钮的大小进行调整.

让我先向您展示代码,这样您就会明白我的意思:

import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class SimpleGUI implements ActionListener {

    private JFrame frame;
    private JPanel grid;
    private JButton[] buttons;

    public SimpleGUI() {
        frame=new JFrame("Buttons grid");
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);


        grid=new JPanel();
        buttons=new JButton[100];


        for (int i=0; i<buttons.length; i++) {
            buttons[i]=new JButton(Integer.toString(i+1));
            buttons[i].setActionCommand(Integer.toString(i+1));
            grid.add(buttons[i]);
            buttons[i].addActionListener(this);
        }

        frame.getContentPane().add(grid);
    }

    public static void main(String[] args) {
        SimpleGUI gui=new SimpleGUI();
        gui.go();
    }


    public void go() {
        grid.setLayout(new GridLayout(10,10));

        frame.setSize(500,500);
        frame.setVisible(true);
    }


    public void actionPerformed(ActionEvent e) {
        String buttonNum=e.getActionCommand();
        System.out.println("You've pressed "+buttonNum);
    }

}

我无法上传图片,因此您必须运行此代码才能查看结果.
问题是,按钮太小而文字无法容纳,因此不是数字,而是会出现三个点. (……)
只有当我展开窗口(从而相应地扩展按钮的尺寸)时,数字才会正确显示在按钮上.
有没有办法让文本自己调整按钮的尺寸,以便它始终可见?

谢谢你提前,并原谅我糟糕的语言(英语是我的第二语言).

解决方法

确实可以为按钮内的文本提供更多空间.文本周围的额外空白区域由边距控制,可以更改:

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

如果要在默认情况下使按钮成为方形,则可以覆盖其首选大小:

buttons[i] = new JButton(Integer.toString(i + 1)) {
    @Override
    public Dimension getPreferredSize() {
        Dimension naturalSize = super.getPreferredSize();
        int sideLength = Math.max(naturalSize.width,naturalSize.height);
        return new Dimension(sideLength,sideLength);
    }
};

然后初始布局将是正方形,当使用pack()时(根据Andrew Thompson的回答你应该使用它).

编辑:更改了首选大小,以考虑按钮的正常首选尺寸. (再次向A. Thompson致信).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读