设计一个流水式版面配置三个按钮:左齐、居中、右齐。按左齐时三个按钮左对齐,右齐时右对齐。
我试了几种方法都只能在初始化时有效,运行时却没法改变对齐方式。请问各位大侠要能在Button事件里实现改变对齐方式应该怎么做呢?谢谢大家了,能解决的话,俺一定有分献上
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class mytest extends JFrame{
public JButton b1 = new JButton("Left");
public JButton b2 = new JButton("Center");
public JButton b3 = new JButton("Right");
FlowLayout fl;
public Container container;
public mytest(){
super("FlowLayout Align Test");
init();
}
public void init(){
container = this.getContentPane();
fl = new FlowLayout(FlowLayout.CENTER);
container.setLayout(fl);
p.add(b1);
p.add(b2);
p.add(b3);

b1.addActionListener(new ButtonListener(FlowLayout.LEFT));
b2.addActionListener(new ButtonListener(FlowLayout.CENTER));
b3.addActionListener(new ButtonListener(FlowLayout.RIGHT));
container.add(p);
setSize(400,100);
show();
}

class ButtonListener implements ActionListener{
public int align;
public ButtonListener(int align){
this.align = align;
}
public void actionPerformed(ActionEvent e){
                        //这里该怎么实现对齐方式的改变呢?
fl.setAlignment(align);
}
}
public static void main(String[] args){
mytest app = new mytest();
}
}

解决方案 »

  1.   

    稍加修改,如下:
    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    public class mytest extends JFrame{
    public JButton b1 = new JButton("Left");
    public JButton b2 = new JButton("Center");
    public JButton b3 = new JButton("Right");
    FlowLayout fl;
    public Container container;
    public mytest(){
    super("FlowLayout Align Test");
    init();
    }
    public void init(){
    container = this.getContentPane();
    fl = new FlowLayout(FlowLayout.CENTER);
    container.setLayout(fl);
    container.add(b1);
    container.add(b2);
    container.add(b3);

    b1.addActionListener(new ButtonListener(FlowLayout.LEFT));
    b2.addActionListener(new ButtonListener(FlowLayout.CENTER));
    b3.addActionListener(new ButtonListener(FlowLayout.RIGHT));
    setSize(400,100);
    show();
    }

    class ButtonListener implements ActionListener{
    public int align;
    public ButtonListener(int align){
    this.align = align;
    }
    public void actionPerformed(ActionEvent e){
                            //这里该怎么实现对齐方式的改变呢?
                            fl.setAlignment(align);
                            container.setLayout(fl);///加这两句
                            container.validate();///必须刷新
                         }
    }
    public static void main(String[] args){
    mytest app = new mytest();
    }
    }
    我运行过,这样是可以的