【发布时间】:2009-08-08 12:09:44
【问题描述】:
我有一个复杂的问题,我在任何地方都找不到答案。
这是一个例子:
public static void main(final String[] args) {
final JFrame frame = new JFrame("test");
final JPanel bigPane = new JPanel(new GridLayout(0, 1));
frame.setContentPane(new JScrollPane(bigPane, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
bigPane.add(new JTextField("reterterter ertertrert erterter ert"));
bigPane.add(new JTextField(" ertertrert erterter ert"));
bigPane.add(new JTextField("reterterter ertertrert ert"));
bigPane.add(new JTextField("reterterter ertertrert erterter "));
frame.pack();
frame.setSize(frame.getSize().width/2, frame.getSize().height);
frame.setVisible(true);
}
在这里,显然文本字段已被剪切。更准确地说,bigPane 被剪切。但我希望调整文本字段的大小而不是剪切,所以我们仍然可以使用它们。
由于禁止出现水平滚动条,我希望布局忘记视图(bigPane)的首选宽度,并始终强制视图的宽度与视口的宽度相匹配。就像水平方向没有虚拟视口一样,只有垂直方向。
我找不到解决方案,甚至没有破解,如果你能帮忙的话。
尼科。
PS:看起来 ViewportLayout 的代码不包含任何代码
PS2 : 这是上面代码http://www.nraynaud.com/kilombo/testLayout.png 的结果的上限,见右侧。
【问题讨论】:
-
“我想剪切文本字段中的文本”是什么意思?你想限制文本的长度吗?
-
这就是我想要的:nraynaud.com/kilombo/textcut.png(我通过移除滚动窗格来做到这一点)这是我得到和不想要的:nraynaud.com/kilombo/textfieldcut.png 使得文本字段无法使用。
-
我不明白对这两个答案的反对票。他们都做你想做的事。
-
不是真的,因为它们是狭窄的黑客,在现实生活中我的列中有其他组件,我希望能够在某些情况下使用首选大小等。我转换了点数,因为,在我的示例的确切情况下,它们有效。但这几乎不是一个解决方案。
-
“在我的示例的确切情况下,它们有效。但这几乎不是一个解决方案” - 嗯。如果您要鼓励人们提供帮助,那么对可行的解决方案投反对票并不是一个好主意!