一般都是setSize子后调用setVisible,但是如何在setVisible之后动态修改JFrame的大小?给分20。

解决方案 »

  1.   

    我调用了validate, repain等方法都没有效果,请问是什么原因?
      

  2.   

    我试了一下,好象不用任何操作就可以:import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;public class Test extends JFrame { private JPanel pane = new JPanel(); private JLabel label = new JLabel(); public Test() {
    super("Test");
    label.setText("Width = 300, Height = 200");
    pane.add(label);
    this.getContentPane().add(pane);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true); MyThread thread = new MyThread(this);
    thread.start();
    } public static void main(String[] arg) {
    new Test();
    } public void setLabelText(String text) {
    this.label.setText(text);
    }}
    //用这个线程来控制JFrame的size
    class MyThread extends Thread {
    private Test frame = null; public MyThread(Test frame) {
    this.frame = frame;
    } public void run() {
    for (int i = 0; i < 10; i++) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
    Dimension dim = frame.getSize();
    frame.setSize(dim.width + 10, dim.height + 10);
    frame.setLabelText("Width = " + (dim.width + 10) + ", Height = " + (dim.height + 10));
    }
    }
    }
      

  3.   

    简易代码
    package frmsize;import java.awt.BorderLayout;import javax.swing.JFrame;
    import javax.swing.JButton;
    import java.awt.Rectangle;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseAdapter;public class Frame1 extends JFrame {
        static Frame1 f;
        public Frame1() {
            try {
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    private void jbInit() throws Exception {
            getContentPane().setLayout(null);
            this.setSize(600,400);
            this.setVisible(true);
            jButton1.setBounds(new Rectangle(139, 195, 142, 48));
            jButton1.setText("jButton1");
            jButton1.addMouseListener(new Frame1_jButton1_mouseAdapter(this));
            this.getContentPane().add(jButton1);
        }
        public static void main(String stra[]){
            f = new Frame1();
        }    JButton jButton1 = new JButton();
        public void jButton1_mouseClicked(MouseEvent e) {
            //1参数X坐标,2参数Y坐标,3参数宽度,4参数高度
            f.setBounds(0,0,50,50);
        }
    }
    class Frame1_jButton1_mouseAdapter extends MouseAdapter {
        private Frame1 adaptee;
        Frame1_jButton1_mouseAdapter(Frame1 adaptee) {
            this.adaptee = adaptee;
        }    public void mouseClicked(MouseEvent e) {
            adaptee.jButton1_mouseClicked(e);
        }
    }