大家好,我以前用的swt,做的这种效果,下面的是label标签,3行3列中国香港 是 中国人
中国台湾 是 中国人
纽约     是 外
swing中应该用哪种布局管理器实现
1、null不行,除了null,因为每个label字数不确定
2、GridLayout不行, 因为列的宽度不相同
3、我用GridBagLayout实现的差不多了,可是效果如下:中国香港 是 中国人
中国台湾 是 中国人
  纽约   是   外
标签中的字是居中的,我要的效果是左对齐

解决方案 »

  1.   

    标签中的字是居中的,我要的效果是左对齐?
    答:标签中的字是左对齐,就用:jLabel.setHorizontalAlignment(JLabel.LEFT)不就行了。
      

  2.   

    楼上的 如果用GridBagLayout的话,标签的长度和字体的长度是一样的,这样的话左对齐就没用了
    比如,中国香港,这个标签就是4个汉字的长度,而纽约这个标签的长度就是中国香港的一半长,左对齐不起作用的
      

  3.   

    Swing的东西在JDK API里可以查到啊,楼主都不愿翻下?
      

  4.   

    我是楼主楼上的 如果用GridBagLayout的话,标签的长度和字体的长度是一样的,这样的话左对齐就没用了 比如,中国香港,这个标签就是4个汉字的长度,而纽约这个标签的长度就是中国香港的一半长,左对齐不起作用的
      

  5.   

    我是楼主
    我加了这么一个属性
    GridBagConstraints.fill = GridBagConstraints.BOTH;
    然后再左对齐就可以了我以前用过swt,swing没怎么用过,布局管理器两者差别还是挺大的
    大家还有没有什么好的办法,继续哈.........
      

  6.   

    答:当然可以的啦。你运行一下我的如下示例程序,它就是你想要的效果。import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Test1 extends JFrame { private Container cp=null;
    private GridBagConstraints gc=new GridBagConstraints();
    private GridBagLayout gbag=new GridBagLayout();

     protected void makeJLabel(String name,
                 GridBagLayout gridbag,
                 GridBagConstraints c) 
     {
         JLabel jl = new JLabel(name,JLabel.LEFT);
         gridbag.setConstraints(jl, c);
         cp.add(jl);
         }
    public Test1(){
    cp=this.getContentPane();
    cp.setLayout(gbag);
    gc.fill=GridBagConstraints.HORIZONTAL;
    gc.ipadx=10;
    gc.gridwidth = GridBagConstraints.RELATIVE;
    makeJLabel("中国香港",gbag,gc);
    makeJLabel("是",gbag,gc);
    gc.gridwidth=GridBagConstraints.REMAINDER;
    makeJLabel("中国人",gbag,gc);

    gc.gridwidth = GridBagConstraints.RELATIVE;
    makeJLabel("中国台湾",gbag,gc);
    makeJLabel("是",gbag,gc);
    gc.gridwidth=GridBagConstraints.REMAINDER;
    makeJLabel("中国人",gbag,gc);

    gc.gridwidth = GridBagConstraints.RELATIVE;
    makeJLabel("纽约",gbag,gc);
    makeJLabel("是",gbag,gc);
    gc.gridwidth=GridBagConstraints.REMAINDER;
    makeJLabel("外",gbag,gc);


    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400,300);
    this.setVisible(true);

    }
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    new Test1();
    }}