kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

14.7 Ergänzung der Funktionalität

14.7 Addition of functionality (EN google-translate)

14.7 Dodanie funkcjonalności (PL google-translate)

  • Nun wird die Anwendungsklasse AVReditor in der Klasse AVReditorGUI benutzt.
  • Dies ist möglich, weil zunächst beide Klassen im gleichen Verzeichnis liegen.
  • Beim Betätigen des Knopfes (go) wird nun die Objektmethode alles(..) des Objekts avreditor aufgerufen.
  • Der Methode alles(..) wird der aktuelle Inhalt des Textbereiches übergeben.
  • Danach wird der Status in avreditor ausgewertet und durch farbige Labels in der GUI dargestellt.
  • Änderungen und Ergänzungen gegenüber dem vorherigen Stand sind durch Kommentare kenntlich gemacht.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class AVReditorGUI
{
//ERGAENZUNG:
    AVReditor avreditor = new AVReditor();

    Color ROT      = new Color(255,220,220);
    Color GRUEN    = new Color(220,255,220);
    Color NEUTRAL  = new Color(220,220,255);
    Color NEUTRAL2 = new Color(240,240,255);

    int BREITE = 800;
    int HOEHE  = 600;

    Label kompilieren,wandeln,lesen,flashen;
    JButton go;

//AENDERUNG:
    JTextArea textfeld;

    private void setzeGroesse(Component komponente,int breite, int hoehe)
    {
        komponente.setBounds(0,0,breite,hoehe);
        komponente.setSize(new Dimension(breite,hoehe));
        komponente.setMinimumSize(new Dimension(breite,hoehe));
        komponente.setMaximumSize(new Dimension(breite,hoehe));
        komponente.setPreferredSize(new Dimension(breite,hoehe));
    }
  

    public AVReditorGUI()
    {
        JFrame fenster = new JFrame("AVR Editor");
        fenster.setBounds(10,10,BREITE,HOEHE);
        fenster.addWindowListener(new FensterSchliesser(fenster));
        ScrollPane scrollpane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
        scrollpane.setBackground(Color.WHITE);

//AENDERUNG:
        textfeld = new JTextArea(avreditor.beispielquelltext);
        textfeld.setBackground(new Color(220,220,255));

        textfeld.setFont(new Font("Monospaced", Font.PLAIN, 14));

        textfeld.setEditable(true);
        scrollpane.add(textfeld);

        fenster.getContentPane().setLayout(new BoxLayout(fenster.getContentPane(),BoxLayout.Y_AXIS));

        JPanel paneloben  = new JPanel();
        JPanel panelunten = new JPanel();

        setzeGroesse(paneloben,BREITE,30);
        setzeGroesse(panelunten,BREITE-10,HOEHE-30);

        paneloben.setLayout(new BoxLayout(paneloben,BoxLayout.X_AXIS));

        go = new JButton("GO");        

//ERGAENZUNG:
        go.addActionListener(new KnopfLauscher());

        Label dummy = new Label("   ");

        kompilieren = new Label("kompilieren");        
        wandeln     = new Label("wandeln");        
        lesen       = new Label("lesen");        
        flashen     = new Label("flashen");        

        kompilieren.setFont(new Font("Arial", Font.BOLD, 14));
        wandeln.setFont(new Font("Arial", Font.BOLD, 14));
        lesen.setFont(new Font("Arial", Font.BOLD, 14));
        flashen.setFont(new Font("Arial", Font.BOLD, 14));

        //dummy.setBackground(Color.LIGHT_GRAY);
        kompilieren.setBackground(NEUTRAL);
        wandeln.setBackground(NEUTRAL);
        lesen.setBackground(NEUTRAL);
        flashen.setBackground(NEUTRAL);

        setzeGroesse(go,BREITE/6,30);
        setzeGroesse(dummy,BREITE/6,30);
        setzeGroesse(kompilieren,BREITE/6,30);
        setzeGroesse(wandeln,BREITE/6,30);
        setzeGroesse(lesen,BREITE/6,30);
        setzeGroesse(flashen,BREITE/6,30);
        
        paneloben.add(go);
        paneloben.add(dummy);
        paneloben.add(kompilieren);
        paneloben.add(wandeln);
        paneloben.add(lesen);
        paneloben.add(flashen);
       
        setzeGroesse(scrollpane,BREITE-20,HOEHE-70);

        panelunten.add(scrollpane);

        fenster.getContentPane().add(paneloben);
        fenster.getContentPane().add(panelunten);
        fenster.setVisible(true);
    }

    public static void main(String[] args)
    {
          AVReditorGUI rasterlayout = new AVReditorGUI();
    }

//ERGAENZUNG:
    private class KnopfLauscher implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            kompilieren.setBackground(NEUTRAL);
            wandeln.setBackground(NEUTRAL);
            lesen.setBackground(NEUTRAL);
            flashen.setBackground(NEUTRAL);

            avreditor.alles(textfeld.getText());        

            if(avreditor.TEST_KOMPILIEREN==true)
                kompilieren.setBackground(GRUEN);
            else
                kompilieren.setBackground(ROT);

            if(avreditor.TEST_WANDELN==true)
                wandeln.setBackground(GRUEN);
            else
                wandeln.setBackground(ROT);

            if(avreditor.TEST_LESEN==true)
                lesen.setBackground(GRUEN);
            else
                lesen.setBackground(ROT);

            if(avreditor.TEST_FLASHEN==true)
                flashen.setBackground(GRUEN);
            else
                flashen.setBackground(ROT);

            
        }
    }

    private class FensterSchliesser implements WindowListener
    {
        private Frame fenster;

        public FensterSchliesser(Frame fenster)
        {
            this.fenster = fenster;
        }

        public void windowActivated(WindowEvent e) {}
        public void windowClosed(WindowEvent e) {}
        public void windowClosing(WindowEvent e) 
        {
            System.out.println("Beim Schliessen koennte der aktuelle Quelltext gespeichert werden.");
            fenster.dispose();
            System.exit(0);
        }
        public void windowDeactivated(WindowEvent e) {}
        public void windowDeiconified(WindowEvent e) {}
        public void windowIconified(WindowEvent e) {}
        public void windowOpened(WindowEvent e) {}
       
    }

}

Code 14.7-1: AVReditorGUI.java - GUI-Programm mit Funktionalität.