小编Skj*_*alg的帖子

缩放JavaFx:当内容大小超过ScrollPane视口时,将使用ScrollEvent

我有一个需要在ScrollPane中放大的应用程序,但是按照我目前的方法,我仍然面临着两个挑战.为了复制问题,我编写了一个小应用程序ZoomApp,您将找到下面的代码.它的有限功能允许在某些任意形状上放大和缩小(使用Ctrl +鼠标滚轮).当缩放的内容超出窗口范围时,滚动条应该显示.

挑战1.内部组缩小尺寸时出现滚动条时,ScrollEvent不再到达我的ZoomHandler.相反,我们开始向下滚动窗口,直到它到达底部,当再次缩放按预期工作时.我想也许吧

scrollPane.setPannable(false);
Run Code Online (Sandbox Code Playgroud)

会有所作为,但没有.如何避免这种不良行为?

挑战2. 我将如何去到中心innerGroup滚动窗格内,不诉诸画一个像素的左上角innerGroup与所需三角洲平方?

作为旁注,根据JavaDoc for ScrollPane:"如果应用程序希望滚动基于节点的可视边界(对于缩放内容等),则需要将滚动节点包装在一个组中".这就是为什么我在ScrollPane中有一个innerGroup 一个outerGroup的原因.

这个JavaFX新手非常赞赏任何指导我解决方案的建议.

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.SceneBuilder;
import javafx.scene.control.ScrollPane;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

/**
 * Demo of a challenge I have with zooming inside a {@code ScrollPane}.
 * <br>
 * I am running JavaFx 2.2 on a Mac. {@code java -version} yields:
 * <pre> …
Run Code Online (Sandbox Code Playgroud)

center zoom scrollpane javafx-2

9
推荐指数
1
解决办法
8261
查看次数

使用ONE JavaFX 8 DatePicker选择句点或日期

在我目前正在使用的应用程序上,有必要从同一JavaFX 8 DatePicker中选择一个日期或句点.

这样做的首选方法如下:

  1. 选择单个日期 - 与DatePicker的默认行为相同.

  2. 选择句点 - 按住鼠标按钮选择开始/结束日期,然后拖动到所需的结束/开始日期.释放鼠标按钮后,您已定义了期间.您无法选择除显示日期之外的日期这一事实是可以接受的.

  3. 编辑应适用于单日期(2014年12月24日)和期间(例如:2014年12月24日 - 2014年12月27日)

上面所选时间段(减去文本编辑器的内容)的可能呈现方式如下所示:

选定期间的渲染

其中橙色表示当前日期,蓝色表示选定的时间段.图片来自我制作的原型,但是使用2个DatePickers而不是一个来选择周期.

我看了一下源代码

com.sun.javafx.scene.control.skin.DatePickerContent
Run Code Online (Sandbox Code Playgroud)

有一个

protected List<DateCell> dayCells = new ArrayList<DateCell>();
Run Code Online (Sandbox Code Playgroud)

为了找到一种方法来检测当鼠标被释放时(或者可能检测到拖动)鼠标选择日期结束的时间.

但是我不太清楚如何去做.有什么建议?

我附上了我迄今为止所做的简单原型代码(使用2而不是所需的1个日期选择器).

原型到目前为止

import java.time.LocalDate;

import javafx.beans.property.SimpleObjectProperty;

public interface PeriodController {

    /**
     * @return Today.
     */
    LocalDate currentDate();

    /**
     * @return Selected from date.
     */
    SimpleObjectProperty<LocalDate> fromDateProperty();

    /**
     * @return Selected to date.
     */
    SimpleObjectProperty<LocalDate> toDateProperty();
}


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

import javafx.util.StringConverter;

public class DateConverter extends StringConverter<LocalDate> {

    private DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); // TODO …
Run Code Online (Sandbox Code Playgroud)

datepicker java-8 javafx-8

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

标签 统计

center ×1

datepicker ×1

java-8 ×1

javafx-2 ×1

javafx-8 ×1

scrollpane ×1

zoom ×1