我用DesignGridLayout作为布局管理器写了一个简单的gui。
我有一个2个JTextFields,在它们下面是一个包含JTextArea的JScrollPane,在它下面我有一个按钮。
在最大化JFrame后,一切都很好地延伸到屏幕上。 当我尝试将Frame恢复为原始大小时,问题就出现了。 JScrollFrame 垂直大小仍然太大,并且没有显示Button,因为它被太大的Jscrollpane所覆盖。 手动调整大小的问题也是一样的。 JScrollPane根据拉伸的大小为它的垂直尺寸设置一个新值。
我尝试从Scrollable接口覆盖getScrollableTracksViewportHeight()方法,但它没有任何影响。另外,我把整个设置都放在了一个Jpanel中,我删除了它,但它仍然是一样的。
任何见解都将不胜感激。
编辑:添加了代码示例。
此代码创建了大部分Gui:
DesignGridLayout layout = new DesignGridLayout(frame);
layout.row().grid().empty().add(new JLabel("someText1"), someText1);
layout.row().grid().empty().add(new JLabel("someText2"), someText2);
layout.emptyRow();
layout.row().grid().add(new JSeparator());
layout.row().grid().empty().add(titleLabel).empty();
layout.row().grid().add(textarea("",5,6));
layout.row().grid().empty().add(button).empty();
此代码创建了JScrollPane:
private JScrollPane textarea(String content, int rows, int columns)
{
JTextArea textArea = new JTextArea(rows, columns);
JScrollPane scrollPane = new JScrollPane(textArea);
return scrollPane;
}