我有以下方法
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();
来自另一种方法(其他方法)
如何返回表格的所有列宽,以便我可以在其他方法中使用它们?
总体点是获取列宽度的值 然后刷新表模型。 获取值宽度将应用于表,以便用户不必再次调整列的大小。
答案 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 ;
,所以我评论了它。
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
。
这只是对于总宽度值,我没有意识到你想要每一个宽度的表。由于您已经知道该表有多少列,因此您可以根据需要使用数组。
// 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();
返回的数据类型