代码如下:
JPanel Top = new JPanel();
        JPanel Bottom = new JPanel();
        JScrollPane Scroll = new JScrollPane(Top,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,Scroll,Bottom);
后面还有一段和上面类似的代码,最后也得到了一个SplitPane,这两个SplitPane加入了一个TabbedPane。其中那个Top的Panel加入了很多Button,代码如下
ImageIcon icon = new ImageIcon( Editor.class.getClassLoader()
                 .getResource("data/icons/icon1.png"));
         JButton button1 = new JButton(icon);
         button1.setName("button1");
         Top.add(button1);后面还加了很多个按钮,现在问题出来了,由于上面的Scroll禁止了左右滚动,但是加入的button却从第一行开始不断的往后排列,如有左右滚动还可以拉过去看,禁止了之后后面加入的button就看不见了。我希望的效果是button从左到右排列,到了右边界之后就往下排列而非继续往后排列。以前直接将Top和Bottom加入SplitPane的时候就是这样,一行刚好两个button。
请问如何实现这样的效果???????请赐教。

解决方案 »

  1.   

    布局模式改下不要用flowlayout() 尝试其他布局 borderlayout() gridbaglayout()
    如果是可视化开发 改了布局 按钮放哪 还不是自己拖哪放哪吗?
      

  2.   

    才看了下关于布局模式的,大概明白了一些。我用了gridLayout模式。即Top.setLayout(new gridLayout(1000,2))。本来是想弄1000行2列的布局,但是出来的效果是所有的button(4个button)垂直排列,每个button从左到右沾满,为什么是这样?当然,如果设成gridLayout(2,2)就是从左到右从上到下的排列,但程序需要动态添加按钮的,所以行数必须设的比较大。
      

  3.   

    可视化不会啊。而且就我以前用VC做界面的经验,如果实现排列好了按钮,之后要动态添加可能就不怎么好办了。我程序需要动态添加的。现在就是我用了setLayout(new gridLayout(1000,2))之后,按钮全部按一列排列了,即:
    按钮1
    按钮2
    按钮3
    按钮4
    按钮5
    ……我希望的是所有的按钮按照从左到右从上到下每行两个按钮的方式排列,即是这样的:按钮1 按钮2
    按钮3 按钮4
    按钮5 按钮6
    ……
      

  4.   

    那再页面再加一个PANEL 把PANEL 的宽度 弄成两行的宽度 然后按钮就放在里面  布局就用默认的flowlayout,按钮放在这个PANEL上面 
      

  5.   

    这种方法我先前试过,不知道为什么不行。
    我用Top.setSize(width,height)函数设了大小,宽度无论设什么值,就是设成1,界面没有任何变化,依然横向排列按钮。
      

  6.   

    最主要的是,没有用JScrollPane的时候,直接用JPanel完全是正常的,两个一行的排列。
      

  7.   

    我觉得这个问题用静态的布局是解决不好的,除非根据按钮数量的多少,动态地改变布局,比如说动态地改变GridLayout的两个参数。另外,推荐一个比较强悍的布局GridBagLayout。
      

  8.   

    楼主看看这个可以不:
    import java.awt.*;
    import javax.swing.*;public class ceshi extends JFrame{

    public static void main(String[] args){
    JFrame f=new JFrame();
    //JButton b;
    JPanel p=new JPanel();
    p.setLayout(new GridLayout(10,2,4,4));
    for(int q=0;q<20;q++){
    p.add(new JButton(q+""));
    }
    f.add(p);

    f.setSize(500,500);
    f.setVisible(true);

    ceshi c=new ceshi();
    c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
      

  9.   

    不行啊,我就是用的GridLayout(1000,2)。行数都有1000了,但依然每排一个按钮,纵向排列,就是不知道这是为什么?
      

  10.   

    对了,这样还有个问题,因为我本身不确定要加多少按钮,可能按钮多了需要一个ScrollBar,所以我才把JPanel加到了JScrollPane里面