Tag: javafx 8

如何正确渲染3D图形

我试图在javafx制作一个rubiks立方体,结果是这个图像中给出的非常糟糕的模型。 我正在为此提供代码源代码,我使用RectangleBuilder类创建矩形并在3d中进行转换。 为了修复图形,我还尝试使用TriangleMesh类构建矩形,并在向它们添加材料后,将它们转换为3d,再次以相同的坏图形结束。 为什么会发生这种情况以及如何摆脱它? import javafx.scene.transform.Rotate; import javafx.scene.PerspectiveCamera; import javafx.scene.transform.Translate; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.SceneAntialiasing; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.RectangleBuilder; import javafx.scene.transform.Rotate; import javafx.util.Duration; public class NewFXMain1 extends Application { public class Cube extends Group […]

窗格形状修改

好吧,总而言之,我试图创建一种聊天/消息系统并需要一些帮助。 我正在尝试在容器上创建一个箭头,如下图所示。 图像从ControlsFX和PopOver窗口中取出。 我不能使用他们的popover小部件,因为它与我正在使用它的行为有点不稳定。 我继续创建了我自己的小聊天窗口弹出窗口,它将自己定位在我定义的父对象上,但我真的希望它有一个指向对象的箭头。 箭头也将始终面朝下,应位于弹出窗口的左下角。 还应该注意的是,弹出窗口不是一个窗口,它是一个用文本行填充的简单VBox。 如果需要的话,我当然可以将它包装在Pane中。 任何人都可以提出创建此箭头的正确方法吗? 我也把我的VBox背景作为渐变,所以箭头不能像通过getChildren()一样在底部,添加“相同颜色”,因为渐变会关闭。 它必须(某种程度上)是容器的一部分。 ================================================== =========================编辑: 好吧所以我今天花了大部分时间学习SVG Pathing,这不是太复杂但是有点单调乏味。 我最终走的路是: “M30 0 h100 a6,6 0 0,1 6,6 v50 a6,6 0 0,1 -6,6 h-88 L38 68 L34 62 h-4 a6,6 0 0,1 -6,-6 v-50 a6,6 0 0,1 6,-6 z” 现在唯一的问题是箭头尾部高度随着窗格的大小而增长。 例如,如果框中有很多文本,窗格会增加高度(当然),箭头也会变长。 这种行为不是一个彻底的交易破坏者,但它并不是我的意图。 我期望在路径中的资本Ls确保箭头的点数无论什么都保持不变,但它不起作用。 有什么想法吗?

如何在JavaFX8中禁用combobox弹出窗口的隐藏?

有没有办法不断显示combobox弹出窗口? 问题是关于datepicker,但它是combobox的后代。 我想调用combobox的show()方法然后不断显示它直到阶段关闭。 到目前为止最好的事情是 showingProperty().addListener({ ov, old, newValue -> if (!newValue) this.show() }) 它有点工作,但它隐藏弹出窗口然后显示它,这是不方便的。

使用SwingNode在JavaFX中显示VlcJ

FXMLController初始化方法: @FXML private VBox vbContainer; MediaPlayerVLC m_mediaPlayer; public void initialize(URL url, ResourceBundle rb) { final SwingNode swingNode = new SwingNode(); m_mediaPlayer = new MediaPlayerVLC(); createAndSetSwingContent(swingNode, m_mediaPlayer); vbContainer.getChildren().add(0, swingNode); } 而createAndSetSwingContent(): private void createAndSetSwingContent(final SwingNode swingNode, JComponent jComponent) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { swingNode.setContent(jComponent); } }); } MediaPlayerVLC类: package javafxswing; import javax.swing.JPanel; […]

如何在QuadCurve的“笔画”部分检测MouseClick?

我想检测QuadCurve上的鼠标点击事件,但只能检测“笔画”部分。 要清楚图像的绿色部分。 在这里,我使用红色填充值,但在我的应用程序中,我使用透明填充值。 因此,检测曲线可见部分的点击是至关重要的。 示例代码: import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.input.MouseEvent; import javafx.scene.shape.QuadCurve; import javafx.stage.Stage; public class QuadCurveMouseHandling extends Application { @Override public void start(Stage stage) throws Exception { QuadCurve curve = new QuadCurve(); curve.setStartX(10); curve.setStartY(10); curve.setControlX(50); curve.setControlY(250); curve.setEndX(300); curve.setEndY(300); curve.setStyle(“-fx-stroke-width: 7;-fx-stroke: green;-fx-fill: red;”); curve.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent […]

如何在snapToTicks == true时检索最终的Slider值?

我有以下JavaFX场景(请注意snapToTicks的设置): package com.example.javafx; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Slider; import javafx.stage.Stage; public class SliderExample extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { Slider slider = new Slider(0.25, 2.0, 1.0); slider.setShowTickLabels(true); slider.setShowTickMarks(true); slider.setMajorTickUnit(0.25); slider.setMinorTickCount(0); slider.setSnapToTicks(true); // !!!!!!!!!! Scene scene = new Scene(slider, 800, 600); primaryStage.setScene(scene); primaryStage.show(); } […]

如何在JavaFX中检测选项卡头的位置和大小

我还是javaFX的新手。 在我的代码中,我需要获取选项卡标题的位置和大小,但我找不到任何返回其大小或位置的属性或函数。

自定义ControlsFX通知

我想使用ControlsFX Notifications类,因为JavaFX似乎不提供类似的东西(或者它是什么?)。 对我来说,我希望能够自定义通知的颜色和其他一些样式。 有没有人知道我该怎么做? 编辑: 通过设置Notifications.owner(…) ,通知的样式与我的主应用程序的样式相同, 但它也会在主应用程序中显示,而不是在我的屏幕的右下角。

将映射的不同值导出到另一个ObservableList的ObservableList中?

我有一个有趣的问题,我对JavaFX相对较新,我需要创建一个有点利基的ObservableList实现。 本质上,我需要一个ObservableList来维护另一个ObservableList的映射派生值列表。 我需要创建一个ObservableDistinctList ,它接受另一个ObservableList和一个Function lambda作为它的构造函数参数。 ObservableDistinctList维护ObservableList每个元素的应用Function的不同值列表。 例如,假设我有以下实例的ObservableList flights 。 Flt # Carrier Orig Dest Dep Date 174 WN ABQ DAL 5/6/2015 4673 WN DAL HOU 5/6/2015 485 DL DAL PHX 5/7/2015 6758 UA JFK HOU 5/7/2015 如果我从每个Flight对象的载波值创建一个新的ObservableDistinctList,这就是我在客户端这样做的方法。 ObservableDistinctList distinctCarriers = new ObservableDistinctList(flights, f -> f.getCarrier()); 这些将是该distinctCarriers列表中的唯一值。 WN DL UA 如果航class被添加到flights ,它将首先检查在添加flights之前是否实际存在新的不同值。 因此,新的WN航class不会导致对distinctCarriers列表的添加,但AA航class将会增加。 相反,如果航class从flights删除,则需要检查其他实例是否会在删除之前保留该值。 从flights删除WN航class不会导致从distinctCarriers列表中删除WN ,但删除DL航class将导致其被删除。 […]

创建一个控件似乎打破了JFX8上的透明阶段

上面的程序应该创建一个带有一些文本的透明舞台,但是舞台看起来不透明: public class Test extends Application { @Override public void start(Stage primaryStage) { new TextArea(); //Comment this out to enable transparency Stage stage = new Stage(); stage.initStyle(StageStyle.TRANSPARENT); Text text = new Text(“Is this transparent?”); VBox box = new VBox(); box.getChildren().add(text); final Scene scene = new Scene(box, 300, 250); scene.setFill(null); stage.setScene(scene); stage.show(); } } new TextArea()行是破坏事物的东西 […]