перенаправление вывода консоли в текстовое поле и кнопок для ввода консоли с помощью java swing

#java #swing

Вопрос:

У меня есть этот код ниже, разделенный на 3 класса, и я хочу, чтобы вывод консоли отображался в текстовом поле в графическом интерфейсе, а ввод вводился с графического интерфейса, а не с клавиатуры. Я сделал все кнопки, которые мне нужны в интерфейсе : кнопка ввода, кнопки с цифрами, кнопка очистки и кнопка тишины

Основной Класс :

 package com.company;
import java.util.Scanner;
import java.io.IOException;

public class Main {

    public static void main(String[] args){

        AtmProgram account = new AtmProgram();
        Scanner input = new Scanner(System.in);

        do {
            int menuOption;
            boolean continueInput = true;

            System.out.println("************************************************");
            System.out.println("1.Solde");
            System.out.println("2.Dépôt");
            System.out.println("3.Retrait");
            System.out.println("4.Quitter");
            System.out.println("************************************************");
            System.out.print("Entrer Menu Option(et press Entrer):");

            while(!input.hasNext()){
                input.next();
            }
            menuOption = input.nextInt();

            switch(menuOption){
                //Solde
                case 1:
                    System.out.println("SOLDE");
                    System.out.println(account.toString());
                    break;
                //Depot
                case 2:
                    try {
                        System.out.println("Dépôt");
                        System.out.println(account.toString());
                        System.out.print("Entrez le montant du dépôt:");

                        while(!input.hasNextDouble()){
                            input.next();

                        }
                        double montant_A_Deposer = input.nextDouble();
                        continueInput = false;

                        account.depot(montant_A_Deposer);
                        System.out.println("Nombre de dépôts: " account.depotCount);
                        System.out.println(account.toString());

                    } catch (IOException ex){

                        System.out.printf("Erreur: vérifiez soit votre entrée (nombre négatif), dépôt maximum par transaction (40K), fréquence de dépôt maximum (4)n",ex.getMessage());
                    }
                    catch (Exception ex){

                        System.out.printf("Dépôt maximum par jour atteintn",ex.getMessage());

                    }

                    break;
                //Retrait
                case 3:
                    try {
                        System.out.println("RETRAIT");
                        System.out.println(account.toString());
                        System.out.print("Entrez le montant du retrait:");

                        while(!input.hasNextDouble()){
                            input.next();

                        }
                        double montant_A_Retirer = input.nextDouble();
                        account.retrait(montant_A_Retirer);
                        System.out.println("Nombre de retraits: " account.retraitCount);
                        System.out.println(account.toString());
                    } catch(Exception e){

                        System.out.printf("Exception lors du retraitn",e.getMessage());
                    }

                    break;
                //Quitter
                case 4:
                    try {
                        System.out.print("Voulez-vous vraiment QUITTER? (O / N)");
                        if(input.next().equals("O")){
                            System.exit(0);
                        }
                    } catch (Exception ex){

                        System.out.printf("Exception à quitter",ex.getMessage());
                    }
                    break;

                default:
                    System.out.println("Option de Menu non valide");

            }
        } while(true);
    }
}


 

Класс программы ATM :

 package com.company;
import java.util.Scanner;
import java.io.IOException;

public class AtmProgram {
    private double solde;
    private  double totalRetrait;
    private  double totalDepot;
    protected   int retraitCount;
    protected   int depotCount;
    private final double MAX_DEPOT_PAR_JOUR = 150000.00;
    private final double MAX_DEPOT_PAR_TRANSACTION = 40000.00;
    private final  int MAX_DEPOT_FREQUENCE = 4;
    private final double MAX_RETRAIT_PAR_JOUR = 50000.00;
    private final double MAX_RETRAIT_PAR_TRANSACTION = 20000.00;
    private final int MAX_RETRAIT_FREQUENCE = 4;

    //Constricteur
    public AtmProgram(){
        solde = 0.00;
        totalRetrait = 0.00;
        totalDepot = 0.00;
        retraitCount = 0;
        depotCount = 0;
    }
    //Solde actuel
    public String toString() {
        return "Solde actuel:"   solde;
    }
    //Getters
    public double getSolde(){
        System.out.printf("nCurrent Balance:%.2fn",solde);
        return solde;
    }
    public double getTotalRetrait(){
        System.out.printf("nTotal Withdrawals:%.2fn",totalRetrait);
        return totalRetrait;
    }
    public  double getTotalDepot(){
        System.out.printf("nTotal Deposits:%.2fn",totalDepot);
        return totalDepot;
    }

    public double depot(double montant) throws IOException,Exception{

        if (montant > 0.00 amp;amp; montant <= MAX_DEPOT_PAR_TRANSACTION amp;amp; depotCount < MAX_DEPOT_FREQUENCE) {

            depotCount  ;

        } else {

            throw new IOException();
        }

        totalDepot = totalDepot   montant;

        if(totalDepot <= MAX_DEPOT_PAR_JOUR){

            solde = solde    montant;

        } else {

            throw new Exception();

        }

        return solde;

    }

    public double retrait(double montant) throws IOException,Exception {
        if (montant > 0.00 amp;amp; montant < solde amp;amp; retraitCount < MAX_RETRAIT_FREQUENCE amp;amp; montant <= MAX_RETRAIT_PAR_TRANSACTION) {

            retraitCount  ;

        } else {

            throw new IOException();
        }

        totalRetrait = totalRetrait   montant;

        if(totalRetrait <= MAX_RETRAIT_PAR_JOUR){

            solde = solde - montant;

        } else {

            throw new Exception();
        }

        return solde;
    }




}

 

Класс интерфейса :

 package com.company;

import javax.swing.*;

public class Interface {
    private JPanel ATM_Interface;
    private JTextArea textArea;
    private JButton entrerButton;
    private JButton correctionButton;
    private JButton quitterButton;
    private JButton btn0;
    private JButton btn1;
    private JButton btn2;
    private JButton btn3;
    private JButton btn4;
    private JButton btn5;
    private JButton btn6;
    private JButton btn7;
    private JButton btn8;
    private JButton btn9;


    private void createUIComponents() {
        // TODO: place custom component creation code here
    }
}


 

Комментарии:

1. пожалуйста, не используйте исключения для управления потоком, и если вы это сделаете, используйте исключения, которые имеют смысл. Как вы думаете, имеет смысл создавать исключение IOException, если ваш ввод неверен?

2. И … в чем вопрос?

3. в отличие от того, что вы указали в своем вопросе, не похоже, что вы создали пользовательский интерфейс. Объявление кнопки и наличие кнопки, которую вы можете использовать, — это далеко не одно и то же. Кроме того, вы не должны публиковать все свои переменные экземпляра, это очень плохой дизайн. В принципе, вы хотите, чтобы мы написали код пользовательского интерфейса и связали с ним вашу бизнес-логику?

4. Консольное приложение работает хорошо

5. Код, управляемый событиями, отличается от кода ввода / вывода консоли. Вы должны создать графический интерфейс с самого начала вашего кода. У Oracle есть увлекательный учебник по созданию графического интерфейса с помощью JFC/Swing , который покажет вам, как создать правильный графический интерфейс. Пропустите раздел Netbeans.