当前位置: 首页 > 知识库问答 >
问题:

Codename一次滚动ComponentGroup+手风琴+切换按钮

赖绪
2023-03-14

我有一个表单(带有一个boxlayout.y),它嵌套了ComponentGroup+手风琴+切换按钮。当用户展开手风琴(在ComponentGroup中)时,切换按钮列表(在手风琴中)很长,它不适合屏幕。

我的问题是如何在所有窗体中启用滚动。

下面的代码是代码结构的示例。实际代码是由我编写的复杂解析器生成的,该解析器从json输入自动生成UI:

Form hi = new Form("Hi World", BoxLayout.y());

// Warning: you need to set the theme property "ComponentGroupBool" to true
Button button1 = new Button("Button 1", "ButtonMenuCategories");
CheckBox button11 = CheckBox.createToggle("Button 1.1");
CheckBox button12 = CheckBox.createToggle("Button 1.2");
Button button13 = new Button("Button 1.3", "ButtonMenuCategories");
CheckBox button131 = CheckBox.createToggle("Button 1.3.1");
CheckBox button132 = CheckBox.createToggle("Button 1.3.2");
CheckBox button133 = CheckBox.createToggle("Button 1.3.3");
CheckBox button14 = CheckBox.createToggle("Button 1.4");
Button button2 = new Button("Button 2", "ButtonMenuCategories");
Button button3 = new Button("Button 3", "ButtonMenuCategories");
Button button4 = new Button("Button 4", "ButtonMenuCategories");
Button button5 = new Button("Button 5", "ButtonMenuCategories");

Accordion accordion13 = new Accordion();
accordion13.addContent(button13, FlowLayout.encloseCenter(ComponentGroup.enclose(button131, button132, button133)));
Accordion accordion1 = new Accordion();
accordion1.addContent(button1, FlowLayout.encloseCenter(ComponentGroup.enclose(button11, button12, accordion13, button14)));
Accordion accordion2 = new Accordion();
accordion2.addContent(button2, new Label("Hello"));
Accordion accordion3 = new Accordion();
accordion3.addContent(button3, new Label("Hello"));
Accordion accordion4 = new Accordion();
accordion4.addContent(button4, new Label("Hello"));
Accordion accordion5 = new Accordion();
accordion5.addContent(button5, new Label("Hello"));

Container menu = FlowLayout.encloseCenter(ComponentGroup.enclose(accordion1, accordion2, accordion3, accordion4, accordion5));

hi.add(menu);
hi.show(); 

共有1个答案

陶宜民
2023-03-14

默认情况下,窗体内容窗格是可滚动的,除非您使用setscrollabley(false)显式禁用它。当您设置borderlayout时,这也是隐式地为您完成的。由于您使用了BoxLayout表单的内容是可滚动的(大多数情况下应该是这样)。

但是,accordion也是可滚动的,这意味着您有两个嵌套的可滚动组件。我很难想象你在这里看到/感受到了什么,但有一个明显的错误,你错过了:

accordion13.setScrollableY(false);
accordion1.setScrollableY(false);
accordion2.setScrollableY(false);
//... etc ...
 类似资料:
  • 我有一架手风琴很好用。我在想办法搜索手风琴的所有襟翼: 使用jQuery手风琴时在页面(Ctrl+F)上查找字符串 我已经在一个链接上使用了destroy方法,然后在另一个链接上重新初始化,但它将是伟大的切换这个与一个按钮。((我本来在这里问这个问题没有这个解决方案,所以下面的答案就是这样,看有没有更好的解决方案出来,我才会接受)) 我还能够用jQuery切换整个手风琴,但这只会使整个东西消失。我

  • 手风琴效果其实就是通过JS改变元素的height,然后加上transition来让css动起来。 准备HTML结构 这里我们使用 dl , 因为 dt 刚好可以模拟标题, dd 模拟内容。 <div class="panel"> <dl> <dt>One Item</dt> <dd>One Item Content .</dd>

  • https://codepen.io/sabgalaxy/pen/xwjxgwy

  • 我正在使用jQuery手风琴来隐藏一些数据。 accordion标题是一个带有一些标题的表格。有一个标题,我不希望你点击它,因为手风琴事件会触发。 所以 手风琴是可折叠的,如果您单击Test2(类nofunction),手风琴事件不应触发。但是如果您单击Test或其他表头,手风琴应该会触发事件。 我可以添加这个功能吗? 更新测试http://jsfiddle.net/e3Q8d/,包括jQuery

  • 我有一个非常好的手风琴,它在网站上看起来很好,并且可以正常工作。但是,我正在尝试为其添加更多JavaScript功能,以使其看起来更专业。 目前,手风琴允许您一次打开多个面板,即如果我打开一个选项卡,然后打开另一个选项卡,两个选项卡将同时打开。关闭这些面板的唯一方法是重新单击标题。 我想要的是一些防止同时打开多个选项卡的JavaScript代码,所以如果我单击一个新面板,它应该首先关闭现有的打开面

  • jQueryUI中的Accordion Widget是一个基于jQuery的可扩展和可折叠内容持有者,它被分成几个部分,可能看起来像标签。 jQueryUI提供了accordion()方法来实现这一点。 语法 (Syntax) accordion()方法可以使用两种形式 - $(selector,context).accordion(options)方法 $(selector, context).