我有一个JDialog放在其中的JDialog,我想知道是否可以使用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,它将围绕内容的首选大小包装框架。

您还应该知道,在受布局管理器控制的组件上使用setSize毫无意义。有关更多详细信息,请参见Laying Out Components Within a Container

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);

关于java - 是否可以将jdialog的尺寸设置为与放入其中的jtable的尺寸相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30585225/

10-10 03:24