javafx如何带菜单

最近,在我的一个项目中,我发现用户很难看到ScrollPane实例的内容当前是否已滚动。 一种更清晰的方法是在滚动窗格的顶部添加阴影。

这也是Google的Material Design建议的。 所以我尝试了一下。 在我的解决方案中,我只是向ScrollPane添加了一个区域,并在对其进行布局时将其移出ScrollPane的视口边界,因此只有应用于该区域的阴影效果仍可以到达该区域。

为了真正确保该区域不可见,我还必须在ScrollPane上设置一个剪辑。 尽管我必须承认我不是100%确信这是实现此目标的最佳方法,但它的效果很好。 因此,如果有人有任何建议/替代方法,请发表评论。

在下面您将看到滚动应用程序屏幕之一的屏幕截图之前和之后的内容。

滚动之前

滚动后

顺便说一句:我实现了这种方式,使阴影不会突然出现,而是逐步移入视口,具体取决于用户滚动了多远。 要查看此内容,您需要非常缓慢地向下滚动。

ShadowScrollPane的代码可以在GitHub的以下要点中找到:

package uk.co.senapt.desktop.shell;import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.Region;
import javafx.scene.shape.Rectangle;/*** Created by lemmi on 23.08.17.*/
public class ShadowScrollPane extends ScrollPane {private Region shadow = new Region();public ShadowScrollPane() {super();init();}public ShadowScrollPane(Node content) {super(content);init();}private void init() {skinProperty().addListener(it -> {getChildren().addAll(shadow);});setFitToWidth(true);setVbarPolicy(ScrollBarPolicy.NEVER);setHbarPolicy(ScrollBarPolicy.NEVER);shadow.setManaged(false);shadow.setStyle("-fx-pref-height: 10;" +"-fx-background-color: black;" +"-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, .75), 20, 0.19, 0, 6);");shadow.getStyleClass().add("shadow");shadow.visibleProperty().bind(showShadowProperty());shadow.setMouseTransparent(true);shadow.visibleProperty().bind(vvalueProperty().greaterThan(0));Rectangle clip = new Rectangle();clip.widthProperty().bind(widthProperty());clip.heightProperty().bind(heightProperty());setClip(clip);vvalueProperty().addListener(it -> {if (lastOffset != computeOffset()) {requestLayout();}});showShadowProperty().addListener(it -> requestLayout());}private final BooleanProperty showShadow = new SimpleBooleanProperty(this, "showShadow", true);public final BooleanProperty showShadowProperty() {return showShadow;}public final boolean isShowShadow() {return showShadow.get();}public final void setShowShadow(boolean show) {showShadow.set(show);}private final int SHADOW_HEIGHT = 30;@Overrideprotected void layoutChildren() {super.layoutChildren();if (isShowShadow()) {Insets insets = getInsets();double w = getWidth();double offset = computeOffset();shadow.resizeRelocate(-10, insets.getTop() - shadow.prefHeight(-1) - SHADOW_HEIGHT + offset, w + 20, shadow.prefHeight(-1) - 1);lastOffset = offset;}}private double lastOffset = 0;private double computeOffset() {if (getContent() != null) {return Math.min(getVvalue() * getContent().prefHeight(-1), SHADOW_HEIGHT);}return 0;}
}

翻译自: https://www.javacodegeeks.com/2018/06/javafx-scrollpane-dropshadow.html

javafx如何带菜单

javafx如何带菜单_JavaFX技巧30:带有DropShadow的ScrollPane相关推荐

  1. JavaFX技巧30:带有DropShadow的ScrollPane

    最近,在我的一个项目中,我发现用户很难看到ScrollPane实例的内容当前是否已滚动. 一种更清晰的方法是在滚动窗格的顶部添加阴影. 这也是Google的Material Design建议的. 所以 ...

  2. javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点

    javafx查找子节点 在我仍在Swing中实现UI的时候,我曾经是MigLayout的忠实拥护者("一个布局管理者来统治所有这些,对吗Mikael?"). 我真正喜欢的功能之一是 ...

  3. javafx 表格列拖拉_JavaFX技巧22:“自动调整大小(树)”表列

    javafx 表格列拖拉 JavaFX "缺少功能调查"中提到的"缺少功能"的第一件事就是能够自动调整表/树表中的列大小. 没错,没有公共API是正确的,但是当 ...

  4. javafx中css选择器_JavaFX技巧12:在CSS中定义图标

    javafx中css选择器 当您是像我这样来自Swing的UI开发人员时,您很有可能仍在代码中直接设置图像/图标. 最可能是这样的: import javafx.scene.control.Label ...

  5. ProE 应用技巧30则

    2006-04-19 08:11:49 ProE 应用技巧30则 作者:snapspgk11 出处:snapspgk11 1.将PRO/E的图形放到word文档里 方法一:先在Pro/E中在线框模式( ...

  6. javafx 图片作按钮_JavaFX 按钮

    JavaFX教程 - JavaFX按钮 当用户单击按钮时,JavaFX Button类可以触发事件. Button类扩展标记的类,它可以显示文本,图像,或两者兼而有之. 以下代码显示了如何向Butto ...

  7. 纯Java JavaFX 2.0菜单

    在有关JavaFX的最新文章中 ,我集中讨论了不使用JavaFX 1.x的JavaFXScript和不使用JavaFX 2.0的新FXML来使用JavaFX 2.0的新Java API . 所有这些示 ...

  8. 小程序直播带货系统优势—直播带货的技巧

    微信小程序拥有触手可及.无需下载.随时可用等优势,成为了企业不可或缺的工具.去年也是直播的元年,直播平台数量爆炸式的增长,很多人也在想:微信什么时候做直播呢?微信这次推出小程序,给企业创造许多新的机会 ...

  9. Mac 自带拼音输入法技巧

    偶然发现一些山狮系统自带输入法的技巧,纪录一下. 1.无论你在英文输入法中还是中文输入法中,如果想输入大写字母,可以使用shfit +(字母). 2.在你是使用简体拼音时可以使用 Shift + 6 ...

最新文章

  1. Ubuntu基础知识
  2. 数据结构实验之链表六:有序链表的建立
  3. PAT_B_1082_C++(20分)
  4. python3函数调用时间_Python3 time clock()方法
  5. 谁来代替博客园——寄生博客
  6. Struts+DAO框架搭建完成!(源码)
  7. poj2513Colored Sticks(无向图的欧拉回路)
  8. sharpssh远程linux监控系统,利用SharpSsh远程执行linux的shell命令
  9. python standardscaler_Python快速实战机器学习之数据预处理
  10. 鸿蒙安装elasticsearch7,安装操作系统_岁寒,然后知松柏之后凋也的技术博客_51CTO博客...
  11. 双指放大_便携超小手机显微镜1000倍放大!让你玩转微观世界,惊艳朋友圈
  12. Rational AppScan 标准版可扩展性和二次开发能力简介
  13. sql like不包括_SQL Like – SQL不喜欢
  14. Windows设置调节音量的快捷键
  15. 四川农业大学计算机考研调剂,四川农业大学调剂基本条件
  16. Android8内测申请,微信8.0.6 for android内测版上线,附内测体验入口
  17. 览书记之汽车电子信息技术
  18. 使用WebRTC搭建前端视频聊天室——点对点通信篇
  19. 苹果x来电闪光灯怎么设置_手机上使用的记事备忘便签软件怎么设置来电提醒功能?...
  20. (二)TCP客户端/服务器通信------select函数

热门文章

  1. 牛客网【每日一题】4月14日题目精讲 Xorto
  2. [HNOIAHOI2018] 转盘(线段树维护单调栈)
  3. YBROJ洛谷P3211:XOR和路径(线性基,期望dp)
  4. P6624-[省选联考2020A卷]作业题【矩阵树定理,欧拉反演】
  5. P3329-[ZJOI2011]最小割【最小割树】
  6. P3193-[HNOI2008]GT考试【KMP,dp,矩阵乘法】
  7. 牛客国庆集训派对day6TJ-DefenseTower【贪心】
  8. POJ2406-Power Strings【KMP】
  9. ssl2661-廉价最短路径【SPFA】
  10. 奶牛的交叉路(jzoj 1756)