我已经使用了FlowLayout对象,但组建在容器中显示的时候好象采用的是他最佳的高度和宽度。
如何设置组建,让他显示的时候用他自己最小的高度和宽度显示

解决方案 »

  1.   

    你覆盖掉你的那个组件的
    getMinSize()
    getMaxSize()
    应该是差不多是这么写的方法
    让他们的返回值都一样
    试试看
      

  2.   

    容器怎么会知道,他上边的组建要以最小的MinSize显示呢?
    是不是还要对容器进行设置?
      

  3.   

    mb                      = new JMenuBar();
                    configMenu              = new JMenu("设置");
                    configMenu.add("修改网络...");
                    configMenu.add("修改用户...");
                    configMenu.add("从新连接");
                    configMenu.add("外观修改");
                    configMenu.add("关闭短信");
                    mb.add(configMenu);                Dimension mbSize        = new Dimension(60, 26);
                    Dimension buttonSize    = new Dimension(29, 26);                mb.setMinimumSize(mbSize);
                    mb.setMaximumSize(mbSize);
                    borderLayout            = new BorderLayout();
                    contentPanel            = (JPanel) this.getContentPane();
                    southPanel              = new JPanel();
                    southPanel.setBorder(BorderFactory.createEtchedBorder(getBackground().darker(), getBackground().brighter()));
                    contentPanel.setLayout(borderLayout);
                    list                    = new javax.swing.JList();
                    scrollPane              = new javax.swing.JScrollPane(list);
                    horn                    = new javax.swing.JButton(new ImageIcon(this.getClass().getResource("horn1.gif")));
                    horn.setMinimumSize(buttonSize);
                    horn.setMaximumSize(buttonSize);
                    contentPanel.add(scrollPane, borderLayout.CENTER);
                    scrollPane.setBorder(new TitledBorder("Name's"));                southPanel.setLayout(new FlowLayout());
                    contentPanel.add(southPanel, borderLayout.SOUTH);
                    southPanel.add(mb);
                    southPanel.add(horn);                this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
                    this.setSize(message.Config.ClientWidth, message.Config.ClientHeight);
                    this.setResizable(false);                System.out.println(horn.getMaximumSize());
                    System.out.println(horn.getMinimumSize());
                    System.out.println(mb.getMaximumSize());
                    System.out.println(mb.getMinimumSize());
      

  4.   

    应该是覆盖getPrefferedSize()方法吧,直接让该方法返回getMinimunSize()
      

  5.   

    最后四行是我临时调试用的。
    southPanel这个面板容器中,放了一个菜单和图片按扭。
    我的窗口是固定的,当把这两个组建添加到southPanel中的时候,就换行了,菜单和按扭这两个组建都浪费了很多的空间,如果把菜单和按扭的大小调整的小一些,是完全可以在以行放下的。
    不知道各位高手是如何解决这样的问题的
      

  6.   

    是不是修改你的
    southPanel

    layout