gpt4 book ai didi

java - 如何设置实例化标签的文本?

转载 作者:行者123 更新时间:2023-12-01 18:28:01 24 4
gpt4 key购买 nike

我正在自学 java(fx),以便为我的小型企业创建一些应用程序。

但是我遇到了以下问题。实际的程序要大得多、复杂得多,所以我创建了一个新的、更小、更容易的眼科类(class),以便为困扰我一个多星期的问题提供一些帮助

下面的代码创建了 3 个具有不同 id 的标签实例(如果它可以提供帮助)。有什么方法可以通过按下按钮将(比方说)标签 2 的文本更改为其他内容吗?

这确实是我找到解决方案的最后希望。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Test extends Application {

@Override
public void start(Stage primaryStage) {

Button btn = new Button();
btn.setText("Change Label 2 text to something else");
btn.setLayoutX(220);
btn.setLayoutY(250);

btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
//????????????????????????????????????
}
});

Pane root = new Pane();
root.getChildren().add(btn);

for(int i=1; i<=3; i++){
Label label = new Label("Label "+i);
label.setId(String.valueOf(i));
label.setLayoutX(i*60);
label.setLayoutY(i*60);
root.getChildren().add(label);
}

Scene scene = new Scene(root, 600, 500);

primaryStage.setTitle("Instances");
primaryStage.setScene(scene);
primaryStage.show();
}

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

}

最佳答案

您正在创建同一个 Label 实例三次。相反,创建标签数组,如下所示:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Test extends Application {

@Override
public void start(Stage primaryStage) {
Label[] labels = new Label[3];

Button btn = new Button();
btn.setText("Change Label 2 text to something else");
btn.setLayoutX(220);
btn.setLayoutY(250);

btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
labels[1].setText("Text changed");
}
});

Pane root = new Pane();
root.getChildren().add(btn);

for (int i = 0; i < 3; i++) {

labels[i] = new Label("Label " + i);
labels[i].setId(String.valueOf(i));
labels[i].setLayoutX(i * 60);
labels[i].setLayoutY(i * 60);
root.getChildren().add(labels[i]);
}

Scene scene = new Scene(root, 600, 500);

primaryStage.setTitle("Instances");
primaryStage.setScene(scene);
primaryStage.show();
}

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

其他附注:不要像这样放置组件:

label.setLayoutX(i*60);
label.setLayoutY(i*60);

使用适当的 Pane 进行布局。

关于java - 如何设置实例化标签的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com