在 Java fxml 应用程序中为动态创建的文本对象应用鼠标点击侦听器
Applying mouse click listener for a dynamically created Text object in Java fxml application
我刚开始学习java fxml 应用程序开发。
我的目标是显示一个带有随机文本的 fxml 屏幕。所以我实现了一个 CustomLabel class 并动态生成了对象,文本如我所料显示在场景中。现在我想在每个标签上应用鼠标点击监听器。我已经尝试使用 awt onClick 侦听器,但没有效果。我正在寻找更好的实施方式。如果有人有任何想法或者在这种情况下我的实现方式有误,请纠正我。
在这里我想展示我的 customLabel class
public class CustomLabel extends Text{
public interface ChoseListener{
void onChosed(String text);
}
private boolean onClicked = true;
ChoseListener choseListener;
private Random random = new Random();
private int y = 0;
public CustomLabel(ChoseListener choseListener,String text,int y){
super(text);
this.y = y;
initLabel();
startAnimation();
}
private void initLabel(){
//here I would like to add mouseclick listener to this object
//and I planed to call choseListener.onChosed(this.getText()) inside click listener so my scene can simply retrieve the text.
this.setFont(new Font("Arial", 25));
}
void startAnimation(){
this.setY(y);
final Timeline timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.setAutoReverse(true);
final KeyValue kv = new KeyValue(this.xProperty(), 700);
final KeyFrame kf = new KeyFrame(Duration.millis(9000), kv);
timeline.getKeyFrames().add(kf);
timeline.play();
}
}
我有一个工厂 class,它将为请求的场景创建一个 CustomLabel 对象列表。
如果自定义文本对象无法存档,请告诉我。我对 java 基础知识知之甚少。据我所知,有一种方法可以向该对象添加点击监听器。如果你遇到我的问题,请帮助我。
private void initLabel(){
this.setFont(new Font("Arial", 25));
this.setOnMouseClicked(e -> choseListener.onChosed(getText()) );
}
我刚开始学习java fxml 应用程序开发。 我的目标是显示一个带有随机文本的 fxml 屏幕。所以我实现了一个 CustomLabel class 并动态生成了对象,文本如我所料显示在场景中。现在我想在每个标签上应用鼠标点击监听器。我已经尝试使用 awt onClick 侦听器,但没有效果。我正在寻找更好的实施方式。如果有人有任何想法或者在这种情况下我的实现方式有误,请纠正我。 在这里我想展示我的 customLabel class
public class CustomLabel extends Text{
public interface ChoseListener{
void onChosed(String text);
}
private boolean onClicked = true;
ChoseListener choseListener;
private Random random = new Random();
private int y = 0;
public CustomLabel(ChoseListener choseListener,String text,int y){
super(text);
this.y = y;
initLabel();
startAnimation();
}
private void initLabel(){
//here I would like to add mouseclick listener to this object
//and I planed to call choseListener.onChosed(this.getText()) inside click listener so my scene can simply retrieve the text.
this.setFont(new Font("Arial", 25));
}
void startAnimation(){
this.setY(y);
final Timeline timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.setAutoReverse(true);
final KeyValue kv = new KeyValue(this.xProperty(), 700);
final KeyFrame kf = new KeyFrame(Duration.millis(9000), kv);
timeline.getKeyFrames().add(kf);
timeline.play();
}
}
我有一个工厂 class,它将为请求的场景创建一个 CustomLabel 对象列表。 如果自定义文本对象无法存档,请告诉我。我对 java 基础知识知之甚少。据我所知,有一种方法可以向该对象添加点击监听器。如果你遇到我的问题,请帮助我。
private void initLabel(){
this.setFont(new Font("Arial", 25));
this.setOnMouseClicked(e -> choseListener.onChosed(getText()) );
}