我正在尝试学习Java并使用GUI作为升级到" booring" C \ C ++
我有两个面板,其中一个带有输入表单,其中一个带有一个表,用于显示我从输入表单加载的内容。
但不知道为什么,表扩展并有边框线,而且,它有一个固定的大小,每当我展开窗口时,表保持不变。
" mainFrame" (调用c&#tor;文件的文件)只是启动表格并将其添加到布局中,所以我确定它不会发生在那里......
我已经添加了JTable类代码和一张显示发生了什么的图片
如果链接显示太小,则显示链接:http://oi62.tinypic.com/ok4hs5.jpg
代码:
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class TableOutput extends JPanel {
private static final long serialVersionUID = 1L;
private JTable jt;
public TableOutput() {
String[] columns = {"Product ID" , "Date" , "Name" , "Address" , "Status"};
String[][] data = {};
jt = new JTable(data,columns);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane jsp = new JScrollPane(jt, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(jsp);
}
答案 0 :(得分:2)
但不知道为什么,表扩展并有边框线,而且,它有一个固定的大小
尺寸 - 执行System.out.println(table.getPreferredScrollableViewportSize())
。这是滚动窗格调用以获取表视图的首选大小的方法。您将看到默认值为450x400。您可以通过覆盖表格上的getPreferredScrollableViewportSize()
来更改它。
JTable table = new JTable() {
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(300, 300);
}
};
border - 这不是表格边框。它实际上是滚动窗格边框。
每当我展开窗口时,表格保持不变。
JPanel
具有默认FlowLayout
,它始终遵循所包含组件的首选大小。如果您希望使用面板拉伸表/滚动窗格,请使用BorderLayout
之类的布局管理器,它将忽略首选大小并拉伸以适合。请记住,如果面板包含在具有FlowLayout的容器中,您仍将获得当前结果。如果面板刚刚添加了默认BorderLayout
的框架,那么你应该没问题。请点击How to use Layout Managers
注意:您可能会发现,如果您要将布局设置为BorderLayout,则滚动窗格的首选大小将不起作用。这将留下相同的结果 - 表格会很大,有空行和边框。