首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionEvent按钮- TextField JavaFX

ActionEvent按钮- TextField JavaFX
EN

Stack Overflow用户
提问于 2017-03-29 03:05:29
回答 2查看 1.4K关注 0票数 0

大家好,我需要从一个按钮创建一个ActionEvent,并将按钮名放在TextField上。我所拥有的是一种计算器,但当我按下一个按钮时,TextField就不会被填充。举个例子,我想要的是:我在一个按钮上有一个数字,当我按下它时,数字1会出现在TextField上。这是我到现在为止拥有的:

AppCalculator类:

代码语言:javascript
复制
package appcalculator;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class AppCalculator 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();
}

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

}

FXMLDocumentController:

代码语言:javascript
复制
package appcalculadora;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextField;

public class FXMLDocumentController implements Initializable {


TextField texto = new TextField();


@FXML
private void btnOne(ActionEvent event) {
    texto.setText("1");

}

@FXML
private void btnTwo(ActionEvent event) {
    texto.setText("2");
}

@FXML
private void btnThree(ActionEvent event) {
    texto.setText("3");
}

@FXML
private void btnFour(ActionEvent event) {
    texto.setText("4");
}

@FXML
private void btnFive(ActionEvent event) {
    texto.setText("5");
}

@FXML
private void btnSix(ActionEvent event) {
    texto.setText("6");
}

@FXML
private void btnSevent(ActionEvent event) {
    texto.setText("7");
}

@FXML
private void btnEight(ActionEvent event) {
    texto.setText("8");
}

@FXML
private void btnNine(ActionEvent event) {
    texto.setText("9");
}

@FXML
private void btnZero(ActionEvent event) {
    texto.setText("0");
}

@FXML
private void btnPoint(ActionEvent event) {
    texto.setText(".");
}

@FXML
private void btnPlus(ActionEvent event) {
    texto.setText("+");
}

@FXML
private void btnMinus(ActionEvent event) {
    texto.setText("-");
}

@FXML
private void btnBy(ActionEvent event) {
    texto.setText("*");
}

@FXML
private void btnDivided(ActionEvent event) {
    texto.setText("/");
}

@FXML
private void btnErrase(ActionEvent event){
    texto.deletePreviousChar();
}

@FXML
private void btnTotal(ActionEvent event){
    texto.getText();
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    

}

和我各自的FXML文档

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-30 16:43:30

这可能对你的回答有所帮助。就像@James_D一样,您缺少了“@FXML私有TextField文本;.”而且,您可能会摆脱大部分的方法。

下面是一个示例程序:

Main:

代码语言:javascript
复制
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication58 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);
    }
}

主计长:

代码语言:javascript
复制
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;

/**
 *
 * @author blj0011
 */
public class FXMLDocumentController implements Initializable
{

    @FXML
    private TextField texto;


    //Use this approach to replace most of your private button handlers!
    @FXML
    private void handleButtonAction(ActionEvent event)
    {
        Button button = (Button)event.getSource();
        texto.appendText(button.getText());
    }

    @Override
    public void initialize(URL url, ResourceBundle rb)
    {
        // TODO
    }      
}

FXML:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111" fx:controller="javafxapplication58.FXMLDocumentController">
    <children>
        <Button fx:id="btnOne" layoutX="126" layoutY="90" onAction="#handleButtonAction" text="1" />
      <Button fx:id="btnTwo" layoutX="172.0" layoutY="90.0" onAction="#handleButtonAction" text="2" />
      <TextField fx:id="texto" layoutX="86.0" layoutY="43.0" />
    </children>
</AnchorPane>
票数 2
EN

Stack Overflow用户

发布于 2017-03-29 03:16:37

代码语言:javascript
复制
public void actionPerformed(ActionEvent e) { 

String x = TextFieldName.getText();
if(e.getSource() == ButtonName)
TextFieldName.setText("");
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43083570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档