kramann.info
© Guido Kramann

Login: Passwort:










4.6 Erste möglichst einfache Version einer GUI

4.6 (EN google-translate)

4.6 (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.

Die Fensteraufteilung könnte demnach folgendermaßen aussehen:

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

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

Screenshot der GUI.

Bild 4.6-2: Screenshot der GUI.