kramann.info
© Guido Kramann

Login: Passwort:










4.7 Ergänzung der Funktionalität

4.7 (EN google-translate)

4.7 (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 4.7-1: AVReditorGUI.java - GUI-Programm mit Funktionalität.