java中如何确定表的列宽_java – 设置3个表的不同单元格宽度

我有3张相同形式的表,但它们有不同的号码.列我想为每个表设置不同的列宽.我可以在下面的代码中获得它,或者我必须创建3个不同的类扩展表,然后设置不同的约束宽度?通过这样做,我写了三次相同的代码,我不想这样做.

protected void beforeReport(Form f){

Table table=new MyTable(new DefaultTableModel(columnNamesInOut,dataInOut));

Table tablePunishment=new MyTable(new DefaultTableModel(columnNamesPunishment,dataPunishment));

Table tableAccident=new MyTable(new DefaultTableModel(columnNamesAccident,dataAccident));

}

public class MyTable extends Table {

public MyTable(TableModel tm) {

super(tm, true);

}

public Component createCell(Object value, int row, int col, boolean editable) {

Component component = null;

if (value instanceof Vector) {

Container c = new Container(new BoxLayout(BoxLayout.Y_AXIS));

Iterator i = ((Vector) value).iterator();

while (i.hasNext()) {

c.addComponent(new Label(i.next().toString()));

}

component = c;

} else {

component = super.createCell(value, row, col, editable);

}

return component;

}

@Override

protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {

TableLayout.Constraint constraint = ((TableLayout) this.getLayout()).createConstraint();

constraint.setVerticalAlign(CENTER);

addComponent(constraint);

switch (column) {

case 0: {

constraint.setWidthPercentage(25);

break;

}

case 1: {

constraint.setWidthPercentage(25);

break;

}

case 2: {

constraint.setWidthPercentage(25);

break;

}

case 3: {

constraint.setWidthPercentage(25);

break;

}

}

return constraint;

}

}

最佳答案 如果您希望所有列的宽度相同,您可以执行以下操作:

protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {

TableLayout.Constraint constraint = ((TableLayout) this.getLayout()).createConstraint();

constraint.setVerticalAlign(CENTER);

addComponent(constraint);

constraint.setWidthPercentage(100 / getModel().getColumnCount());

...

}

否则你可以使用以下行中的新构造函数:

public class MyTable extends Table {

private int[] widths;

public MyTable(TableModel tm, int... widths) {

super(tm, true);

this.widths = widths;

}

然后你可以在createCell中执行此操作:

constraint.setWidthPercentage(widths[column]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值