小编CAG*_*nzo的帖子

JavaFX - 使用正确的滚动方向向ScrollPane添加节点

我的场景中有一个ScrollPane,想要添加一系列节点.确切的数量必须是动态的.我一直在使用Label节点测试这个概念,并且可以根据我想要的内容成功添加ScrollPane(目前是VBox)的内容.

我的问题是弄清楚如何允许用户正常滚动完整的节点ScrollPane.内容与滚动条匹配; 也就是说,当我向下滚动时,内容向下移动.我向上滚动,内容向上滚动.因此,如果我有10个标签,其中只有五个当前可见,那么看到其他五个标签的本能行动就是向下滚动.不幸的是,这只是将整个内容向下移动,将空白区域暴露在顶部并隐藏更多标签.

如果有帮助,我可以发布一些示例代码,但我的攻击计划的要点是:

ScrollPane sp = new ScrollPane();
VBox content = new VBox();
sp.setContent(content);
for (int i = 0; i < 10; i++)
{
    Label label = new Label("Label " + i);
    content.setPrefHeight(content.getPrefHeight() + label.getPrefHeight());
    content.getChildren().add(label);
}
Run Code Online (Sandbox Code Playgroud)

因为我使用的是VBox,所以标签被堆叠在一起(在Y轴上),这就是我想要的.随着更多标签的添加,ScrollBar需要反映增加的VBox大小.我已经尝试了一些方法来实现这一点,包括ScrollPane.setVmax()方法,这没关系,但我仍然有滚动方向的问题将内容移动到错误的方向.我也尝试过EventHandler并相应EventFilter地修改值,仍然没有解决滚动问题,没有向正确的方向移动内容.

答案看起来很简单,但即使经过很长时间搞乱代码,它仍然会让我躲避.

编辑:

jewelsea建议使用ListView解决我的问题.但是,我仍然很好奇为什么使用一个ScrollPane没有这么好的票价.另外,我在实现中遇到了奇怪的行为ListView:我使用一个按钮手动Label向视图添加新内容.经常会在添加新视图后冻结视图Label.在更新滚动位置或显示新添加的位置之前,它会锁定几秒钟Label.我不知道这是不是因为大约有20个左右的Label实例被视图管理,或者是否有更多阴险的东西在起作用.

scrollpane javafx-2

6
推荐指数
1
解决办法
1万
查看次数

从 Java 访问 Mac OS X 应用程序菜单

我正在编写一个专为所有平台设计的 Java 应用程序,但具体来说,我正在研究 OS X 外观和集成(我在我的 MacBook Pro 上使用 NetBeans)。我想访问应用程序的菜单,即以应用程序命名的粗体菜单。我想为 About 和 Quit 项目注册侦听器,并显示 Preferences 项目。我也不介意添加更多我自己的项目。

那么,我该怎么做呢?我看过以前的帖子提到 OSXAdapter,但 Apple 的天才们决定将它从他们的库中删除(或重命名不明确),因为所有链接都重定向到主页,而我所有的搜索都没有结果。我还看到了一个MacOSAppAdapter类,但我不确定如何使用它。所有导入和新的类和层次结构都有些令人困惑。

编辑:

这是我为与 About、Preferences 和 Quit 项目相关联所做的工作:

我创建了一个新类 MacOSXAboutHandler,它扩展了

com.apple.eawt.Application
Run Code Online (Sandbox Code Playgroud)

它的构造函数简单地调用

setAboutHandler(AboutHandler aH)
Run Code Online (Sandbox Code Playgroud)

我为它提供了我自己的监听器,它扩展了

AboutHandler
Run Code Online (Sandbox Code Playgroud)

在我的主课中,我确定我是否在 Mac 上使用

System.getProperty("os.name").contains("mac")
Run Code Online (Sandbox Code Playgroud)

如果这是真的,那么我只需创建一个 MacOSXAboutHandler 的新实例。构造函数添加我的处理程序,并且每当应用程序运行(甚至在 NetBeans 中测试)时,单击应用程序粗体菜单上的 About... 项都会执行我在 AboutHandler 中指定的代码。

对首选项和退出也是如此,只需用适当的操作替换出现的“about”。所有这些处理程序都像任何其他 Java 侦听器一样编写。

java macos menu

5
推荐指数
1
解决办法
2912
查看次数

标签 统计

java ×1

javafx-2 ×1

macos ×1

menu ×1

scrollpane ×1