3

番号付きのボタンを含むグリッドで単純な 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);
    }
    
}

ボタンは小さすぎてテキストが収まらないため、数字の代わりに 3 つのドットがボタンに表示されます。( ... ) ウィンドウを拡大する (それに応じてボタンのサイズを拡大する) 場合にのみ、数字がボタンに適切に表示されます。テキストをボタンのサイズに合わせて常に表示されるようにする方法はありますか?

4

2 に答える 2

3

以下に示す変更を行います。

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

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

ここでの秘訣は、ボタンをまったく変更するのではなく、GUI をボタンのサイズに合わせることです。pack()これは、 which..を呼び出すことによって実現されます。

サブコンポーネントの優先サイズとレイアウトに合わせて、この Window のサイズを変更します。..

于 2013-09-16T21:14:31.733 に答える