gpt4 book ai didi

Java Swing : SpringLayout within BorderLayout

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:24 25 4
gpt4 key购买 nike

我的 GridLayout 遇到问题,JTextField 会变宽以适应比初始大小长的条目。另一位遇到此问题的发帖者被告知 SpringLayout 是最简单的解决方案,所以这就是我正在尝试的。然而,我在让这个面板显示时遇到问题。

我有顶部、底部、左侧和右侧面板,每个面板都有不同的布局,这些布局设置在顶级面板(此框架中唯一的面板)中。我尝试的这个 SpringLayout 位于右侧面板中(作为 topPanel.add(springPanel, BorderLayout.EAST 添加到顶部面板 - 当此面板是 GridLayout 时我就是这样做的)。下面的代码是根据 SpringLayout Oracle 教程建模的。抱歉,我是这个布局的新手,仅使用它来为 JTextField 使用固定宽度。

JPanel testPanel = new JPanel();
SpringLayout layout = new SpringLayout();
testPanel.setLayout(layout);
JLabel label = new JLabel("First field: ");
JTextField field = new JTextField("enter text");

testPanel.add(label);
testPanel.add(field);

layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, testPanel);
layout.putConstraint(SpringLayout.NORTH, label, 5, SpringLayout.NORTH, testPanel);
layout.putConstraint(SpringLayout.WEST, field, 5, SpringLayout.EAST, label);
layout.putConstraint(SpringLayout.NORTH, field, 5, SpringLayout.NORTH, testPanel);

...

topPanel.add(testPanel, BorderLayout.EAST);

任何指导将不胜感激。谢谢。

编辑:添加 cols 参数似乎不起作用,但我会继续尝试。 GridBagLayout 也存在同样的问题。按 T​​ab 键切换到下一个字段不会重新调整前一个字段的大小,但在框架中其他位置的这些字段之外单击会导致其扩展其包含文本的长度,这是我需要避免的。而且我没有足够的代表来发布我正在做的事情的图片

EDIT2:添加列有效 - 我在某个时候尝试过。不完全确定它是如何工作的,但任何值(测试的 1、10、15)似乎都会固定长度,因此保留该面板的焦点不再导致尺寸变化。谢谢!

最佳答案

@Andrew Thompson 的答案有效 - 使用 col arg 指定列数(任何数字似乎都可以)。谢谢!

关于Java Swing : SpringLayout within BorderLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com