我在java项目的JFXPanel中有一个JavaFX ScrollPane。这个项目将在触摸显示器没有键盘,所以我需要模拟一个触摸屏滚动。
问题是;如果我在ScrollPane中拖动鼠标,它工作得很好,但如果我在有按钮的地方拖动鼠标,它就不能滚动(想法是ScrollPane将充满按钮,它们之间没有空格)。
private static Scene createScene(int wS, int hS) {
ScrollPane scrollPane = new ScrollPane();
FlowPane flowpane = new FlowPane();
scrollPane.setCache(true);
scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
scrollPane.setPannable(true);
for(int i=0; i<100; i++)
flowpane.getChildren().add((new ButtonProduct(wS, "Apple " + (i+1)));
scrollPane.setContent(flowpane);
Scene scene = new Scene(scrollPane);
return (scene);
}
public ButtonProduct(int wS, String t) {
this.setText(t);
this.setMinSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setPrefSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setMaxSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Dragged Button");
e.consume();
}
});
}
我找到了答案,这是ScrollPane中按钮(节点)的代码。但是您需要恢复Button事件以获得更好的性能,这在下一段代码中没有得到开发。
import javax.swing.*;
import java.awt.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.control.ScrollPane;
public class ButtonProduct extends Button {
private static double sizeW = .075;
//Constructor
public ButtonProduct(ScrollPane sC, int wS, String t) {
this.setText(t);
this.setMinSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setPrefSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setMaxSize((int) (wS*sizeW), (int) (wS*sizeW));
this.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
((Button) e.getSource()).setEventDispatcher(sC.getEventDispatcher());
sC.requestFocus();
e.consume();
}
});
}
}
我使用ScrollPane,因为它内置了输入和抛出处理。我有一个滚动轮的图像,分为14个部分,滚动窗格本身是两个部分较短,以便将有一个部分在右侧和左侧,它可以滚动到任何一个方向。一旦滚动位置到达任何一个方向的末端,我想将滚动位置重置回中心。一遍又一遍地这样做应该会产生一个无限滚动轮的幻觉(希望如此)。 我遇到的问题是如何在代码中定位滚动窗格以重置图像,一旦它到达任何一端。到目前为止,我没有尝试设置
我想知道是否有任何“简单”的方法,我可以设置垂直滚动条“滚动”一个特定的数量,按下按钮,或真正的任何事件在所有。 例如,我有一个应用程序,它有一个侧栏,侧栏上的一个选项是设置。Settings有子项,我想添加点击其中一个子项的功能,它将打开Settings页面,并自动向下滚动到该子项所在页面上的特定点。
问题内容: 我正在尝试获取有关标准中包含的组件的信息。特别是我对阅读水平书感兴趣。我该如何引用? 问题答案: 由于上述方法并不适合所有人(包括我),因此我对其进行了更多调查,并找到了问题的根源。 一般而言,这两种方法都可以使用,但是只有在设置了的属性后才能使用。就我而言,仍然是在使用加载视图后仍然存在。 通过在属性未初始化的情况下延迟调用(使用单次侦听器)可以解决此问题。 工作样板代码:
我在JavaFX应用程序上使用ScrollPane。Scrollpane以TilePane作为其内容,显示了数千个瓷砖。敲击太慢了。如何增加滚动窗格的滚动?谢了。
嗨,有没有什么方法可以提高滚动速度。我找到了一些解决方案,但都不适合我。这就是我尝试的: 或者使用css: 还有别的办法吗?编辑:上面的解决方案都不起作用,我试图使用大得离谱的数字,但滚动速度还是一样
问题内容: 我在ScrollPane中有一个Label。我正在循环中更新标签(在另一个线程中)。如果用户未将ScrollPane保持在某个位置,如何更新ScrollPane使其向下滚动(而不是横向滚动,这将手动完成)?是否有二传手? 问题答案: @数学谢谢,这工作! 我用这部分代码解决了“必须看标签”的问题