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.6 Erste möglichst einfache Version einer GUI

14.6 First simple version of a GUI (EN google-translate)

14.6 Pierwsza prosta wersja GUI (PL google-translate)

Die zu entwickelnde GUI benötigt einen Textbereich für den Quelltext und mindestens einen Knopf, um die Methode alles(..) der auszulösen. Ausserdem sollte es eine Anzeige geben, um darauf hinzuweisen, ob die Vorgänge Kompilieren, Wandeln, Lesen und Flashen erfolgreich durchgeführt werden konnten oder nicht. Hierfür werden Labels verwendet, die durch Farbwechsel den Erfolg (grün) oder Mißerfolg (rot) anzeigen.

The GUI to be developed needs a text area for the source code and at least a button to trigger the method all (..) of the. There should also be an ad to indicate if the Compile, convert, read, and flash operations could or could not be done successfully. For this purpose, labels are used which indicate the success (green) or failure (red) by color change.

GUI, który ma zostać opracowany, wymaga co najmniej pola tekstowego dla kodu źródłowego przycisk uruchamiający metodę all (..) of. Powinna być również reklama wskazująca, czy Operacje kompilowania, konwertowania, odczytu i flashowania można lub nie można wykonać z powodzeniem. W tym celu stosowane są etykiety wskazujące na sukces (kolor zielony) lub błąd (kolor czerwony) na skutek zmiany koloru.

Die Fensteraufteilung könnte demnach folgendermaßen aussehen:

The window layout could look like this:

Układ okna może wyglądać tak:

Layout-Entwurf einer ersten GUI mit Objekt- und Klassennamen angelehnt an der UML-Objektdiagramm-Darstellung.

Bild 14.6-1: Layout-Entwurf einer ersten GUI mit Objekt- und Klassennamen angelehnt an der UML-Objektdiagramm-Darstellung.

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

public class AVReditorGUI
{
    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;

    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);

        JTextArea textfeld = new JTextArea("huhu");
        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");        

        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();
    }


    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.6-1: AVReditorGUI.java - GUI-Programm noch ohne Funktionalität.

Screenshot der GUI.

Bild 14.6-2: Screenshot der GUI.