NetBeans中的Java Swing滚动窗格
我有一个Java应用程序,它将JTextFields@runtime添加到JPanel。基本上用户点击一个按钮,新的JTextField被添加,再次点击添加
每个新的JTextField都直接位于前一个JTextField的下方。显然,我的空间很快就用完了,所以我尝试使用JScrollPane,这就是地狱的开始,因为无论我怎么尝试,它都不起作用
- 右键单击JPanel并将其包含在滚动窗格中。没用李>
- 在阅读了一些示例之后,我意识到我必须将JPanel作为JScrollPane构造函数的参数。我是通过右键单击滚动窗格和自定义代码来实现的。因为显然自动生成的代码在NetBeans中受到保护,我不能手动更改所有这些声明等等。还是不行李>
- 我确实尝试将JPanel和/或JScrollPane的PreferedSize设置为null,但没有帮助李>
- JScrollPane是我们称之为TabJPanel(它又是TabbedPane的一个选项卡)的子类。我试图搞乱他们之间的关系,基本上尝试了JFrame、JPanel(持有文本字段)、TabJPanel和JScrollPane之间所有可能的父子关系,但没有任何效果李>
- 我还制作了VerticalScrollBar“始终可见”,只是为了以防万一。所以我看到了滚动条,只是用JTextFields填充JPanel并不影响它李>
- 当有太多的JTextFields时,它们会“在”JPanel的底部边界之下,我再也看不到它们了李>
添加新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();
抱歉发了这么长的帖子,我只是想提供尽可能多的信息,因为作为一个新手,我不知道什么是完全相关的,什么是不相关的。提前感谢:)
# 1 楼答案
我这样做是为了添加一个滚动窗格,创建一个面板并用几个组件填充它,然后在您要添加的组件中创建一个滚动窗格,剪切并粘贴所有详细信息都位于其中的面板,并调整滚动窗格的大小。由于组件占用的空间比在滚动窗格上单击鼠标右键并选择“设计此容器”所占的空间大,因此您可以增加滚动窗格的大小并添加尽可能多的组件
# 2 楼答案
您可以选择使用LayoutManager,而不是直接在组件上设置边界。为了测试这一点,一个简单的单列GridLayout和对齐设置为垂直应该证明这个概念
rows
参数中的零允许根据需要将行添加到布局中# 3 楼答案
由于现在还有另一个答案,我也在补充我的建议
这听起来很像是一个问题,将
JTable
与单个列一起使用JList
是not yet editable(而且可能永远不会是)JTable
将为您处理布局问题,您可以通过表轻松访问值使用您自己的
TableModel
(在您的情况下,一个简单的Vector
就足够了),并为其添加值