小编bla*_*ter的帖子

通过反思获得枚举的价值

我有一个这样的枚举:

public enum Mode{
  RUNNING("SytemRunning"),
  STOPPED("SystemStopped"),
  IDLE("tmpIdle");

  public static String key;

  private Mode(String key){
    this.key = key;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过反射来获取此枚举的键(SystemRunning,SystemStopped,tmpIdle):

Class<?> c = Class.forName("Mode");
Object[] objects = c.getEnumConstants();
// now this is not what I want, but almost
for(Object obj : objects){
  System.out.println("value : " + obj);
}
Run Code Online (Sandbox Code Playgroud)

输出是:RUNNING STOPPED IDLE

但是,我想要使用Strings SystemRunning,tmpIdle等.

非常感谢你提前.

java reflection enums

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

Javafx标题为动画片速度

有没有办法设置标题窗格的动画速度?我找不到任何东西.实际上有两个问题.第一:扩展的动画比内容本身的扩展更快.你看到圆圈比第二个标题窗格向下移动的条形略慢.

第二:如何改变它们的速度.我需要它们以相同的速度,因为它看起来很奇怪.

这是一个用于测试目的的小例子:包测试;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;

public class TestClass extends Application{

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {


    VBox vb = new VBox();


    {
    TitledPane tp = new TitledPane();
    System.out.println(tp.getContextMenu());
    tp.setContent(new Circle(100));
    tp.setText("asfadf");

    tp.expandedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {

                System.out.println("expand " + newValue);

        }
    });

    vb.getChildren().add(tp);
    } …
Run Code Online (Sandbox Code Playgroud)

animation javafx

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

在 javafx 中创建图像覆盖蒙版

我正在尝试做一件简单的事情。我有一个二值图像,我想要的只是将二值图像叠加在彩色图像上,但是二值图像中的白色像素应该是红色的,黑色像素应该是透明的。我已经习惯了 JavaFx,但我还是坚持使用这个。我知道我可以通过使用 PixelReader 迭代所有像素来实现它,但我确信有一种更简单的方法。我尝试使用某种混合效果,但到目前为止还没有成功。我认为它应该类似于: How to Blend Two Image in javaFX

我想要实现的目标的示例

我想出了这个: Image image = new Image("/circle.jpg", false); ImageView iv = new ImageView(图像);

Image mask = new Image("/mask.jpg", false);
ImageView ivMask = new ImageView(mask);

Rectangle r = new Rectangle(mask.getWidth(), mask.getHeight());
r.setFill(Color.RED);

r.setBlendMode(BlendMode.MULTIPLY); // sets the white area red

Group g = new Group(ivMask, r);   // sets the white area red


// this is not working as expected
iv.setBlendMode(BlendMode.DIFFERENCE);

Group g2 = new Group(iv, g);
Run Code Online (Sandbox Code Playgroud)

感谢您的任何建议!如果您认为逐像素处理比仅创建叠加层更快,请告诉我。

像素读取器的解决方案是:

Pane root = new …
Run Code Online (Sandbox Code Playgroud)

overlay javafx image mask imageview

4
推荐指数
1
解决办法
8315
查看次数

JavaFx按钮事件冒泡

我正在使用java8中的javafx开发一个项目.我集中了一个奇怪的情况:一个面板(类javafx.scene.layout.Pane)包含一个按钮(javafx.scene.control.Button)和另一个窗格.我希望鼠标点击的事件可以冒泡到父级.但是,只有在我点击窗格时才会出现这种情况,而单击按钮时则不会发生这种情况.下面是具有此行为的一个非常简单的示例的代码.有没有人有解决这个问题的建议?我知道我可以根据窗格创建自己的按钮..但这只是一个讨厌的解决方法.干杯

    package application;

    import javafx.animation.TranslateTransition;
    import javafx.application.Application;
    import javafx.event.Event;
    import javafx.event.EventHandler;
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.Pane;
    import javafx.util.Duration;


    public class Main extends Application {

        double curScale;


        @Override
        public void start(Stage primaryStage) {
            try {
                BorderPane root = new BorderPane();
                Scene scene = new Scene(root,400,400);
                scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());


                Button btn = new Button("test");
                btn.setLayoutX(50);
                Pane p2 = new Pane();
                p2.setPrefSize(20,20);
                p2.setStyle("-fx-background-color: #440000");
                Pane p = new Pane();
                p.getChildren().add(btn);
                p.getChildren().add(p2);

                root.setTop(p);

                p.setOnMouseClicked(new EventHandler<Event>() {

                    @Override …
Run Code Online (Sandbox Code Playgroud)

events javafx button pane

2
推荐指数
1
解决办法
5133
查看次数

标签 统计

javafx ×3

animation ×1

button ×1

enums ×1

events ×1

image ×1

imageview ×1

java ×1

mask ×1

overlay ×1

pane ×1

reflection ×1