2

これが私のLayoutクラスのコードです。

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Layout extends JFrame {
    private JButton lb;
    private JButton cb;
    private JButton pb;
    private FlowLayout layout;
    private Container container;

    public Layout() {
        super("The Title");
        layout = new FlowLayout();
        container = new Container();
        setLayout(layout);

        //*Left
        lb = new JButton("L");
        add(lb);
        lb.addActionListener(
            new ActionListener(){   
                public void actionPerformed(ActionEvent event){
                    layout.setAlignment(FlowLayout.LEFT);
                    layout.layoutContainer(container);
                }
            }
        );
        //*Center
        cb = new JButton("C");
        add(cb);
        cb.addActionListener(
            new ActionListener(){   
                public void actionPerformed(ActionEvent event){
                    layout.setAlignment(FlowLayout.CENTER);
                    layout.layoutContainer(container);
                }
            }
        );      
        //*Right
        pb = new JButton("R");
        add(pb);
        pb.addActionListener(
            new ActionListener(){   
                public void actionPerformed(ActionEvent event){
                    layout.setAlignment(FlowLayout.RIGHT);
                    layout.layoutContainer(container);
                }
            }
        );
    }
}

私はnewbostonyoutubeチュートリアルを通してJavaを学んでいます(このコードはこのチュートリアルからのものです)。しかし、これは本来のようには機能しません。右ボタン(R)をクリックすると、すべてのボタンがウィンドウの右側に瞬時にドラッグされます。そうではありません。ただし、その右ボタンをクリックしてからウィンドウのサイズを強制的に変更すると、本来の機能が実行されます。mainメソッドにsetResizable(false)を追加すると、プログラムのサイズを変更できないため、プログラムが機能しなくなります。私は何を間違えましたか?

私の貧しい英語のところで私を許してください。

4

2 に答える 2

1

交換

container = new Container();

container = getContentPane();
于 2012-07-31T12:47:04.610 に答える
0

最も簡単な方法は、新しい FlowLayout を設定し、invalidate() を呼び出すことです。

    setLayout(new FlowLayout(FlowLayout.LEFT));
    invalidate();
    validate();

現在の FlowLayout を更新しても効果はありません。

于 2012-07-31T12:31:31.363 に答える