javafx:如何在集成演示中添加适当的侦听器?

萨沙

我是javafx的新手,并浏览了oracle提供的演示,尤其是我发现了这一点:

package ensemble.samples.graphics2d.images.imageoperator;
import javafx.application.Application;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class ImageOperationApp extends Application {
private SimpleDoubleProperty gridSize = new SimpleDoubleProperty(3.0);
private SimpleDoubleProperty hueFactor = new SimpleDoubleProperty(12.0);
private SimpleDoubleProperty hueOffset = new SimpleDoubleProperty(240.0);
private static void renderImage(WritableImage img, double gridSize, double hueFactor, double hueOffset) {
    PixelWriter pw = img.getPixelWriter();
    double w = img.getWidth();
    double h = img.getHeight();
    double xRatio = 0.0;
    double yRatio = 0.0;
    double hue = 0.0;

    for (int y = 0; y < h; y++) {
        for (int x = 0; x < w; x++) {
            xRatio = x/w;
            yRatio = y/h;
            hue = Math.sin(yRatio*(gridSize*Math.PI))*Math.sin(xRatio*(gridSize*Math.PI))*Math.tan(hueFactor/20.0)*360.0 + hueOffset;
            Color c = Color.hsb(hue, 1.0, 1.0);
            pw.setColor(x, y, c);
        }
    }
}
public Parent createContent() {
     StackPane root = new StackPane();
    final WritableImage img = new WritableImage(200, 200);
    gridSize.addListener((Observable observable) -> {
        renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
     });
    hueFactor.addListener((Observable observable) -> {
        renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
     });
    hueOffset.addListener((Observable observable) -> {
        renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
     });
    renderImage(img, 3.0, 12.0, 240.0);

    ImageView view = new ImageView(img);

     root.getChildren().add(view);

    return root;
}

@Override public void start(Stage primaryStage) throws Exception {
    primaryStage.setScene(new Scene(createContent()));
    primaryStage.show();
}

/** Java main for when running without JavaFX launcher
 * @param args command line arguments
 */
public static void main(String[] args) { launch(args); }
}

1.这是独立且可运行的。
2.与演示的容器应用程序相反,“ ensemle.jar”提供了一个“游乐场”,其中包含三个SimpleDoubleProperty的一些滑块,此处没有滑块。合奏屏幕截图
3.为了了解FX的事件处理如何工作(并享受这个不错的应用程序),我想添加适当的按键监听器来模仿滑块。

我不知道在哪里添加侦听器以及在哪里处理键盘触发的事件,但是我猜想,这里只缺少一些代码行。

编辑:如果有提示,我将很高兴,在哪里(以及如何)插入键侦听器,以便在控制台中键入“ Y”会给我一个“ HelloWorld”。我有信心自己做剩下的事。

纳什

像这样调整启动方法,每当按Y键时,您都会收到一条消息。

    @Override public void start(Stage primaryStage) throws Exception {
        Scene scene = new Scene(createContent());
        scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent event) {
                if(event.getCode()== KeyCode.Y){
                    System.out.println("got a Y");
                }
            }
        });
        primaryStage.setScene(scene);
        primaryStage.show();
    }

如果您想做其他事情,我建议您研究javadocs中setOn...适用于场景的所有-methods

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaFx Tableview,如何在同一工厂中添加侦听器并覆盖updateItem

如何在cameraX中添加侦听器以完成焦点

如何在Java中添加按钮侦听器?

如何在 EXTJS 中添加窗口方向侦听器?

如何在文档查看器中的“完成”按钮上添加侦听器

如何在Polymer中的自定义元素属性中添加事件侦听器?

如何在 GridView 中的 imageView 中添加单击侦听器?

如何以适当的方式将动作侦听器添加到JList?

如何在的IntelliJ插件添加事件侦听器?

如何在卡片视图中添加onTap侦听器

如何在JOptionPane的“确定”按钮上添加侦听器?

如何在日志侦听器中添加一些其他列?

如何在我的onClick处理程序中添加键盘侦听器?

如何在 Javascript 中添加带有 HTML 模板文字的事件侦听器?

如何在Hibernate JPA中添加可编程的实体侦听器

如何在IONIC2中添加标记单击侦听器?

如何在jquery的sweetalert对话框中为html按钮添加事件侦听器

如何在“自定义”对话框中添加广播组选中的侦听器

如何在类内的html中添加具有函数回调的事件侦听器?

如何在Ext JS的日历组件中添加侦听器?

如何在尚未在 DOM [no-jQuery] 中的元素上添加事件侦听器?

如何在Java中为多个组件添加多个侦听器

如何在 Outlook 任务窗格中添加约会项目的事件侦听器?

反应。如何在创建的侦听器中删除事件侦听器?

如何向 ReactJs 中的对象数组添加侦听器

如何添加侦听器以删除MongoDB中的函数?

侦听器JavaFX

Provider中的侦听器如何在Flutter中工作?

JavaFX中的AnchorPane侦听器