NetBeans中的Java Swing Jscrollpane

时间:2010-01-13 06:25:31

标签: java swing netbeans jscrollpane

我有Java应用程序,它将JTextFields @ runtime添加到JPanel。基本上用户点击一个按钮并添加新的JTextField,再次点击再次添加...

每个新的JTextField都直接位于前一个JTextField之下。显然我很快就用完了空间,所以我试图使用JScrollPane,这就是地狱的开始,因为无论我尝试什么,它都无法工作。

  1. 右键单击JPanel并在Scroll Pane中单击Enclose。没工作。
  2. 在阅读了一些例子后,我意识到我必须将JPanel作为JScrollPane构造函数的参数。我通过右键单击ScrollPane和CustomizeCode来做到这一点。因为显然自动生成的代码在NetBeans中受到保护,我不能手动更改所有这些声明等。仍然无法工作。
  3. 我确实尝试为JPanel和/或JScrollPane将PreferedSize设置为null,没有帮助。
  4. JScrollPane是一个让我们称之为TabJPanel的子项(它是TabbedPane的一个标签)。我试图弄乱他们的关系,基本上尝试JFrame,JPanel(持有文本字段),TabJPanel和JScrollPane之间的所有父母关系,但没有任何效果。
  5. 我也在一个案例中使VerticalScrollBar“始终可见”。所以我看到滚动条,只是填充JPanel与JTextFields不会影响它。
  6. 当JTextFields太多时,我们会在JPanel的底部边框“下面”,我再也看不到了它们。
  7. 添加新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();
    

    很抱歉,我只想提供尽可能多的信息,因为是新手我不知道什么是完全相关的,什么不是。在此先感谢:)

3 个答案:

答案 0 :(得分:2)

现在还有另一个答案,我也在添加我的建议。

使用单个列的JTable听起来完全是一个问题。 JListnot yet editable(可能永远不会)。

JTable会为您处理布局问题,您可以通过表格轻松访问这些值。

使用您自己的TableModel(在您的情况下,一个简单的Vector就足够了),并为其添加值。

答案 1 :(得分:0)

您拥有的选项是使用LayoutManager,而不是直接在组件上设置边界。为了测试这一点,将对齐设置为垂直的简单单列GridLayout证明了这一概念。

panel.setLayout(new GridLayout(0,1));
<{1}} param中的

允许根据需要将行添加到布局中。

答案 2 :(得分:0)

我这样做是为了添加一个滚动窗格,创建一个面板并用少量组件填充它,然后在要添加它的组件中创建一个滚动窗格,剪切并粘贴面板,其中包含所有细节,并调整大小由于组件占用的空间大于滚动窗格上可见的右键,并选择设计此容器,因此可以增加滚动窗格的大小并添加尽可能多的组件。