Package fmg.fmg8.graphVis

Source Code of fmg.fmg8.graphVis.Taktgeber

/*
* Datei: SchiebeRegler.java
* Autor(en):        Lukas K�nig
* Java-Version:     1.4
* Erstellt (vor): 14.05.2008
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.graphVis;

import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;

import javax.swing.JFrame;
import javax.swing.JScrollBar;

import fmg.fmg8.statistik.Parametersatz;


/**
* Klasse zur Implementierung eines Schiebereglers in einem Fenster.
*
* @author Lukas K�nig
*/
public class Taktgeber extends JFrame {

    /**
     * UID.
     */
    private static final long serialVersionUID = -3011096274257550863L;
    /**
     * Der Schieberegler.
     */
    private JScrollBar sb;

    /**
     * Der Wert des Schiebereglers.
     */
    private long value;
   
    /**
     * Die Parameter.
     */
    private Parametersatz pars;
   
    /**
     * Ausgabefeld f�r den aktuellen Wert des Reglers.
     */
    private Label wertAusg;
   
    /**
     * Der Konstruktor.
     *
     * @param params  Die Parameter.
     * @param eltern  Das aufrufende Fenster.
     */
    public Taktgeber(final Parametersatz params,
                     final Frame         eltern) {
        super("Taktgeber");
       
        this.pars = params;
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        Container c = this.getContentPane();
        c.setLayout(new GridLayout(2, 1));
       
        Container c2 = new Container();
        Label l1, l2, l3;
        c2.setLayout(new GridLayout(1, 3));
        l1 = new Label("SLOW");
        l2 = new Label("0");
        l2.setAlignment(Label.CENTER);
        l3 = new Label("FAST");
        l3.setAlignment(Label.RIGHT);
        c2.add(l1);
        c2.add(l2);
        c2.add(l3);
        this.add(c2);
        this.wertAusg = l2;
       
        this.setBounds(eltern.getX(),
                       eltern.getY() + eltern.getHeight() + 20,
                       0,
                       0);
        this.setMaximumSize(new Dimension(eltern.getWidth(), 50));
        this.setMinimumSize(this.getMaximumSize());
        this.setResizable(false);
       
        c.setCursor(new Cursor(Cursor.HAND_CURSOR));
       
        this.sb = new JScrollBar(JScrollBar.HORIZONTAL,
                                 0,
                                 0,
                                 0,
                                 50);
        c.add(sb);
   
        sb.addAdjustmentListener(new AdjustmentListener() {
            public void adjustmentValueChanged(final AdjustmentEvent e) {
                Taktgeber.this.value = e.getValue();
                Taktgeber.this.pars.setVerzoegerung(
                        Taktgeber.this.verzBerechnung());
                Taktgeber.this.wertAusg.setText("" + e.getValue());
            }
        });
       
        this.pars.setVerzoegerung(this.verzBerechnung());
        this.pack();
        this.setVisible(true);
    }

    /**
     * Berechnet die Verz�gerung aus dem Wert des Schiebereglers.
     *
     * @return  Verz�gerung.
     */
    private long verzBerechnung() {
        double verz;
        double x = this.sb.getValue();
        double a = 2001;
        double b = Math.pow(1.0 / 2001.0, 1.0 / 50.0);
       
//        verz = 1.6328205114807626E-6 * x * x * x * x * x
//               - 51.02564098377383 * x
//               + 2041.0256393509533;

        verz = a * Math.pow(b, x);
       
        if (verz >= 2000) {
            verz = Long.MAX_VALUE;
        }
       
        return (long) verz;
    }
   
    /**
     * @return Returns the value.
     */
    public long getValue() {
        return this.value;
    }
}
TOP

Related Classes of fmg.fmg8.graphVis.Taktgeber

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.