Java实战之亲戚关系计算器(JavaFX版)(5)——回退及清空功能

本节概要:实现回退及清空功能

功能一:实现点击称谓按钮功能

将Controller.java的内容改为如下,即为各个称谓按钮添加事件:

package kindredCalculator.controller;
​
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
​
public class Controller {
    private int count = 0;
​
    @FXML
    private Button daughterButton;
​
    @FXML
    private Button smallBrotherButton;
​
    @FXML
    private Button bigBrotherButton;
​
    @FXML
    private Button fatherButton;
​
    @FXML
    private Button husbandButton;
​
    @FXML
    private Button wifeButton;
​
    @FXML
    private Button bigSisterButton;
​
    @FXML
    private Button sonButton;
​
    @FXML
    private Button montherButton;
​
    @FXML
    private Button smallSisterButton;
​
    @FXML
    private TextArea inputTextArea;
​
    @FXML
    private TextArea outputTextArea;
​
    @FXML
        // 【丈夫】按钮的事件监听器
    void do_husbandButton_event(ActionEvent event) {
        setTextByButton(husbandButton);
    }
​
    @FXML
        // 【妻子】按钮的事件监听器
    void do_wifeButton_event(ActionEvent event) {
        setTextByButton(wifeButton);
    }
​
    @FXML
        // 【爸爸】按钮的事件监听器
    void do_fatherButton_event(ActionEvent event) {
        setTextByButton(fatherButton);
    }
​
    @FXML
        // 【妈妈】按钮的事件监听器
    void do_montherButton_event(ActionEvent event) {
        setTextByButton(montherButton);
    }
​
    @FXML
        // 【儿子】按钮的事件监听器
    void do_sonButton_event(ActionEvent event) {
        setTextByButton(sonButton);
    }
​
    @FXML
        // 【女儿】按钮的事件监听器
    void do_daughterButton_event(ActionEvent event) {
        setTextByButton(daughterButton);
    }
​
    @FXML
        // 【哥哥】按钮的事件监听器
    void do_bigBrotherButton_event(ActionEvent event) {
        setTextByButton(bigBrotherButton);
    }
​
    @FXML
        // 【弟弟】按钮的事件监听器
    void do_smallBrotherButton_event(ActionEvent event) {
        setTextByButton(smallBrotherButton);
    }
​
    @FXML
        // 【姐姐】按钮的事件监听器
    void do_bigSisterButton_event(ActionEvent event) {
        setTextByButton(bigSisterButton);
    }
​
    @FXML
        // 【妹妹】按钮的事件监听器
    void do_smallSisterButton_event(ActionEvent event) {
        setTextByButton(smallSisterButton);
    }
​
    @FXML
        // 【回退】按钮的事件监听器
    void do_rebackButton_event(ActionEvent event) {
​
    }
​
    @FXML
        // 【清空】按钮的事件监听器
    void do_clearButton_event(ActionEvent event) {
​
    }
​
    @FXML
        // 【计算】按钮的事件监听器
    void do_countButton_event(ActionEvent event) {
​
    }
​
    /**
     * 操作结果:根据按钮设置文本
     *
     * @param button 按钮
     */
    public void setTextByButton(Button button) {
        // 将累计的按钮点击次数清零,重新计数
        if (inputTextArea.getText().equals(null) || inputTextArea.getText().equals("")) {
            count = 0;
        }
        String name = "";
        if (count == 0) {
            name = button.getText();
        } else {
            name = "的" + button.getText();
        }
        count++;
        inputTextArea.appendText(name);
    }
}

效果如下:

img

这样只要点击称谓按钮就会在输入框内出现与之相关的关系链了。

功能二:回退按钮功能

在Controller.java中将do_rebackButton_event方法的内容替换成如下:

    @FXML
        // 【回退】按钮的事件监听器
    void do_rebackButton_event(ActionEvent event) {
        String[] array = inputTextArea.getText().split("的");
        Stack<String> stack = new Stack<>();
        for (String str : array) {
            stack.push(str);
        }
        stack.pop();
        String string = "";
        for (String str : stack) {
            string += str + "的";
        }
        int index = string.length();
        if (index == 0) {
            inputTextArea.setText("我");
        } else {
            string = string.substring(0, index - 1);
            inputTextArea.setText(string);
        }
    }

运行效果如下:

回退到

img

功能三:清空按钮功能

将Controller.java中的do_clearButton_event方法内容修改为如下:

    @FXML
        // 【清空】按钮的事件监听器
    void do_clearButton_event(ActionEvent event) {
        inputTextArea.setText("我");
        outputTextArea.setText("");
    }

效果如下:

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20191128】可获取本节源码。

发布了394 篇原创文章 · 获赞 41 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/103736813
今日推荐