Java函数的可视化和图形化显示
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
