这是我的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);
}
}
);
}
}
我正在通过newboston youtube教程学习java(这段代码来自this教程)。但是这个并不像它应该的那样工作。当我单击右键(R)时,它应立即将所有按钮拖动到窗口的右侧。它没有。但是,当我单击右键然后强行调整窗口大小时,它会执行应有的操作。通过在main方法中添加setResizable(false),我无法调整程序的大小,因此它不起作用。 我做错了什么?
原谅我的英语不好。
答案 0 :(得分:1)
替换
container = new Container();
通过
container = getContentPane();
答案 1 :(得分:0)
最简单的方法是设置一个新的FlowLayout并调用invalidate():
setLayout(new FlowLayout(FlowLayout.LEFT));
invalidate();
validate();
更新当前的FlowLayout无效。