设计一个流水式版面配置三个按钮:左齐、居中、右齐。按左齐时三个按钮左对齐,右齐时右对齐。
我试了几种方法都只能在初始化时有效,运行时却没法改变对齐方式。请问各位大侠要能在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();
}
}
我试了几种方法都只能在初始化时有效,运行时却没法改变对齐方式。请问各位大侠要能在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();
}
}
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();
}
}
我运行过,这样是可以的