【发布时间】:2015-09-02 08:34:15
【问题描述】:
我正在尝试使用 Java 布局管理器(我没有外部库,并且正在使用 Java 7)来创建一个布局,其中数据按行提供,其中行具有固定高度,但宽度填充以适合窗户。下面提供一个示例:
这个想法是我将在应用程序的整个运行过程中添加行,并且每一行都将简单地添加到底部列表中。如果在窗口中添加了太多行,则会出现一个滚动条(我已经对那个部分进行了排序)。
到目前为止,我的问题是,如果我对主 JPanel 使用 GridLayout,它将使行填充到整个窗口,并且随着添加更多行而使每行变小。我希望这样无论添加多少行,行高都将始终保持不变。
每一行由两列组成,它们的宽度应该相同。因此,为此我相信 GridLayout 会很好地工作,但我认为我需要将 GridLayout 添加到另一个基本上代表整行的面板。
我最好使用 Swing 布局管理器来实现所需的布局,但如果提出其他建议,那么我一定会研究它们。正如许多人似乎在我所看到的其他问题中发现的那样,Java 的布局管理器似乎在某些方面有点缺乏,不幸的是我无法判断什么时候缺乏我的知识,而不是语言本身。
【问题讨论】:
-
JTable......?您也可以查看GridBagLayout,但我可能会建议来自 SwingLabs 的VerticalLayout,SwingX library -
@MadProgrammer 我曾考虑过,但不确定以这种方式使用是否真的合适。因此,如果我要使用 JTable,我将有 2 列,然后继续添加行。那一点当然不会太麻烦,但是我需要任何有趣的 CellRenderers 实现等来确保行的内容正常工作吗?例如,我将使用的组件之一是 JTextArea,我是否需要做任何特别的事情来确保它正确显示和运行?
-
好吧,您不会将
JTextArea添加到JTable,而是在模型中管理文本。如果需要能够编辑值,那可能会使事情变得复杂。您将获得的好处是JTable已针对处理大量行进行了优化 -
“在我看到的其他问题中似乎有很多人发现,Java 的布局管理器在某些方面似乎有点欠缺”程序员对如何使用布局来实现跨平台的可靠 GUI 缺乏了解,但我只是偶尔看到您所指的内容。
-
@AndrewThompson 哈哈哈,这正是我的意思,我严重怀疑这是语言方面的无能。我见过,但正如你所说,这种情况非常罕见。
标签: java swing jpanel jscrollpane layout-manager