我有一个这样的枚举:
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等.
非常感谢你提前.
有没有办法设置标题窗格的动画速度?我找不到任何东西.实际上有两个问题.第一:扩展的动画比内容本身的扩展更快.你看到圆圈比第二个标题窗格向下移动的条形略慢.
第二:如何改变它们的速度.我需要它们以相同的速度,因为它看起来很奇怪.
这是一个用于测试目的的小例子:包测试;
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) 我正在尝试做一件简单的事情。我有一个二值图像,我想要的只是将二值图像叠加在彩色图像上,但是二值图像中的白色像素应该是红色的,黑色像素应该是透明的。我已经习惯了 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) 我正在使用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)