当前位置: 首页 > 面试题库 >

JScrollPane中组件的面向列的布局

吕征
2023-03-14
问题内容

我正在开发我的第一个Swing应用程序,并且遇到了有关对话框窗口的布局问题,该对话框窗口是我为用户创建的,以便在某些字段中输入值。由于显示的字段数根据用户的选择而有所不同,因此我在对话框中使用了JScrollPane,将其视口设置为要添加字段组件的面板。

对于要显示的每个字段,我创建并添加三个组件:

  1. “字段名称”标签
  2. 字段组件(通常是JTextField,但也可以是JComboBox或JDateChooser控件)
  3. “字段类型”标签

名称标签:| _ _ | (串)

name2label:| __ | (数)

这三个组件的长度都可以变化,因此我面临的挑战是找到一种布局这些组件的整洁方法。我一直在做的是将主窗格的布局管理器设置为使用y轴的BoxLayout(即,它垂直放置组件)。然后,我为每个字段创建一个窗格,为该窗格设置布局管理器,然后将所有三个字段组件添加到该窗格。我已经为单个窗格尝试了FlowLayout和BoxLayout,而这两个布局管理器都遇到了问题。

我将FlowLayout管理器设置为使用左对齐,但是由于组件的长度不同,这导致了弯曲的列布局。我将BoxLayout设置为使用X轴(即,水平放置东西),但是组件的居中结果导致每个组件之间的间距很大。在使用单个窗格之前​​,我尝试使用GridLayout,但是我始终无法获得它来满足我的三列要求,从而导致字段被分成几行。我也简短地看了一篇有关GroupLayout管理器的文章,但它看起来很吓人:)

有没有人对如何以简洁,紧凑的方式在JScrollPane中布置长度可变的三个组件的不同数量的行有任何建议?提前致谢…

谢尔顿·R。


问题答案:

这是一个普遍的问题:MiGLayout是一个不错的选择。可替换地,BoxLayout示出了在这里,并且Group Layout被示出在这里。



 类似资料:
  • 看看我的代码,有谁能告诉我,我如何在滚动窗格的右侧换行文本区域,以及如何将它们左对齐?

  • 问题内容: 我有一个,其内容窗格为。为此,我添加了较小的,并且如预期的那样,如果添加太多,则会出现一个垂直滚动条。 问题是,我的小s包含一个过了。我想使用鼠标滚轮 仅 用于滚动面板外,而不是较小的滚动窗格。我已经设定到为小滚动面板,但如果我朝任意方向滚动,以及鼠标越过,滚动不工作了。 有什么建议吗? 问题答案: 您可以尝试将滚轮事件从内部滚动窗格转发到其父级。

  • 问题内容: 我正在尝试向JTable中的特定列添加滚动功能。我已经实现了一个自定义的TableCellRenderer组件,并且可以看到表中的滚动窗格很好,但是我无法滚动它。我也尝试实现TableCellEditor,但没有任何运气。 有谁知道如何使包含scrollPane的单元格可滚动? 问题答案: 使用TableCellRenderer不可能添加任何滚动行为,因为它不接收任何事件,仅绘制组件。

  • 问题内容: 我扩展了JScrollPane并向其中添加了几个组件。当我将滚动窗格添加到JFrame时,不显示任何组件。如果我的类扩展了(例如,JPanel),然后将其添加到独立的JScrollPane中,则一切正常。我无法理解这种行为。谁能解释我,为什么会发生? 这是两种变体(一种有效,一种无效): 此变体不起作用: 这个很好用: 问题答案: 您可能不需要或不想扩展JScrollPane,但是无论

  • 问题内容: 我想知道你们是否有问题,例如您是否有一些自己的东西,并且您的面板中使用了很多s和他们自己的s,是否存在上/下滚动面板的问题? 我的意思是,当你的鼠标是一些表的口,然后的是听上滚动,所以,当我得到很多的I我能够滚动只在面板的几个地方,它是如此讨厌… 当滚动未显示时,是否有一些函数会将我的滚动事件发送给父级?我的意思是我想在某些不需要使用滚动条的情况下禁用它(当它被隐藏时,因为记录太少了)

  • 问题内容: 我在表单上有一个和一个按钮。该按钮将组件添加到中。我正在使用FlowLayout居中对齐来将内 的组件进行排列。 第一个组件没有出现问题,并且对齐正确。当我再次按下按钮时,似乎什么也没有发生。当我跟随调试器时,它表明一切都与以前完全一样。 单击按钮时正在执行的代码: 这就是我在上设置的方式: 问题答案: 您正在混合重量(AWT)组件和轻量(Swing) 组件,这是不可取的,因为它们往往