Я пытаюсь мигать ярлыком и изображением в JavaFX
.
Как это сделать в JavaFX
?Как моргнуть текст или изображение в Javafx с помощью стиля CSS в приложении Desktop?
Я новичок в этой платформе, дайте мне руководство.
Я пытаюсь мигать ярлыком и изображением в JavaFX
.
Как это сделать в JavaFX
?Как моргнуть текст или изображение в Javafx с помощью стиля CSS в приложении Desktop?
Я новичок в этой платформе, дайте мне руководство.
Возможно, вы захотите обратиться к этому similar thread, он содержит подробный ответ на ваш вопрос.
Я взял выше справки Я разработал простой пример. Ниже Мой FXML файл:
FxmlDocument.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" prefHeight="283.0" prefWidth="320" stylesheets="@application.css" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="blinkimagecolor.FXMLDocumentController">
<children>
<Label fx:id="label" alignment="CENTER" layoutX="40.0" layoutY="36.0" prefHeight="131.0" prefWidth="232.0" style="-fx-background-image: url('/images/Printer_T.png'); -fx-background-position: center; -fx-background-repeat: no-repeat;" stylesheets="@application.css" />
<Button fx:id="button" layoutX="134.0" layoutY="209.0" mnemonicParsing="false" onAction="#buttonpressAction" text="Button" />
</children>
</AnchorPane>
Ниже Мой класс контроллера:
FXMLDocumentController.java:-
import java.net.URL;
import java.time.Duration;
import java.util.ResourceBundle;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.css.PseudoClass;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
@FXML
private Button button;
Timeline flasher ;
PseudoClass flashHighlight;
int i = 0;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
flashHighlight = PseudoClass.getPseudoClass("flash-highlight");
flasher = new Timeline(new KeyFrame(javafx.util.Duration.seconds(0.5), e -> {
label.pseudoClassStateChanged(flashHighlight, true);
}),
new KeyFrame(javafx.util.Duration.seconds(1.0), e -> {
label.pseudoClassStateChanged(flashHighlight, false);
})
);
flasher.setCycleCount(Animation.INDEFINITE);
}
@FXML
private void buttonpressAction(ActionEvent event) {
if(i == 0){
flasher.play();
i = 1;
System.out.println("start method");
}else{
flasher.stop();
i = 0;
System.out.println("stop method");
label.pseudoClassStateChanged(flashHighlight, false);
}
System.out.println("Out of button function");
}
}
И Ниже один мой основной класс:
public class BlinkImageColor extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
и файл CSS является:
application.css:-
:flash-highlight{
-fx-background-color:red;
}
Th я работаю нормально, но если я хочу применить одно и то же к нескольким раза, то как я могу это сделать, не разбивая несколько строк? Timeline menas Как я могу использовать одну и ту же временную шкалу для нескольких ярлыков одновременно с независимо.
Это один будет работать, когда мы нажимаем на кнопку цвет фона собирается мигать красным цветом, а если нажать на ту же кнопку, что будет остановить мигающий цвет.
Как и выше, если у нас есть несколько кнопок и несколько меток, они должны работать независимо, как, например, нажатием кнопки. с общими Временная шкала. Как мы можем сделать это?
по вашему ответу Я разработал простое приложение, но у меня есть некоторые сомнения, которые я опубликовал ниже. Ответ, связанный с этим, дает мне несколько советов о том, как это сделать. – pen1993