在构造函数中调用此方法,但没有任何反应?

时间:2014-02-12 14:40:27

标签: java methods

我想在构造函数中调用此方法,以便我的程序可以根据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;
    }
}

1 个答案:

答案 0 :(得分:0)

每当表的列调整大小时调用此方法, 首先将ColumnModeListener添加到JTable(比如jtable):

jtable.getColumnModel().addColumnModelListener()

然后在columnMarginChanged()方法中调用所需的方法(setTextFields)。 take a look at this page 对于问题的第一部分,请显示您在此处显示的片段之前的内容?