大家好,我以前用的swt,做的这种效果,下面的是label标签,3行3列中国香港 是 中国人
中国台湾 是 中国人
纽约 是 外swing中应该用哪种布局管理器实现
1、null不行,除了null,因为每个label字数不确定
2、GridLayout不行, 因为列的宽度不相同
3、我用GridBagLayout实现的差不多了,可是效果如下:中国香港 是 中国人
中国台湾 是 中国人
纽约 是 外标签中的字是居中的,我要的效果是左对齐
中国台湾 是 中国人
纽约 是 外swing中应该用哪种布局管理器实现
1、null不行,除了null,因为每个label字数不确定
2、GridLayout不行, 因为列的宽度不相同
3、我用GridBagLayout实现的差不多了,可是效果如下:中国香港 是 中国人
中国台湾 是 中国人
纽约 是 外标签中的字是居中的,我要的效果是左对齐
答:标签中的字是左对齐,就用:jLabel.setHorizontalAlignment(JLabel.LEFT)不就行了。
比如,中国香港,这个标签就是4个汉字的长度,而纽约这个标签的长度就是中国香港的一半长,左对齐不起作用的
我加了这么一个属性
GridBagConstraints.fill = GridBagConstraints.BOTH;
然后再左对齐就可以了我以前用过swt,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();
}}