BusinessLogic.java Source code

Java tutorial

Introduction

Here is the source code for BusinessLogic.java

Source

// : c14:Separation.java
// Separating GUI logic and business objects.
// <applet code=Separation width=250 height=150></applet>
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

class BusinessLogic {
    private int modifier;

    public BusinessLogic(int mod) {
        modifier = mod;
    }

    public void setModifier(int mod) {
        modifier = mod;
    }

    public int getModifier() {
        return modifier;
    }

    // Some business operations:
    public int calculation1(int arg) {
        return arg * modifier;
    }

    public int calculation2(int arg) {
        return arg + modifier;
    }
}

public class Separation extends JApplet {
    private JTextField t = new JTextField(15), mod = new JTextField(15);

    private JButton calc1 = new JButton("Calculation 1"), calc2 = new JButton("Calculation 2");

    private BusinessLogic bl = new BusinessLogic(2);

    public static int getValue(JTextField tf) {
        try {
            return Integer.parseInt(tf.getText());
        } catch (NumberFormatException e) {
            return 0;
        }
    }

    class Calc1L implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            t.setText(Integer.toString(bl.calculation1(getValue(t))));
        }
    }

    class Calc2L implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            t.setText(Integer.toString(bl.calculation2(getValue(t))));
        }
    }

    // If you want something to happen whenever
    // a JTextField changes, add this listener:
    class ModL implements DocumentListener {
        public void changedUpdate(DocumentEvent e) {
        }

        public void insertUpdate(DocumentEvent e) {
            bl.setModifier(getValue(mod));
        }

        public void removeUpdate(DocumentEvent e) {
            bl.setModifier(getValue(mod));
        }
    }

    public void init() {
        Container cp = getContentPane();
        cp.setLayout(new FlowLayout());
        cp.add(t);
        calc1.addActionListener(new Calc1L());
        calc2.addActionListener(new Calc2L());
        JPanel p1 = new JPanel();
        p1.add(calc1);
        p1.add(calc2);
        cp.add(p1);
        mod.getDocument().addDocumentListener(new ModL());
        JPanel p2 = new JPanel();
        p2.add(new JLabel("Modifier:"));
        p2.add(mod);
        cp.add(p2);
    }

    public static void main(String[] args) {
        run(new Separation(), 250, 100);
    }

    public static void run(JApplet applet, int width, int height) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(applet);
        frame.setSize(width, height);
        applet.init();
        applet.start();
        frame.setVisible(true);
    }
} ///:~