0

我正在尝试向我的 JFrame 添加一个按钮。我无法将 JButton 分配给特定大小。

我试过了

mJButtonOne.setPreferredSize
mjButtonOne.setMinimum/maximum
mjBUttonOne.setSize

无论我尝试什么,按钮总是加载全屏。

这是我的代码,我使用了一些方法,一个 make、一个 build 和一个 dostuff。

private void make() {
    this.mJLabelTime = new JLabel("");
    this.mJButtonOne = new JButton("");
//I have tried setting size in do stuff as well.

      }

private void build(){
    this.add(this.mJLabelTime);
    this.add(this.mJButtonOne);

     }

private void doStuff(){

    this.mJLabelTime.setText(Customtime.time("HH:mm:ss"));
    this.mJButtonOne.setText("BUTTON!");
    this.mJButtonOne.setPreferredSize(new Dimension(1, 10));

我的主要看起来像这样。

public static void main(String[] args) {
    View view = new View();
       view.setMaximumSize(new Dimension(200, 200));
       view.setMinimumSize(new Dimension(200, 200));
    view.setVisible(true);
System.out.println("Running app..."); 
//System.out.println("Goodbye World");    
}
4

2 回答 2

3

如果您没有使用任何 LayoutManager,请致电setLayout(null)您的View班级。

但建议您选择并使用布局管理器,让布局管理器负责调整组件的大小。

于 2011-07-05T18:36:09.913 回答
1

通常布局管理器会尊重您传递给的维度setPreferredSize(...)

例子

public class View {

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI(){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JPanel panel = new JPanel(){
            @Override
            public Dimension getPreferredSize(){
                return new Dimension(200, 200);
            }
        };
        final JButton button = new JButton("Button"){
            @Override
            public Dimension getPreferredSize(){
                return new Dimension(100, 20);
            }
        };
        panel.add(button);
        frame.add(panel);

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

输出

在此处输入图像描述

编辑

不要将组件直接添加到 中JFrame,而是将它们添加到 中JPanel,然后将 添加JPanelJFrame. 请注意,JPanel默认为流布局

于 2011-07-05T18:50:47.130 回答