Вывод не в консоли, а в TextArea

Имеется такой код:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainWindow extends JFrame {
private JPanel panel;
private JButton button1;
private JTextField textField1;
private JTextArea textArea1;

public class MyButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent actionEvent) {
        double a = -7.213, b = -3.8, Xn = -2, Xk = 2, dX = 0.4, z = 0;
        double x = Xn;
        System.out.println("x  z");
        while (x <= Xk) {
            if (a * x * x - b < 0) {
                z = Math.sin(x);
            } else if ((a * x * x - b >= 0) & (Math.abs(a) >= x * x * x)) {
                z = (Math.cos(Math.abs(a * x / b)));
            } else if ((a * x * x - b >= 0) & (Math.abs(a) < x * x * x)) {
                z = (x * x - a * x + b * x * b * x * Math.abs(x - a));
            }
            System.out.println(x);
            System.out.println(" " + z);
            x += dX;
        }
    }
}

public MainWindow(){
    this.getContentPane().add(panel);
    this.button1.addActionListener(new MyButtonListener());
}

}

И имеется такой GUI.

GUI

Как сделать, чтобы при нажатии на кнопку button, вычисления выводились не в консоли, а в textArea? или в TextLabel, главное чтобы вычисления появлялись в графическом интерфейсе программы


Ответы (1 шт):

Автор решения: Jeka_FRIZZ
public class MainWindow extends JFrame {
    private JPanel panel;
    private JButton button1;
    private JTextField textField1;
    private JTextArea textArea1;
    private DefaultListModel<String> listX = new DefaultListModel<>();
    private DefaultListModel<String> listZ = new DefaultListModel();
    
    public class MyButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent actionEvent) {
            double a = -7.213, b = -3.8, Xn = -2, Xk = 2, dX = 0.4, z = 0;
            double x = Xn;
            System.out.println("x  z");
            while (x <= Xk) {
                if (a * x * x - b < 0) {
                    z = Math.sin(x);
                } else if ((a * x * x - b >= 0) & (Math.abs(a) >= x * x * x)) {
                    z = (Math.cos(Math.abs(a * x / b)));
                } else if ((a * x * x - b >= 0) & (Math.abs(a) < x * x * x)) {
                    z = (x * x - a * x + b * x * b * x * Math.abs(x - a));
                }
                listX.addElement(String.valueOf(x));
                listZ.addElement(" " + String.valueOf(z));
                System.out.println(x);
                System.out.println(" " + z);
                x += dX;
            }
        }
    }
    
    public MainWindow(){
        this.getContentPane().add(panel);
        this.button1.addActionListener(new MyButtonListener());
        add(new JList(listX));
        add(new JList(listZ));
    }
   }
}
→ Ссылка