> Inhalt: Einführung in das Programmieren mit Java > Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) |
|
Letzte
Bearbeitung dieses Dokuments: |
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:
|
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.
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
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.
Schritt 2: GUI codieren ausgeführt – und dessen Vorbedingungen auch.
Der zusätzliche Code wird fett dargestellt.
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.
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.
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.
/*
* 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.
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)
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
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.
/*
* 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.
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);
}}
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);
}
}
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: |
|
Nach dem Anklicken der Schaltfläche [ Auswahl der SQL-Kommando-Datei ] erscheint der Dialog für die Auswahl der Datei. |
|
Dokument |
Inhalt |
Im nächsten Schritt des Tutorials werden die Parameter für die Verbindung zur Datenbank aus einer Datei mit XML-Struktur gelesen. |