簡體   English   中英

如何將按鈕的文本調整為按鈕的大小 - Java 的 Swing

[英]How to adjust buttons' text to buttons' size - Java's Swing

我正在嘗試使用包含編號按鈕的網格創建一個簡單的 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, 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()時,初始布局將是方形的pack()根據 Andrew Thompson 的回答,您應該使用它)。

編輯:更改了首選尺寸以考慮按鈕的正常首選尺寸。 (再次歸功於 A. Thompson)。

進行如下所示的更改。

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

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

這里的技巧根本不是改變按鈕,而是讓 GUI 調整到按鈕的大小。 這是通過調用pack()實現的,它..

使此窗口的大小適合其子組件的首選大小和布局。 ..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM