我想在构造函数中调用此方法,以便我的程序可以根据jTable的大小和位置调整其文本字段。但是当我在构造函数中调用此方法时,没有任何反应。有人可以告诉我如何在程序启动时使这项工作?
每当用户尝试调整jTable列的大小时,我也想调用此方法。我怎么能这样做?
private void setTextFields() {
try {
cpono.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cpono.getSize().height);
cicode.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cicode.getSize().height);
cdesc.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cdesc.getSize().height);
cum.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cum.getSize().height);
ccost.setSize(grntable.getColumnModel().getColumn(0).getWidth(), ccost.getSize().height);
crqty.setSize(grntable.getColumnModel().getColumn(0).getWidth(), crqty.getSize().height);
cdisrate.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cdisrate.getSize().height);
csubtot.setSize(grntable.getColumnModel().getColumn(0).getWidth(), csubtot.getSize().height);
cdis.setSize(grntable.getColumnModel().getColumn(0).getWidth(), cdis.getSize().height);
ctot.setSize(grntable.getColumnModel().getColumn(0).getWidth(), ctot.getSize().height);
ccomments.setSize(grntable.getColumnModel().getColumn(0).getWidth(), ccomments.getSize().height);
cicode.setLocation((int) (cpono.getLocation().getX() + cpono.getSize().getWidth()), (int) cicode.getLocation().getY());
cdesc.setLocation((int) (cicode.getLocation().getX() + cicode.getSize().getWidth()), (int) cicode.getLocation().getY());
cum.setLocation((int) (cdesc.getLocation().getX() + cdesc.getSize().getWidth()), (int) cum.getLocation().getY());
ccost.setLocation((int) (cum.getLocation().getX() + cum.getSize().getWidth()), (int) ccost.getLocation().getY());
crqty.setLocation((int) (ccost.getLocation().getX() + ccost.getSize().getWidth()), (int) crqty.getLocation().getY());
cdisrate.setLocation((int) (crqty.getLocation().getX() + crqty.getSize().getWidth()), (int) cdisrate.getLocation().getY());
csubtot.setLocation((int) (cdisrate.getLocation().getX() + cdisrate.getSize().getWidth()), (int) csubtot.getLocation().getY());
cdis.setLocation((int) (csubtot.getLocation().getX() + csubtot.getSize().getWidth()), (int) cdis.getLocation().getY());
ctot.setLocation((int) (cdis.getLocation().getX() + cdis.getSize().getWidth()), (int) ctot.getLocation().getY());
ccomments.setLocation((int) (ctot.getLocation().getX() + ctot.getSize().getWidth()), (int) ccomments.getLocation().getY());
} catch (Exception e) {
JOptionPane.showMessageDialog(this, e, "Error", 0);
return;
}
}
答案 0 :(得分:0)
每当表的列调整大小时调用此方法, 首先将ColumnModeListener添加到JTable(比如jtable):
jtable.getColumnModel().addColumnModelListener()
然后在columnMarginChanged()方法中调用所需的方法(setTextFields)。 take a look at this page 对于问题的第一部分,请显示您在此处显示的片段之前的内容?