当按下按钮2改变按钮1的大小的时候,如何刷新JPanel,使得这两个按钮重新排列,代码如下。public class FrameTest {
private JFrame jframe;
JButton jbutton1;
JButton jbutton2;
JPanel jj ; /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
new FrameTest();

} public FrameTest() {
init();

}

public void init(){
jj = new JPanel();
jframe = new JFrame("mytreedemo");
jbutton1 = new JButton("RED");
jbutton2 = new JButton("BLUE");
jbutton2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jbutton1.setSize(new Dimension(100,28));
}
});

jj.add(jbutton1);
jj.add(jbutton2);
jframe.getContentPane().add(jj,BorderLayout.NORTH);
FontPanel fp = new FontPanel();
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension dm = kit.getScreenSize();
jframe.setBounds(dm.width/4,dm.height/4,400,300);
jframe.setExtendedState(JFrame.MAXIMIZED_HORIZ);
System.out.println(jframe.getExtendedState());

jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try{
UIManager.setLookAndFeel(new MetalLookAndFeel());
}catch(Exception e){
e.printStackTrace();
}


}



}

解决方案 »

  1.   

    试过了,不行,jbutton1没有变化。
      

  2.   

            jbutton2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        jbutton1.setPreferredSize(new Dimension(100,28));                
        jj.revalidate();
                        // jbutton1.revalidate();
    }
        });
      

  3.   

    能解释下么?为什么jbutton2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jbutton1.setSize(new Dimension(100,28));                
                jj.revalidate();
                               }
            });
    不行
      

  4.   

    知道了,setsize的问题,谢谢。结贴。