Im Rahmen der Veranstaltung "CS3330 - Projektpraktikum MedizinischeInformatik" an der Universität zu Lübeck entstandenes Krankenhausinformationssystem (KIS).
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

83 行
2.3 KiB

  1. package de.uniluebeck.mi.projmi6.view;
  2. import javafx.animation.FadeTransition;
  3. import javafx.animation.Timeline;
  4. import javafx.animation.Transition;
  5. import javafx.beans.binding.Bindings;
  6. import javafx.beans.property.SimpleIntegerProperty;
  7. import javafx.geometry.Pos;
  8. import javafx.scene.control.Button;
  9. import javafx.scene.control.Label;
  10. import javafx.scene.image.Image;
  11. import javafx.scene.image.ImageView;
  12. import javafx.scene.layout.StackPane;
  13. import javafx.scene.paint.Color;
  14. import javafx.util.Duration;
  15. /**
  16. * Created by Johannes on 21/11/2015.
  17. */
  18. public class MessageIcon extends Button {
  19. private ImageView imageView;
  20. private Label messageCountLabel;
  21. private final SimpleIntegerProperty messageCount = new SimpleIntegerProperty(this, "messageCount", 0);
  22. FadeTransition transition;
  23. public MessageIcon(){
  24. imageView = new ImageView(new Image("message.png"));
  25. imageView.setFitHeight(30);
  26. imageView.setFitWidth(30);
  27. /* imageView.opacityProperty().bind(Bindings.createDoubleBinding(
  28. ()->messageCount.get()>0? 1.0 : 0.5, messageCount));*/
  29. messageCountLabel = new Label();
  30. messageCountLabel.textProperty().bind(messageCount.asString());
  31. StackPane.setAlignment(messageCountLabel, Pos.BOTTOM_RIGHT);
  32. messageCountLabel.setTextFill(Color.BLACK);
  33. this.disableProperty().bind(messageCount.lessThanOrEqualTo(0));
  34. StackPane graphic = new StackPane(imageView, messageCountLabel);
  35. this.setGraphic(graphic);
  36. initTransition();
  37. }
  38. private void initTransition(){
  39. transition = new FadeTransition(Duration.millis(500), imageView);
  40. transition.setFromValue(0.5);
  41. transition.setToValue(1.0);
  42. transition.setCycleCount(Timeline.INDEFINITE);
  43. transition.setAutoReverse(true);
  44. messageCount.addListener((observable, oldValue, newValue) -> {
  45. if(messageCount.get()>0){
  46. transition.play();
  47. }else{
  48. transition.stop();
  49. }
  50. });
  51. }
  52. public int getMessageCount() {
  53. return messageCount.get();
  54. }
  55. public SimpleIntegerProperty messageCountProperty() {
  56. return messageCount;
  57. }
  58. public void setMessageCount(int messageCount) {
  59. this.messageCount.set(messageCount);
  60. }
  61. }