欢迎访问宙启技术站
智能推送

Java函数的可视化和图形化显示

发布时间:2023-06-16 02:18:48

Java函数的可视化和图形化显示,可以通过各种工具和框架来实现。下面介绍两种常见的可视化和图形化显示的方法。

一、使用Java Swing库进行可视化和图形化显示

Java Swing库是Java提供的UI组件库,可以用于创建漂亮的图形用户界面。其中,JFrame类是Java Swing库中最重要的类之一。它表示一个窗体,可以在窗体中添加各种组件,例如按钮、标签、文本框等。

下面是一个示例程序,演示如何使用Java Swing库创建一个可视化和图形化的计算器,其实现主要基于JFrame类和JButton类:

// 导入库文件

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Calculator extends JFrame implements ActionListener {

    // 定义UI组件

    private JTextField textField;

    private JButton[] numberButtons = new JButton[10];

    private JButton[] functionButtons = new JButton[8];

    private JButton addButton, subButton, mulButton, divButton;

    private JButton decButton, equButton, delButton, clrButton;

    private JPanel panel;

    // 构造函数

    public Calculator() {

        // 设置窗体属性

        this.setTitle("计算器");

        this.setSize(400, 550);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setLayout(null);

        // 创建UI组件

        textField = new JTextField();

        textField.setBounds(50, 50, 300, 100);

        textField.setEditable(false);

        textField.setFont(new Font("Arial", Font.PLAIN, 45));

        this.add(textField);

        addButton = new JButton("+");

        subButton = new JButton("-");

        mulButton = new JButton("*");

        divButton = new JButton("/");

        decButton = new JButton(".");

        equButton = new JButton("=");

        delButton = new JButton("删除");

        clrButton = new JButton("清空");

        functionButtons[0] = addButton;

        functionButtons[1] = subButton;

        functionButtons[2] = mulButton;

        functionButtons[3] = divButton;

        functionButtons[4] = decButton;

        functionButtons[5] = equButton;

        functionButtons[6] = delButton;

        functionButtons[7] = clrButton;

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

            functionButtons[i].setFont(new Font("Arial", Font.PLAIN, 35));

            functionButtons[i].setFocusable(false);

        }

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

            numberButtons[i] = new JButton(String.valueOf(i));

            numberButtons[i].setFont(new Font("Arial", Font.PLAIN, 35));

            numberButtons[i].setFocusable(false);

        }

        delButton.setBounds(50, 400, 100, 50);

        clrButton.setBounds(200, 400, 100, 50);

        // 创建面板

        panel = new JPanel();

        panel.setBounds(50, 200, 300, 200);

        panel.setLayout(new GridLayout(4, 4, 10, 10));

        // 添加组件到面板

        panel.add(numberButtons[1]);

        panel.add(numberButtons[2]);

        panel.add(numberButtons[3]);

        panel.add(addButton);

        panel.add(numberButtons[4]);

        panel.add(numberButtons[5]);

        panel.add(numberButtons[6]);

        panel.add(subButton);

        panel.add(numberButtons[7]);

        panel.add(numberButtons[8]);

        panel.add(numberButtons[9]);

        panel.add(mulButton);

        panel.add(decButton);

        panel.add(numberButtons[0]);

        panel.add(equButton);

        panel.add(divButton]);

        // 将组件添加到窗体

        this.add(panel);

        this.add(delButton);

        this.add(clrButton);

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

            numberButtons[i].addActionListener(this);

        }

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

            functionButtons[i].addActionListener(this);

        }

        // 显示窗体

        this.setVisible(true);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

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

            if (e.getSource() == numberButtons[i]) {

                textField.setText(textField.getText() + String.valueOf(i));

            }

        }

        if (e.getSource() == decButton) {

            textField.setText(textField.getText() + ".");

        }

        if (e.getSource() == addButton) {

            textField.setText(textField.getText() + "+");

        }

        if (e.getSource() == subButton) {

            textField.setText(textField.getText() + "-");

        }

        if (e.getSource() == mulButton) {

            textField.setText(textField.getText() + "*");

        }

        if (e.getSource() == divButton) {

            textField.setText(textField.getText() + "/");

        }

        if (e.getSource() == clrButton) {

            textField.setText("");

        }

        if (e.getSource() == delButton) {

            String str = textField.getText();

            textField.setText("");

            for (int i = 0; i < str.length()-1;i++) {

                textField.setText(textField.getText()+str.charAt(i));

            }

        }

        if (e.getSource() == equButton) {

            String expression = textField.getText();

            ExpressionCalculator expressionCalculator = new ExpressionCalculator();

            double result = expressionCalculator.getResult(expression);

            textField.setText(String.valueOf(result));

        }

    }

    public static void main(String[] args) {

        Calculator calculator = new Calculator();

    }

}

在这个示例中,我们建立了一个计算器,使用JFrame类来创建窗体,并使用JButton类来创建按钮。我们创建了一个JPanel面板,将数值和函数按钮添加到面板中,最后将面板和其他按钮添加到窗体中。

二、 使用JavaFX库进行可视化和图形化显示

JavaFX是Java平台上创建和交互富客户端应用程序的一组技术。它提供了丰富的UI控件、动画效果、媒体支持等。下面是一个简单的JavaFX程序,演示如何创建一个可视化和图形化显示的计算器:

import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.TextField;

import javafx.scene.layout.GridPane;

import javafx.scene.layout.HBox;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class Calculator extends Application {

    private TextField textField;

    private double number1, number2, result;

    private String operator;

    @Override

    public void start(Stage stage) {

        // 创建UI组件

        textField = new TextField();

        Button button0 = new Button("0");

        Button button1 = new Button("1");

        Button button2 = new Button("2");

        Button button3 = new Button("3");

        Button button4 = new Button("4");

        Button button5 = new Button("5");

        Button button6 = new Button("6");

        Button button7 = new Button("7");

        Button button8 = new Button("8");

        Button button9 = new Button("9");

        Button buttonAdd = new Button("+");

        Button buttonSubtract = new Button("-");

        Button buttonMultiply = new Button("*");

        Button buttonDivide = new Button("/");

        Button buttonDecimal = new Button(".");

        Button buttonClear = new Button("C");

        Button buttonEquals = new Button("=");

        // 设置组件尺寸

        textField.setPrefWidth(200);

        textField.setPadding(new Insets(10, 10, 10, 10));

        button0.setPrefWidth(60);

        button1.setPrefWidth(60);

        button2.setPrefWidth(60);

        button3.setPrefWidth(60);

        button4.setPrefWidth(60);

        button5.setPrefWidth(60);

        button6.setPrefWidth(60);

        button7.setPrefWidth(60);

        button8.setPrefWidth(60);

        button9.setPrefWidth(60);

        buttonAdd.setPrefWidth(60);

        buttonSubtract.setPrefWidth(60);

        buttonMultiply.setPrefWidth(60);

        buttonDivide.setPrefWidth(60);

        buttonDecimal.setPrefWidth(60);

        buttonClear.setPrefWidth(60);

        buttonEquals.setPrefWidth(120);

        // 设置组件事件监听器

        button0.setOnAction(e -> addToTextField("0"));

        button1.setOnAction(e -> addToTextField("1"));

        button2.setOnAction(e -> addToTextField("2"));

        button3.setOnAction(e -> addToTextField("3"));

        button4.setOnAction(e -> addToTextField("4"));

        button5.setOnAction(e -> addToTextField("5"));

        button6.setOnAction(e -> addToTextField("6"));

        button7.setOnAction(e -> addToTextField("7