我有一个Form(带有BoxLayout.y),它嵌套了ComponentGroup + Accordions + Toggle Buttons。当用户展开Accordions(在ComponentGroup内)时,Toggle Buttons列表(在Accordions中)很长,并且它不适合屏幕。
问题是Form(由ComponentGroup + Accordions + Toggle Buttons占用)是不可滚动的,我想因为触摸的含义含糊不清(可能是为了选择列表的项目或做滚动)。但是,我想在用户'请注意,不存在真正的歧义:如果用户进行简单的点击,那么他/她正在选择一个项目;如果用户点击然后移动手指而不停止敲击,则他/她正在尝试滚动。我想这是用户预期的行为。介意...否则,如果主要ComponentGroup占据了所有屏幕,则滚动变得不可能(这是我的情况)。
目前,我发现了一个部分不满意的解决方案,在主要ComponentGroup中添加了几毫米的填充,因此屏幕边框上的空间很少,无法进行滚动。但是它并不直观,因为用户通常希望能够在表单的任何位置滚动。
我的问题是如何在所有表单中启用滚动。
以下代码是代码结构的示例。实际代码由我编写的复杂解析器生成,该解析器从json输入自动生成UI:
USS_reports[] <- lapply(USS_reports, as.numeric)
答案 0 :(得分:1)
默认情况下,Form
内容窗格是可滚动的,除非您使用setScrollableY(false)
明确禁用它。设置BorderLayout
时,也会隐式为您执行此操作。由于您使用了BoxLayout
,Form
的内容是可滚动的(在大多数情况下应该是这样)。
但是,Accordion
也是可滚动的,这意味着您有两个嵌套的可滚动组件。我很难想象你在这里看到/感受到的东西,但有一个明显的错误,你错过了:
accordion13.setScrollableY(false);
accordion1.setScrollableY(false);
accordion2.setScrollableY(false);
//... etc ...