单击按钮时如何正确生成标签
How to properly produce a label when a button is clicked
在下面的代码中,我有一个项目创建了 3 个按钮,分别称为 sinister、medium 和 dexter。按钮显示正确但不起作用。如何让程序中名为sinister的按钮在点击时显示“left”标签?
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
public class latinTranslator extends Application
{
private Label myLabel;
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage) {
Button leftButton = new Button("Sinister");
Button centerButton = new Button("Medium");
Button rightButton = new Button("Dexter");
//align centerbutton
centerButton.setAlignment(Pos.CENTER);
//event handler
leftButton.setOnAction(new ButttonClickHandler());
centerButton.setOnAction(new ButttonClickHandler());
rightButton.setOnAction(new ButttonClickHandler());
//label, button and its spacing;
VBox Vbox = new VBox(20,leftButton, centerButton,rightButton );
//create scene
Scene scenebox = new Scene(Vbox,300,500);
//alignment
Vbox.setAlignment(Pos.CENTER);
primaryStage.setScene(scenebox);
//set scene to stage
primaryStage.setTitle("Latin Translator");
//window
primaryStage.show();
}
class ButttonClickHandler implements EventHandler<ActionEvent>
{
@Override
public void handle(ActionEvent event)
{
}
}
}
首先需要在scene graph. Then, in the event handler中添加myLabel
,可以设置myLabel
的文字。
在下面的代码中,我用注释指出了我在方法 start
中所做的更改。查找以下评论:
- 添加了这一行
- 在此处更改
我还在 class ButttonClickHandler
中添加了方法 handle
的代码
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
public class LatinTranslator extends Application {
private Label myLabel;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
myLabel = new Label(); // ADDED THIS LINE
Button leftButton = new Button("Sinister");
Button centerButton = new Button("Medium");
Button rightButton = new Button("Dexter");
// align centerbutton
centerButton.setAlignment(Pos.CENTER);
// event handler
leftButton.setOnAction(new ButttonClickHandler());
centerButton.setOnAction(new ButttonClickHandler());
rightButton.setOnAction(new ButttonClickHandler());
// label, button and its spacing;
VBox Vbox = new VBox(20, myLabel, leftButton, centerButton, rightButton); // CHANGE HERE
// create scene
Scene scenebox = new Scene(Vbox, 300, 500);
// alignment
Vbox.setAlignment(Pos.CENTER);
primaryStage.setScene(scenebox);
// set scene to stage
primaryStage.setTitle("Latin Translator");
// window
primaryStage.show();
}
class ButttonClickHandler implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
Object source = event.getSource();
if (source instanceof Button) {
Button button = (Button) source;
String text = button.getText();
if ("Sinister".equals(text)) {
myLabel.setText("left");
}
}
}
}
}
运行 代码并点击按钮 Sinister 按钮上方会出现 left 字样。
这是点击按钮之前的样子 Sinister
这是点击按钮后的样子 Sinister
在下面的代码中,我有一个项目创建了 3 个按钮,分别称为 sinister、medium 和 dexter。按钮显示正确但不起作用。如何让程序中名为sinister的按钮在点击时显示“left”标签?
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
public class latinTranslator extends Application
{
private Label myLabel;
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage) {
Button leftButton = new Button("Sinister");
Button centerButton = new Button("Medium");
Button rightButton = new Button("Dexter");
//align centerbutton
centerButton.setAlignment(Pos.CENTER);
//event handler
leftButton.setOnAction(new ButttonClickHandler());
centerButton.setOnAction(new ButttonClickHandler());
rightButton.setOnAction(new ButttonClickHandler());
//label, button and its spacing;
VBox Vbox = new VBox(20,leftButton, centerButton,rightButton );
//create scene
Scene scenebox = new Scene(Vbox,300,500);
//alignment
Vbox.setAlignment(Pos.CENTER);
primaryStage.setScene(scenebox);
//set scene to stage
primaryStage.setTitle("Latin Translator");
//window
primaryStage.show();
}
class ButttonClickHandler implements EventHandler<ActionEvent>
{
@Override
public void handle(ActionEvent event)
{
}
}
}
首先需要在scene graph. Then, in the event handler中添加myLabel
,可以设置myLabel
的文字。
在下面的代码中,我用注释指出了我在方法 start
中所做的更改。查找以下评论:
- 添加了这一行
- 在此处更改
我还在 class ButttonClickHandler
handle
的代码
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
public class LatinTranslator extends Application {
private Label myLabel;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
myLabel = new Label(); // ADDED THIS LINE
Button leftButton = new Button("Sinister");
Button centerButton = new Button("Medium");
Button rightButton = new Button("Dexter");
// align centerbutton
centerButton.setAlignment(Pos.CENTER);
// event handler
leftButton.setOnAction(new ButttonClickHandler());
centerButton.setOnAction(new ButttonClickHandler());
rightButton.setOnAction(new ButttonClickHandler());
// label, button and its spacing;
VBox Vbox = new VBox(20, myLabel, leftButton, centerButton, rightButton); // CHANGE HERE
// create scene
Scene scenebox = new Scene(Vbox, 300, 500);
// alignment
Vbox.setAlignment(Pos.CENTER);
primaryStage.setScene(scenebox);
// set scene to stage
primaryStage.setTitle("Latin Translator");
// window
primaryStage.show();
}
class ButttonClickHandler implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
Object source = event.getSource();
if (source instanceof Button) {
Button button = (Button) source;
String text = button.getText();
if ("Sinister".equals(text)) {
myLabel.setText("left");
}
}
}
}
}
运行 代码并点击按钮 Sinister 按钮上方会出现 left 字样。
这是点击按钮之前的样子 Sinister
这是点击按钮后的样子 Sinister