当我改变JFrame的大小的时候.怎样才能使它里面的组件大小不变啊?

解决方案 »

  1.   

    我刚注册这个论坛,不知道怎么发帖子,所以只有把我的问题发到这个老兄的帖子里面!请大家帮我看看我这个java applet程序(小球做自由反弹运动)能不能运行(不好意思,我的机子里面没有jdk),如果不对,错误在那里,谢谢大家!import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.*;
    public class p extends JApplet implements Runnable
    {
    int x,y;
    Thread b=null;
    public void init()
    {
    Container cp=getContentPane();
    x=70;
    y=0;
    }
    public void start()
    {
    b= new Thread(this);
    b.start();
    }
    public void run()
    {
    int dm=10,dn=10;
    while(true)
    {
    if(x<=0)
    {
    x=10;
    dn=10;
    }if(x>=240)
    {
    x=240;
    dn=-10;
    }
    if(y<=0)
    {
    y=10;
    dm=10;
    }
     if(y>=140)
    {
    y=140;
    dm=-10;
    }x+=dn;
    y+=dm ;
    repaint();
    try{b.sleep(150);}
    catch(InterruptedException e){}
    }
    }
    public void paint(Graphics g)
    {
    g.setColor(Color.green);
    g.fillRoundRect(0,0,250,250,10,10);
    g.SetColor(Color.red);
    g.fillOval(x,y,10,10);
    g.drawString("小球自由反弹运动",70,170);
    }
    }
    <applet code="p.class" width=300 height=240></applet>
      

  2.   

    多建几个面板
    面板是放组件窗口用borderLayout
    面板里用flowLayout
      

  3.   

    lastsweetop() ,我按你的方法做了。但是我拖动窗口,改变窗口大小的时候,那些组件的位置都还是会改变啊..能给个具体的例子吗?谢谢
      

  4.   

    如果在BorderLayout布局中固定jButton大小,
    1.先在new JPanel,设布局panel.setLayout(flowLayout1);
    并设置JPanel.setPreferredSize(new Dimension(200, 70));
    2.再设置new jButton,jButton.setPreferredSize(new Dimension(200, 50));
    然后把jButton入到JPanel中,panel.add(jButton),
    再把JPanel放到BorderLayout布局中的某个方向.
    例子:
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class rew extends JFrame { /**
      * Launch the application
      * @param args
      */
     public static void main(String args[]) {
      try {
       rew frame = new rew();
       frame.setVisible(true);
      } catch (Exception e) {
       e.printStackTrace();
      }
     } /**
      * Create the frame
      */
     public rew() {
      super();
      getContentPane().setLayout(new BorderLayout());
      setBounds(100, 100, 500, 375);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  final JButton button = new JButton();
      button.setText("New JButton");
      getContentPane().add(button, BorderLayout.WEST);  final JButton button_1 = new JButton();
      button_1.setText("New JButton");
      getContentPane().add(button_1, BorderLayout.NORTH);  final JPanel panel = new JPanel();
      panel.setBackground(new Color(255, 0, 255));
      panel.setPreferredSize(new Dimension(180, 50));
      panel.setLayout(new FlowLayout());
      getContentPane().add(panel, BorderLayout.EAST);  final JButton button_2 = new JButton();
      button_2.setText("New JButton");
      panel.add(button_2);  final JButton button_1_1 = new JButton();
      button_1_1.setText("New JButton");
      panel.add(button_1_1);
      //
     }}
      

  5.   

    一般用Swing做界面几种方式GridBagLayout, 最复杂的方式, 组件随面板而动, 适合有Table, Tree, TextArea等等大组件存在的面板. 因为放大也不会影响效果, 而且看到的东西更多.
    BorderLayout, 这个简单.
    null, 没有Layout, 就是XY定位了, 大家都明白吧.如果不是特殊的需求, 用这3中绝对满足.