将值返回给我调用它的方法

时间:2016-01-07 20:31:53

标签: java return

我有以下方法

private void gettablewidths() {
   JTableHeader th = tableR.getTableHeader();
   TableColumnModel tcm = th.getColumnModel();
   for(int x = 0, y = tcm.getColumnCount(); x < y; x++)
       {
        TableColumn tc = tcm.getColumn(x);
        double header = (double) tc.getHeaderValue();
        System.out.println("Column name = "+tc.getHeaderValue()+", width = "+tc.getWidth());
        return  ;
    }
 }

调用
gettablewidths();

来自另一种方法(其他方法)

如何返回表格的所有列宽,以便我可以在其他方法中使用它们?

总体点是获取列宽度的值 然后刷新表模型。 获取值宽度将应用于表,以便用户不必再次调整列的大小。

3 个答案:

答案 0 :(得分:2)

  tc.getWidth()  //returns an int

在循环外创建一个整数的arraylist,并将tc.getWidth()的结果添加到循环内的arraylist中:

List<Integer> list = new ArrayList<>();

for(int x = 0, y = tcm.getColumnCount(); x < y; x++)
    {
        tc = tcm.getColumn(x);
        list.add(tc.getWidth());
    }

第2部分 -   用另一种方法返回你的arraylist

更改您的方法返回类型,以便返回您的arraylist:

public ArrayList<Integer> gettablewidths(){

// logic.....
return ArrayList;
}

答案 1 :(得分:1)

我假设列的宽度是int值。在您调用getTableWidths();的类中,您应该设置一个等于它的整数,例如int width = getTableWidths(); 你的方法应该是这样的。但是,我很困惑为什么你在循环中调用return ;,所以我评论了它。

getTableWidths()

private int getTableWidths() 
{
    int totalWidth = 0; // This is what you'll return as the width
    JTableHeader th = tableR.getTableHeader();
    TableColumnModel tcm = th.getColumnModel();
    for(int x = 0, y = tcm.getColumnCount(); x < y; x++)
    {
        TableColumn tc = tcm.getColumn(x);
        double header = (double) tc.getHeaderValue();
        System.out.println("Column name = " + tc.getHeaderValue() + ", width = " + tc.getWidth());
        // return  ;
        totalWidth += tc.getWidth();
    }
    return totalWidth;
}

要将其更改为返回double,只需将其中的所有int定义(除了for循环中)设置为double

这只是对于总宽度值,我没有意识到你想要每一个宽度的表。由于您已经知道该表有多少列,因此您可以根据需要使用数组。

getTableWidths()// return integer array

private int[] getTableWidths() 
    {
        int[] widths; // This is what you'll return as the width
        JTableHeader th = tableR.getTableHeader();
        TableColumnModel tcm = th.getColumnModel();
        widths = new int[tcm.getColumnCount()];
        for(int x = 0, y = tcm.getColumnCount(); x < y; x++)
        {
            TableColumn tc = tcm.getColumn(x);
            double header = (double) tc.getHeaderValue();
            System.out.println("Column name = " + tc.getHeaderValue() + ", width = " + tc.getWidth());
            // return  ;
            widths[x] = tc.getWidth();
        }
        return widths;
    }

答案 2 :(得分:-1)

将返回类型从void更改为要将权重返回的类型。

在new方法中,使其参数为gettablewidths();

返回的数据类型