请问怎么给JPanel组件指定位置?
add(Component comp,int index),只能指定横向上的位置如果我想在一个JPanel中加好几个JButton 但不想全部放在一行。
请问怎么换行

解决方案 »

  1.   

    网格:panel名.setLayout(new GridLayout(a,b));//a是行 b是列
      

  2.   

    这么做只能尽量使其整齐点 swing 没有随便指定位置的方法吧 我也是刚学完这里
      

  3.   

    谢谢  但这样设置布局的话,我的JButton按钮变的好大一个 难看
      

  4.   

    或者能不能向JPanel中添加组件的时候换行?
    比如我有5个JButton  如果全部放在一行不好看
    能不能先add()3个然后换行,再add()2个?
    这样的话就比较好看了  谢谢
      

  5.   

    GridBagLayout, 学了这个基本都可以用了.
    JPanel panel = new JPanel();
    panel.add(new JButton("button1"), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
    panel.add(new JButton("button2"), new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
    panel.add(new JButton("button3"), new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
    panel.add(new JButton("button4"), new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
    panel.add(new JButton("button5"), new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));顺手写的代码, 有错误请调试一下.
    GridBagConstraints参数的意思(按照顺序):
    1: X坐标(0开始)
    2: Y坐标(0开始)
    3: 占据的X方向Cell个数
    4: 占据的Y方向Cell个数
    5: 横向扩展的比例
    6: 纵向扩展的比例
    7: 组件在所占区域中的位置, 9个位置.
    8: 组件是否拉伸(4个, 不拉伸, 横向, 纵向, 全部)
    9: 组件与所占区域边界的间隔, 象素
    10/11: 好像是组件的初始大小, 这2个我也不是太明白, 一般设置为04和5一般只有0.0或者1.0. 如果设置为0.0~1.0之间的值可能会引起面板尺寸变更时效果出现异常
      

  6.   

    Layout我自己认为一般需要熟练掌握3种: null, BorderLayout, GridBagLayoutnull就是XY定位, 这个不需要多说了.
    BorderLayout是东南西北中, 比较简单. 一般ToolBar都是BorderLayout.NORTH的, 呵呵.
    GridBagLayout, Swing的一大贡献. 熟练掌握基本没有不能画的.
      

  7.   

    至于FlowLayout(Panel默认的Layout), BoxLayout, CardLayout等等, 需要了解, 但不是经常有机会用到.
    比如ToolBar用的是BoxLayout, 而通常看到Wizard对话框多半是CardLayout.
      

  8.   

    本人觉得BoxLayout的效果跟GridBagLayout差不多,但用起来方便!而且GridBagLayout的代码换个LOOKANDFEEL就有可能报错,不通用
      

  9.   

    我也遇到了一个问题,就是一个登陆页面:Jrame做的。可是总是把里面的二组(标签+文本)分成两行???
      

  10.   

    相整齐的话放在GridLayout的表格里也行
      

  11.   

    你把layout设为null,你就可以自行布局了,想怎么排就怎么排!!
      

  12.   

    推荐一个很好的类AbsoluteConstraints
    http://www.koders.com/ 搜索一下就有。panel.setLayout(new AbsoluteLayout());
    panel.add(new Label("xxxxxx"), new AbsoluteConstraints(colpos, rowpos, width, height));
      

  13.   

    如上所示,使用gridbaglayout
      

  14.   

    方法太多了,不知道LZ要哪一种
    如果你要指定位置的话可以这样就可以了
    xxx.setBounds(new Rectangle(174, 170, 193, 98));
    很方便的,或者直接
    pPreview.setBounds(174, 170, 193, 98);
    只要指定(X,Y,WIDTH,HEIGHT).
      

  15.   

    GridBagLayout根本没有想象的那么好而且复杂 界面修改麻烦