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追加してから、 を に追加JPanelJPanelますJFrameJPanelデフォルトはフロー レイアウトであることに注意してください。

于 2011-07-05T18:50:47.130 に答える