我有Java应用程序,它将JTextFields @ runtime添加到JPanel。基本上用户点击一个按钮并添加新的JTextField,再次点击再次添加...
每个新的JTextField都直接位于前一个JTextField之下。显然我很快就用完了空间,所以我试图使用JScrollPane,这就是地狱的开始,因为无论我尝试什么,它都无法工作。
添加新JTextFields的代码就是这样,在相关的情况下。
JTextField newField = new JTextField( columns );
Rectangle coordinates = previousTextField.getBounds();
newField.setBounds(coordinates.x , coordinates.y + 50, coordinates.width, coordinates.height);
JPanel.add(newField);
JPanel.revalidate();
JPanel.repaint();
很抱歉,我只想提供尽可能多的信息,因为是新手我不知道什么是完全相关的,什么不是。在此先感谢:)
答案 0 :(得分:2)
现在还有另一个答案,我也在添加我的建议。
使用单个列的JTable
听起来完全是一个问题。 JList
是not yet editable(可能永远不会)。
JTable
会为您处理布局问题,您可以通过表格轻松访问这些值。
使用您自己的TableModel
(在您的情况下,一个简单的Vector
就足够了),并为其添加值。
答案 1 :(得分:0)
您拥有的选项是使用LayoutManager,而不是直接在组件上设置边界。为了测试这一点,将对齐设置为垂直的简单单列GridLayout证明了这一概念。
panel.setLayout(new GridLayout(0,1));
<{1}} param中的允许根据需要将行添加到布局中。
答案 2 :(得分:0)
我这样做是为了添加一个滚动窗格,创建一个面板并用少量组件填充它,然后在要添加它的组件中创建一个滚动窗格,剪切并粘贴面板,其中包含所有细节,并调整大小由于组件占用的空间大于滚动窗格上可见的右键,并选择设计此容器,因此可以增加滚动窗格的大小并添加尽可能多的组件。