相关疑难解决方法(0)

JavaFX正确缩放

我想在滚动事件上缩放窗格中的所有节点.

到目前为止我尝试了什么:

  1. 当我执行scaleX或scaleY时,窗格的边框分别缩放(在设置窗格样式时看到-fx-border-color: black;).因此,如果我不是从窗格的边界开始,并非每个事件都会启动,所以我需要它.在此输入图像描述

  2. 下一步我试图扩展每个节点,结果非常糟糕,就像这样 - (通过点延伸的线条).或者如果在另一侧滚动,则会更少在此输入图像描述

  3. 我尝试的另一种方法是缩放Node的点.它更好,但我不喜欢它.它看起来 point.setScaleX(point.getScaleX()+scaleX)和y和其他节点适当.

javafx scale

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

缩放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
查看次数

在JavaFX和ScrollPanes中进行缩放

我一直在尝试使用JavaFX中的缩放变换,但还没有完全绕过它.基本上,我有一个包含复杂图形的窗格,并希望能够重新缩放它.缩放部分本身工作正常,但是封闭的滚动窗格将不适应图形.

为简单起见,我将发布一个简短的示例,其中我的图形被标签替换:

public class TestApp extends Application {
    @Override public void start(final Stage stage) throws Exception {
        final Label label = new Label("Hello World");
        label.getTransforms().setAll(new Scale(0.5, 0.5));

        label.setStyle("-fx-background-color:blue");
        label.setFont(new Font(200));

        final ScrollPane scrollPane = new ScrollPane();
        scrollPane.setContent(label);

        stage.setScene(new Scene(scrollPane));
        stage.setWidth(200);
        stage.setHeight(100);
        stage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
} 
Run Code Online (Sandbox Code Playgroud)

标签将正确缩放,但封闭的滚动窗格的条仍然可以容纳原始大小的组件.

我到目前为止尝试过:

  • 玩标签min和pref大小
  • 将标签包装在一个组内(不会出现任何滚动条)
  • 缩放封闭的组而不是标签

我错过了什么?如何使ScrollPane适应内容视图?

谢谢你的帮助.

javafx-2

7
推荐指数
2
解决办法
8825
查看次数

JavaFX 8动态节点缩放

我正在尝试实现一个场景,ScrollPane用户可以在其中拖动节点并动态缩放它.我使用鼠标滚轮进行拖动和缩放以及重置缩放,但是我在计算上遇到问题以使节点适合父节点的宽度.

这是我的代码作为sscce.

  1. (工作)鼠标滚轮将放大和缩小鼠标指针
  2. (有效)按住鼠标左键或右键拖动矩形
  3. (有效)左键双击以重置缩放
  4. (不起作用)右键双击以适合宽度

如果我放大或缩小或更改窗口大小,适合宽度不起作用.

如果有人可以帮助我进行计算以使节点符合父节点的宽度,我将非常感激.

编辑:

  • 我标记了无法正常工作的方法.它是fitWidth(),通过鼠标右键双击调用.
  • 为了清晰和重点,我编辑了问题的文本

希望现在更清楚了.

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.StrokeType;
import javafx.stage.Stage;
import javafx.util.Duration;

public class ZoomAndPanExample extends Application {

    private ScrollPane scrollPane = new ScrollPane();

    private final DoubleProperty zoomProperty = new SimpleDoubleProperty(1.0d);
    private …
Run Code Online (Sandbox Code Playgroud)

scaling zooming javafx-8

7
推荐指数
1
解决办法
1236
查看次数

标签 统计

javafx-2 ×2

center ×1

javafx ×1

javafx-8 ×1

scale ×1

scaling ×1

scrollpane ×1

zoom ×1

zooming ×1