> Inhalt: Einführung in das Programmieren mit Java > Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) 

Tutorial:
Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) – ActionHandler

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, daß Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2008-02-06



Voraussetzungen für das Verständnis dieses Dokuments:

Grundkenntnisse in der Programmierung von Java (Klassen, Methoden, Schleifen) oder anderer Objekt-Orientierter Programmiersprachen (z.B. C++, Modula-2, Pascal).

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit:
Ca.
.

Dieses Dokument zeigt, wie ein 'ActionHandler' bei GUI-Elementen hinzugefügt wird.
Beim Anklicken eines dieser GUI-Elemente wird dann eine bestimmte Methode aufgerufen.

In dieser Methode wird dann festgestellt, welches GUI-Element angeklickt wurde und eine weitere Methode mit der entsprechenden Verarbeitung aufgerufen.

Inhaltsverzeichnis:

Vorigerer Schritt: GUI codieren 

Vorbemerkung und Funktion des Codes 
Vorbedingungen 
Zusätzlicher Code 
* Import der Bibliothek 
* Interface
ActionListener implementieren 
* Methode
actionPerformed codieren 
ActionListener zu den Buttons hinzufügen 
Klasse
DB_Load__ActionHandler eröffnen 
Code für
DB_Load__ActionHandler 
* Methode
handle Event(. . . ) codieren 
* Methode
processSelectFile(. . . ) codieren 
Gesamter Code beim Ende dieses Schritts 
* Klasse
DB_Load 
* Klasse
DB_Load__ActionHandler 
Test
 
Weitere Schritte und verwandte Dokumentation 

Nächster Schritt: XML-Struktur lesen 

Vorbemerkung und Funktion des Codes

In diesem Dokument wird der Code so erweitert, daß ein Klick auf eine Schaltfläche (Button) erkannt werden kann.

Beim Klick auf die Schaltfläche btn_Select wird ein Fenster zur Auswahl der Datei mit den SQL-Kommandos angezeigt.
Beim Klick auf eine der beiden anderen Schaltflächen (btn_Start, btn_Print) wird eine Meldung im Bereich txt_Report ausgegeben.

zum Inhaltsverzeichnis

Vorbedingungen

zum Inhaltsverzeichnis

Zusätzlicher Code

Der zusätzliche Code wird fett dargestellt.

Import der Bibliothek

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

Diese Bibliothek enthält Klassen und Interfaces für die Behandlung von Ereignissen (events); darunter sind auch Klicks mit einer Maustaste auf GUI-Elemente.

zum Inhaltsverzeichnis

Interface ActionListener implementieren

public class DB_Load extends JFrame implements ActionListener {

Die Interface ActionListener gibt dem Programm die Fähigkeit, auf Klicks einer Maustaste zu reagieren wenn der Mauszeiger über einem GUI-Element ist, dem der ActionListener hinzugefügt wurde.

Nach dem Hinzufügen implements ActionListener erscheint eine Fehlermeldung weil die notwendige Methode (actionPerformed()) noch nicht codiert ist.

zum Inhaltsverzeichnis

Methode actionPerformed codieren

      catch(Throwable exc) {
/* Fehler beim Erstellen des Objektes; Fehlermeldung ausgeben. */
        System.out.println("Exception occured in main() of DBLoad");
        exc.printStackTrace(System.
out);
      }
    }
/*
 * Methode die ausgeführt wird wenn ein Klick mit einer Maustaste
 * auf ein GUI-Element, dem der ActionListener hinzugefügt wurde, erfolgt. */
    public void actionPerformed(ActionEvent e) {
/* Identifikation des Buttons der angeklickt wurde ausgeben. */

      get_txt_Report().append(
"Button clicked: " + e.getActionCommand() + "\n");
    }

}

Diese Methode wurde hinzugefügt um den Fehler nach dem Hinzufügen von implements ActionListener zu beseitigen.
Vorläufig wird die Identifikation des Buttons, der angeklickt wurde, im Bereich
txt_Report ausgegeben.

zum Inhaltsverzeichnis

ActionListener zu den Buttons hinzufügen

/*
 * Schaltfläche für die Auswahl der Datei mit den SQL-Kommandos. */
    private JButton get_btn_Select() {
/* Code, der das Element erstellt und die Eigenschaften festlegt
. . . . . . .
. . . . . . .
/* Angezeigten Text festlegen. */
          btn_Select.setText("Auswahl der SQL-Kommando-Datei");
/* Dem Button die Fähigkeit geben, daß bei einem Klick mit einer Maustaste
 * auf den Button die Methode 'actionPerformed()' ausgeführt wird. */
          btn_Select.addActionListener(this);
/* Eindeutige Identifikation des Buttons bei einem Klick mit einer Maustaste. */
          btn_Select.setActionCommand("btn_Select");
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'btn_Select'.");

Der ActionListerner wird dem Button btn_Select hinzugefügt und ein eindeutige Identifikation wird festgelegt

Eine angepaßte Codierung erfolgt auch für die Buttons btn_Start und btn_Print.

Zur Überprüfung, ob der bisher hinzugefügte Code das erwartete Ergebnis zeigt, kann ein Test ausgeführt werden.

zum Inhaltsverzeichnis

Klasse DB_Load__ActionHandler eröffnen

Das Eröffnen der neuen Klasse wird nur in Stichworten und ohne Abbildungen dokumentiert.
Wenn Sie sich unsicher sind, sehen Sie bitte unter
Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) – Einrichten von Project und Class > Class DB_Load eröffnen nach, wie eine Klasse eröffnet wird.

Package: js_intro02.client
Name: DB_Load__ActionHandler
[ ] public static void main(String[] args)   (nicht markiert)
[ ] Constructors from superclass   (nicht markiert)
[ ] Inherited abstract methods   (nicht markiert)

zum Inhaltsverzeichnis

Code für DB_Load__ActionHandler

In diesem Teil wird nur jener Code erläutert, der das Programm um bisher nicht beschriebene Funktionalität ergänzt.

Alle Methoden in dieser Klasse sind als static definiert.
Das bedeutet, daß kein Objekt der Klasse 'konstruiert' werden muß um eine Methode ausführen zu können.
Im Gegenzug gibt es aber nicht die Möglichkeit, Werte innerhalb eine Objektes zu speichern wenn eine Methode beendet ist;
in anderen Worten: die Klasse hat kein 'Gedächtnis'.

Methode handleEvent(. . .) codieren

/*
 * Methode die ermittelt, bei welchem GUI-Element ein 'ActionEvent' ausgelöst wurde
 * und die entsprechende Methode aufruft. */
    public static void handleEvent(DB_Load parmCallingFrame, ActionEvent parmActionEvent) {
/* Zuerst wird die 'Identifikation' des GUI-Element aus dem ActionEvent extrahiert. */
      String cmd = parmActionEvent.getActionCommand().trim();
/* Je nach Auslöser des Events wird die entsprechende Methode aufgerufen. */
      
if(cmd.equals("btn_Select")) processSelectFile(parmCallingFrame);
    }

Zur Wahrung der Übersichtlichkeit (nicht so sehr in diesem einfachen Programm – sondern wenn dieses Muster bei einem umfangreicheren Projekt angewandt wird) wird in dieser Methode nur entschieden, welches GUI-Element mit einer Maustaste angeklickt wurde und die entsprechende Methode aufgerufen.

Durch die Definition der Methode als public static void handleEvent(. . .) muß der Zugriff auf das aufrufende 'Frame' (Fenster) als Parameter übergeben werden (. . . handleEvent(DB_Load parmCallingFrame, ActionEvent parmActionEvent)).
Damit ist auch der Zugriff auf die allgemeinen Parameter möglich; dieser wird aber hier noch nicht gebraucht.

Wie das angeklickte GUI-Element ermittelt wird und wie entschieden wird, welche Methode aufgerufen wird ist im Kommentar beim Code beschrieben.

zum Inhaltsverzeichnis

Methode processSelectFile(. . .) codieren

/*
 * Methode die ausgeführt wird wenn die Datei mit den SQL-Kommandos ausgewählt werden soll. */
    public static void processSelectFile(DB_Load parmCallingFrame) {
/* 
 * Fenster für den 'File-dialog' aufrufen;
 * in diesem kann der Benutzer eine Datei auswählen. */
      FileDialog fd = new FileDialog(parmCallingFrame,
                                     
"Bitte wählen Sie die Datei mit den SQL-Kommandos",
                                     FileDialog.
LOAD);
/* 
 * Anfangswerte für Verzeichnis und Dateiname setzen und Fenster sichtbar machen. */
      fd.setFile("");
      fd.setDirectory(
"");
      fd.setVisible(
true);
/* 
 * Name für gewähltes Verzeichnis und Datei aus dem 'File-dialog' holen
 * und einen String bilden. */
      String strDirectoryAndFileName = fd.getDirectory() + fd.getFile();
/* 
 * Verzeichnis und Datei-Name im entsprechenden Feld anzeigen. */
      parmCallingFrame.get_txt_InputFile().setText(strDirectoryAndFileName);
    }

In dieser Methode wird der (von einer Standard-Java-Bibliothek zur Verfügung gestellte) Dialog genutzt, um den Benutzer die Datei mit den SQL-Kommandos auswählen zu lassen.
Die gewählte Datei mit der gesamten Verzeichnis-Struktur wird dann im Feld
txt_InputFile angezeigt. Aus diesem Feld wird der Name der Datei für spätere Verwendung auch wieder ausgelesen.
Für eine genauere Beschreibung lesen Sie bitte bei den entsprechenden Kommentaren im Code nach.

Um das Beispiel einfach zu halten wird keine Fehlerbehandlung ausgeführt; damit kann es auch vorkommen, daß keine Datei oder erst gar kein Verzeichnis ausgewählt werden können.
Das wird in Kauf genommen weil dieses Übungsbeispiel nicht für den Echt-Einsatz vorgesehen ist.

zum Inhaltsverzeichnis

Gesamter Code am Ende dieses Schrittes

Klasse DB_Load

package js_intro02.client;
 
import
java.awt.*;
import
java.awt.event.*;
import
javax.swing.*;
/**
 *
 * @author kurt@javascout.biz
 * @date 2008-01-25
 *
 * @description
 *  Übungsbeispiel für:
 *  * Die Erstellung einer Graphischen Benutzeroberfläche GUI / Graphic User Interface).
 *  * Reagieren auf Klicks auf Schaltflächen (Buttons).
 *  * Öffnen und Lesen von sequentiellen Dateien.
 *  * Benutzen einer XML-Struktur zum Ermitteln von Parametern.
 *  * Verbindung zu einem Datenbanksystem aufbauen.
 *  * Ausführen von SQL-Kommandos gegen eine Datenbank.
 *  * Ausgeben von Informationen auf eine GUI.
 *  * Drucken der auf der GUI ausgegebenen Informationen.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class DB_Load extends JFrame implements ActionListener {
/*
 * Elemente für den Aufbau der GUI.
 * Erklärung der Funktion bei den einzelnen Methoden zur Initialisierung. */
    private JPanel pnl_Main=null;
    
private JButton btn_Select=null;
    
private JButton btn_Start=null;
    
private JButton btn_Print=null;
    
private JTextField txt_InputFile=null;
    
private JScrollPane scroll_Report=null;
    
private JTextArea txt_Report=null;
/* */
/*
 * Constructor der Klasse; die Kommandos hier werden ausgeführt
 * wenn ein Objekt der Klasse erstellt wird. */
    public DB_Load(){
/* Zuerst wird der Constructor der geerbten Klasse (JFrame) ausgeführt. */
      super();
/* Dann wird die Methode mit den Initialisierungen der GUI ausgeführt. */
      initialize();
    }

/*
 * Definition der einzelnen GUI-Elemente.
 */
/*
 * Schaltfläche für die Auswahl der Datei mit den SQL-Kommandos. */
    private JButton get_btn_Select() {
/* Code, der das Element erstellt und die Eigenschaften festlegt
 * wenn es nicht bereits initialisiert ist. */
      if (btn_Select == null) {
        
try {
/* 'Construct' eines neuen Objektes. */
          btn_Select = new JButton();
/* GUI-Element mit Namen versehen; über diesen kann es einfacher identifiziert werden. */
          btn_Select.setName("btn_Select");
/* Tool-Tip-Text festlegen; das ist jener Text der angezeigt wird
 * wenn der Mauszeiger über dem GUI-Element ist. */
          btn_Select.setToolTipText("Datei mit den SQL-Kommandos auswählen");
/* Abstand zu den imaginären Rändern des Feldes innerhalb des GridBagLayout.
 * Das verhindert ein 'Zusammenstoßen' von GUI-Elementen. */
          btn_Select.setMargin(new Insets(3,3,3,3));
/* Position innerhalb des GridBagLayout-Feldes. */
          btn_Select.setVerticalTextPosition(SwingConstants.CENTER);
          
btn_Select.setHorizontalTextPosition(SwingConstants.CENTER);
/* Angezeigten Text festlegen. */
          btn_Select.setText("Auswahl der SQL-Kommando-Datei");
/* Dem Button die Fähigkeit geben, daß bei einem Klick mit einer Maustaste
 * auf den Button die Methode 'actionPerformed()' ausgeführt wird. */
          btn_Select.addActionListener(this);
/* Eindeutige Identifikation des Buttons bei einem Klick mit einer Maustaste. */
          btn_Select.setActionCommand("btn_Select");
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'btn_Select'.");
          Exc.printStackTrace();
        }
      }
      
return btn_Select;
    }

/*
 * Ein-/Ausgabe-Feld für das Verzeichnis und den Namen der Datei
 * mit den SQL-Kommandos. */
    protected JTextField get_txt_InputFile() {
      
if (txt_InputFile == null) {
        
try {
          
txt_InputFile = new JTextField();
          
txt_InputFile.setName("txt_InputFile");
          
txt_InputFile.setToolTipText("Selected Input-File containing SQL-commands");
          
txt_InputFile.setMargin(new Insets(3,3,3,3));
/* Eingabe in dieses Feld nicht erlauben weil die Auswahl der Datei über die
 * Schaltfläche 'btn_Select' erfolgt. */
          txt_InputFile.setEditable(false);
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'txt_InputFile'.");
          Exc.printStackTrace();
        }
      }
      
return txt_InputFile;
    }

/*
 * Schaltfläche für das Ausführen der SQL-Kommandos. */
    private JButton get_btn_Start() {
      
if (btn_Start == null) {
        
try {
          
btn_Start = new JButton();
          
btn_Start.setName("btn_Start");
          
btn_Start.setToolTipText("Ausführung der SQL-Kommandos beginnen.");
          
btn_Start.setMargin(new Insets(3,3,3,3));
          
btn_Start.setVerticalTextPosition(SwingConstants.CENTER);
          
btn_Start.setHorizontalTextPosition(SwingConstants.CENTER);
          
btn_Start.setText("Start SQL-Kommandos");
          
btn_Start.addActionListener(this);
          btn_Start.setActionCommand("btn_Start");
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'btn_Start'.");
          Exc.printStackTrace();
        }
      }
      
return btn_Start;
    }

/*
 * Ein-/Ausgabe-Bereich für die Dokumentation der ausgeführten SQL-Kommandos
 * und die Rückmeldungen vom Datenbanksystem. */
    protected JTextArea get_txt_Report() {
      
if (txt_Report == null) {
        
try {
          
txt_Report = new JTextArea();
          
txt_Report.setName("txt_Report");
          
txt_Report.setToolTipText("Report");
          
txt_Report.setMargin(new Insets(3,3,3,3));
/* Eingabe in dieses Feld nicht erlauben weil hier nur Meldungen angezeigt werden. */
          txt_Report.setEditable(false);
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'txt_Report'.");
          Exc.printStackTrace();
        }
      }
      
return txt_Report;
    }

/*
 * Scroll-Bereich für 'txt_Report'.
 * Der Scroll-Bereich wird automatisch mit Scroll-Bars versehen wenn Breite bzw.
 * Höhe nicht mehr für die Anzeige des Textes in 'txt_Report' ausreichen. */
    private JScrollPane get_scroll_Report() {
      
if (scroll_Report == null) {
        
try {
/* Als Inhalt des ScrollPane wird gleich die TextArea für die Kontroll-Ausgaben definiert. */
          scroll_Report = new JScrollPane(get_txt_Report());
          
txt_Report.setName("scroll_Report");
/* Setzen der Anfangsgröße. */
          txt_Report.setPreferredSize(new Dimension(800, 600));
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'scroll_Report'.");
          Exc.printStackTrace();
        }
      }
      
return scroll_Report;
    }

/*
 * Schaltfläche für den Start des Drucks der Meldungen. */
    private JButton get_btn_Print() {
      
if (btn_Print == null) {
        
try {
          
btn_Print = new JButton();
          
btn_Print.setName("btn_Print");
          
btn_Print.setToolTipText("Meldungen des Programms ausdrucken.");
          
btn_Print.setMargin(new Insets(3,3,3,3));
          
btn_Print.setVerticalTextPosition(SwingConstants.CENTER);
          
btn_Print.setHorizontalTextPosition(SwingConstants.CENTER);
          
btn_Print.setText("Meldungen drucken");
          
btn_Print.addActionListener(this);
          btn_Print.setActionCommand("btn_Print");
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'btn_Print'");
          Exc.printStackTrace();
        }
      }
      
return btn_Print;
    }

/*
 * Panel, auf dem die oben definierten GUI-Elemente für Ein- bzw. Ausgabe
 * platziert werden. */
    private JPanel get_pnl_Main() {
      
if (pnl_Main == null) {
        
try {
          
pnl_Main = new JPanel();
          
pnl_Main.setName("pnl_Main");
/*
 * Das Panel hat das GridBagLayout.
 * Dieses Layout ist flexibel und verändern die Größe einzelner GUI-Elemente
 * proportional mit der Größenveränderung des Fensters. */
          pnl_Main.setLayout(new GridBagLayout());
/*
 * GridBagConstraints für das aufzunehmende GUI-Element festlegen. */
          GridBagConstraints gbc_btn_Select = new GridBagConstraints();
/* Position: linke Spalte (gridx = 0) in der obersten Reihe (gridy = 0). */
          gbc_btn_Select.gridx = 0;
          gbc_btn_Select.
gridy = 0;
/* Größenveränderung in der Breite (horizontale Ausrichtung) zulassen. */
          gbc_btn_Select.fill = GridBagConstraints.HORIZONTAL;
/* Proportionalität der Größenveränderung im Vergleich zu anderen
 * GUI-Elementen in der selben Reihe. */
          gbc_btn_Select.weightx = 1;
/* Ausrichtung innerhalb des 'Grid' Feldes: am rechten Rand. */
          gbc_btn_Select.anchor = GridBagConstraints.LINE_END;
/* GUI-Element in das Panel 'einhängen'; Position ist durch die GridBagConstraints bestimmt. */
          get_pnl_Main().add(get_btn_Select(), gbc_btn_Select);
/*
 * GridBagConstraints für das aufzunehmende GUI-Element festlegen. */
          GridBagConstraints gbc_txt_InputFile = new GridBagConstraints();
          gbc_txt_InputFile.
gridx = 1;
          gbc_txt_InputFile.
gridy = 0;
          gbc_txt_InputFile.
fill = GridBagConstraints.HORIZONTAL;
/* Definition, daß das GUI-Element 2 'Felder' des GridBags breit ist. */
          gbc_txt_InputFile.gridwidth = 2;
          gbc_txt_InputFile.
weightx = 3;
          gbc_txt_InputFile.
anchor = GridBagConstraints.CENTER;
/* */
          get_pnl_Main().add(get_txt_InputFile(), gbc_txt_InputFile);
/*
 * GridBagConstraints für das aufzunehmende GUI-Element festlegen. */
          GridBagConstraints gbc_btn_Start = new GridBagConstraints();
          gbc_btn_Start.
gridx = 0;
          gbc_btn_Start.
gridy = 1;
          gbc_btn_Start.
fill = GridBagConstraints.HORIZONTAL;
          gbc_btn_Start.
gridwidth = 3;
          gbc_btn_Start.
weightx = 1;
          gbc_btn_Start.
anchor = GridBagConstraints.LINE_START;
/* */
          get_pnl_Main().add(get_btn_Start(), gbc_btn_Start);
/*
 * GridBagConstraints für das aufzunehmende GUI-Element festlegen. */
          GridBagConstraints gbc_scroll_Report = new GridBagConstraints();
          gbc_scroll_Report.
gridx = 0;
          gbc_scroll_Report.
gridy = 2;
          gbc_scroll_Report.
gridwidth = 3;
          gbc_scroll_Report.
fill = GridBagConstraints.BOTH;
          gbc_scroll_Report.
weightx = 10;
          gbc_scroll_Report.
weighty = 10;
          gbc_scroll_Report.
anchor = GridBagConstraints.CENTER;
/* */
          get_pnl_Main().add(get_scroll_Report(), gbc_scroll_Report);
/*
 * GridBagConstraints für das aufzunehmende GUI-Element festlegen. */
          GridBagConstraints gbc_btn_Print = new GridBagConstraints();
          gbc_btn_Print.
gridx = 2;
          gbc_btn_Print.
gridy = 3;
          gbc_btn_Print.
fill = GridBagConstraints.HORIZONTAL;
          gbc_btn_Print.
weightx = 1;
          gbc_btn_Print.
anchor = GridBagConstraints.LINE_START;
/* */
          get_pnl_Main().add(get_btn_Print(), gbc_btn_Print);
        }
        
catch (Throwable Exc) {
/* Fehler beim Erstellen des Elementes; Fehlermeldung ausgeben. */
          System.out.println("Fehler beim initialisieren von 'pnl_Main'");
          Exc.printStackTrace();
        }
      }
      
return pnl_Main;
    }

/*
 * Methode mit den Kommandos zum Anzeige der GUI. */
    private void initialize() {
/* Das Fenster (JFrame) wird auf der Benutzeroberfläche angezeigt. */
      setVisible(true);
/* Die Größe des Fensters wird festgelegt. */
      setSize(800, 700);
/* Text für die Title-Bar, das ist der blaue Streifen am oberen Rand. */
      setTitle("JavaScout-Tutorial::Datenbank Ladeprogramm (Java_Intro_02)");
/* Das Haupt-Panel für das Fenster wird festglegt.
 * Auf diesem Panel sind dann Sub-Panels bzw. andere GUI-Elemente 'angeordnet'. */
      setContentPane(get_pnl_Main());
    }
/* */
/*
 * Methode die definiert, daß diese Klasse ein ausführbares Programm ist. */
    public static void main(String[] args) {
      
try {
/* Ein Objekt dieser Klasse wird erstellt. */
        DB_Load aDB_Load = new DB_Load();
      }
      
catch(Throwable exc) {
/* Fehler beim Erstellen des Objektes; Fehlermeldung ausgeben. */
        System.out.println("Exception occured in main() of DBLoad");
        exc.printStackTrace(System.
out);
      }
    }
/*
 * Methode die ausgeführt wird wenn ein Klick mit einer Maustaste
 * auf ein GUI-Element, dem der ActionListener hinzugefügt wurde, erfolgt. */

    public void actionPerformed(ActionEvent e) {
/* Identifikation des Buttons der angeklickt wurde ausgeben. */
      get_txt_Report().append("Button clicked: " + e.getActionCommand() + "\n");
/*
 * Weitere Verarbeitung in einer eigenen Klasse mit statischen Methoden. */

      DB_Load__ActionHandler.handleEvent(this, e);
    }
}

zum Inhaltsverzeichnis

Klasse DB_Load__ActionHandler

package js_intro02.client;
 
import
java.awt.*;
import
java.awt.event.*;
/**
 *
 * @author kurt@javascout.biz
 * @date 2008-02-07
 *
 * @description
 *  Klasse mit statischen Methoden die ausgeführt werden wenn ein 'event'
 *  (z.B. der Klick einer Maustaste) aufgetreten ist.
 *  Detail-Dokumentation finden Sie bei den einzelnen Methoden.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class DB_Load__ActionHandler {
/*
 * Methode die ermittelt, bei welchem GUI-Element ein 'ActionEvent' ausgelöst wurde
 * und die entsprechende Methode aufruft. */
    public static void handleEvent(DB_Load parmCallingFrame, ActionEvent parmActionEvent) {
/* Zuerst wird die 'Identifikation' des GUI-Element aus dem ActionEvent extrahiert. */
      String cmd = parmActionEvent.getActionCommand().trim();
/* Je nach Auslöser des Events wird die entsprechende Methode aufgerufen. */
      if(cmd.equals("btn_Select")) processSelectFile(parmCallingFrame);
    }

/*
 * Methode die ausgeführt wird wenn die Datei mit den SQL-Kommandos ausgewählt werden soll. */
    public static void processSelectFile(DB_Load parmCallingFrame) {
/* 
 * Fenster für den 'File-dialog' aufrufen;
 * in diesem kann der Benutzer eine Datei auswählen. */
      FileDialog fd = new FileDialog(parmCallingFrame,
                                     
"Bitte wählen Sie die Datei mit den SQL-Kommandos",
                                     FileDialog.
LOAD);
/* 
 * Anfangswerte für Verzeichnis und Dateiname setzen und Fenster sichtbar machen. */
      fd.setFile("");
      fd.setDirectory(
"");
      fd.setVisible(
true);
/* 
 * Name für gewähltes Verzeichnis und Datei aus dem 'File-dialog' holen
 * und einen String bilden. */
      String strDirectoryAndFileName = fd.getDirectory() + fd.getFile();
/* 
 * Verzeichnis und Datei-Name im entsprechenden Feld anzeigen. */
      parmCallingFrame.get_txt_InputFile().setText(strDirectoryAndFileName);
    }

}

zum Inhaltsverzeichnis

Test

Der Code für das Programm kann jetzt durch Auswahl von Run>Run ausgeführt werden.

Nach einigen Sekunden (abhängig von der Leistung des Computers) erscheint das Fenster.

Nach dem Anklicken der Schaltfl#ächen (Buttons) wird im großen Bereich ein Text mit der Identifikation des jeweiligen Buttons angezeigt.

Hinweis wenn GUI-Elemente nicht sichtbar sind:
Bei meiner derzeit installierten Kombination von Eclipse und Java kommt es häufig vor, daß nach dem Starten des Programms nur der leere Rahmen des Fensters angezigt wird und keine Elemente sichtbar sind.
Diese werden erst sichtbar, wenn das Fenster etwas verkleinert oder vergrößert wird.

Nach dem Anklicken der Schaltfläche [ Auswahl der SQL-Kommando-Datei ] erscheint der Dialog für die Auswahl der Datei.



zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Tutorial: Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) – XML-Struktur lesen  

Im nächsten Schritt des Tutorials werden die Parameter für die Verbindung zur Datenbank aus einer Datei mit XML-Struktur gelesen.

zum Inhaltsverzeichnis