Java 是否可以将jdialog的维度设置为与放入其中的jtable的维度相等?

Java 是否可以将jdialog的维度设置为与放入其中的jtable的维度相等?,java,swing,Java,Swing,我有一个JDialog,里面有一个JTable,我想知道是否可以使用JTable维度而不是更多的空间来设置JDialog维度(宽度和高度)。例如,对话框的高度必须与放入其中的表的高度相同,没有可用空间。到目前为止,我已经使用setSize方法设置了对话框的维度,但是如果我的表的行没有完全占用所有空间,那么高度将有自由空间。我只想查看表占用的空间 JDialog d=new JDialog(); String columns[]={"Name","Surname","year of birth"}

我有一个JDialog,里面有一个JTable,我想知道是否可以使用JTable维度而不是更多的空间来设置JDialog维度(宽度和高度)。例如,对话框的高度必须与放入其中的表的高度相同,没有可用空间。到目前为止,我已经使用setSize方法设置了对话框的维度,但是如果我的表的行没有完全占用所有空间,那么高度将有自由空间。我只想查看表占用的空间

JDialog d=new JDialog();
String columns[]={"Name","Surname","year of birth"};
Object rows[][]={{"Mario","rossi","1992"}};
JTable t=new JTable(rows,columns);
d.setSize(200,200);
d.add(t);
d.setVisible(true);

在上面的代码中,我已经为d设置了一个特定的尺寸,但是这样的话,它的高度和宽度可能会超过更多的空间!!!有人可以帮我吗?

不要显式设置大小-添加所有组件后,通过调用
JDialog
上的
pack
让LayoutManager为您管理大小:

d.add(t);
d.pack();
d.setVisible(true);

不要显式设置大小-让LayoutManager在添加所有组件后通过调用
JDialog
上的
pack
为您管理大小:

d.add(t);
d.pack();
d.setVisible(true);
简短的回答是否定的(或者不完全否定)。装饰过的窗口还具有窗口边框和其他“装饰”,这将始终使窗口比内容更大

您必须使用的最佳解决方案是使用
JDialog#pack
,它将围绕内容的首选大小打包框架

您还应该知道,在布局管理器控制下的组件上使用
setSize
是毫无意义的。有关更多详细信息,请参阅

JDialog d=new JDialog();
String columns[]={"Name","Surname","year of birth"};
Object rows[][]={{"Mario","rossi","1992"}};
JTable t=new JTable(rows,columns);
table.setPreferredScrollableViewportSize(new Dimension(200, 200));
d.add(new JScrollPane(t));
d.pack();
d.setVisible(true);
简短的回答是否定的(或者不完全否定)。装饰过的窗口还具有窗口边框和其他“装饰”,这将始终使窗口比内容更大

您必须使用的最佳解决方案是使用
JDialog#pack
,它将围绕内容的首选大小打包框架

您还应该知道,在布局管理器控制的组件上使用
setSize
是毫无意义的。有关更多详细信息,请参阅

JDialog d=new JDialog();
String columns[]={"Name","Surname","year of birth"};
Object rows[][]={{"Mario","rossi","1992"}};
JTable t=new JTable(rows,columns);
table.setPreferredScrollableViewportSize(new Dimension(200, 200));
d.add(new JScrollPane(t));
d.pack();
d.setVisible(true);

伟大的很有效,非常感谢!!!为了使对话框适合表格的精确高度,我已经用t.getRowHeight()*rows.length设置了对象维度的高度值!!!伟大的很有效,非常感谢!!!为了使对话框适合表格的精确高度,我已经用t.getRowHeight()*rows.length设置了对象维度的高度值!!!