Java (Swing)

Quellcodes

Hier finden Sie über 400 verschiedene Java-Quellcode für die unterschiedlichen Bereiche. Der Schwerpunkt ist die graphische Programmierung, aber man findet auch Beispiele für Design Pattern, System-Einstellungen, JNI, Java mit Datenbanken, Persistente Speicherung mit DataOutputStream bzw. Serialize.
Ableitung eines JTextField mit Listener, mit onChange-Event
Formatierung eines String, NumberFormat
JTree
JDBC (Datenbanken)
Export nach Excel
Pipe (in einem Stream schreiben, aus einem Stream lesen)
Starten eines Programms, ProzessBuilder statt Runtime.getRuntime().exec
Read und Write, Einbau eines Hexeditors
Plausibilitätsprüfung, sind die Daten vom Typ int, double?, mit regulären Ausdrücken
RTTI, Run Time Type Indentification, zur Laufzeit werden die Methoiden einer Klassen bestimmt
JUnit, Testbeispiele
XML, Testbeispiele, Neu mit speichern und lesen von KLassen nach XML


Single Probleme

Action-Listener (5 Beispiele)

read_write, einfache Testbeispiele für das Schreiben und Lesen mittel DataOutputStream,. PrinStream, Zip, gz und unread
read_write_Beispiel, kompexere Testbeispiele für das Schreiben und Lesen mittel DataOutputStream,. Serializer, XML

Java Paint
Bitmap Programm, Gezeichnet werden Linen, Kreise und Rechtecke durch Aufziehen der Maus

Hexeditor
Hexeditor mit Register und suchen von Dateien inkl. Preview
Die Bytes werden mit drawString gezeichnet
Noch ein Viewer

Steuerungsbehälter
Mit einem Ventil kann ein Behälter gefüllt werden
Drei Ventile entleeren den Behälter
Abflussmenge kann individuell gesteuert werden
Geregelt werden die Befehle mittels AND / OR


JSplitPane

Bitte beachten Sie auch den kompletten Quellcode des JExplorers (zu finden in Java-Programme)
Bitte beachten Sie meine JvEdit-Umgebung, damit lassen sich alle Beispiele direkt mit einem Doppelklick ausführen.
Einfach JvEdit mit der Erweiterung java verknüpfen.

Singleton-Beispiele: singleton.zip
Observer-Beispiele: observer.zip (Observer2.java verbessert)
MDI (Multi-Document-Interface mit JInternalFrame)

Alle Quellen und Dokumente: java.7z (8,6 MB, 757 Java-Dateien, Stand 26.10.2015)
Alle Quellen und Dokumente: java.zip (24,4 MB, 757 Java-Dateien, Stand 26.10.2015)

Aktueller Stand 26.10.2015


Beispiel-Auswahl


Allgemeine Basisklasse

Beschreibung Download
Basisklasse in Java mit Dialogfenster für fast alle Beispiele:

JOptionPane
Umwandlung Text in Zahlen
Umwandlung Zahlen in Text
FileExists etc.
CenterScreen
Welcher Mausschalter ist gedrückt

neu inkl. Properties
(PathSeparator, LineSeparator, Username, Userdir etc.)
BspBasis.java
BCBasis.java

Action-Listener

Beschreibung Download
Beispiele, wie man ein Klick-Event mit einem oder mehreren Schalter verbindet Action.7z

Action1.java
Action2.java
Action3.java
Action4.java
Action5.java

Bilder

Beschreibung Download
Grafikbeispiele grafikbeispiele (Stand 04.10.2010)
Bildverarbeitung
Grafik2D
Grafik2D.zip (Stand 04.10.2010)
Beispiele mit Bilder
Memory-Varianten
Bilder.zip

Border

Beschreibung Download
Border-Beispiel

Rahmen um GUI-Elemente
Border01.java

ClipBoard

Beschreibung Download
Programm zum Kopieren und Einfügen aus der Zwischenablage Clipboard01.java
Clipboard02.java

dBase

Beschreibung Download
Beispiele für das Einlesen von dBase-Dateien
dBase Beispiele werden mitgeliefert
dBase.zip

Design Pattern

Beschreibung Download
Singleton Pattern mit Java singleton.zip

Singleton.pdf

Beispiele:
Singleton1.java (nicht Threadsicher)
Singleton2.java (nicht Threadsicher)
Singleton3.java (nicht Threadsicher)
Singleton4.java (nicht Threadsicher)
Singleton5.java (Threadsicher)
Singleton6.java (Threadsicher mit JInternalFrame)

Singleton_enum.java (Threadsicher mit enum)
Singleton_extends.java (abgeleitete Singleton)
Observer observer.zip
observer.pdf

Beispiele:
Observer1.java

mit JTextFieldDocListener:
Observe2.java (ein Textfeld)
Observer3.java (zwei Textfelder)
Observer4.java (ein JTextArea)

Drag & Drop

Beschreibung Download
Drag & Drop Drag & Drop_1.java (nur eine Richtung)

Drag & Drop_2.java (beide Richtung)

Drag & Drop_3.java (Verwendet setDragEnabled)

Drag & Drop_4.java (Verwendet setDragEnabled)

Excel Export

Beschreibung Download
Export nach Excel mittels des Binary Interchange File Format (BIFF)

Hauptproblem:
Windows speichert in little Endian
Java speichert in big Endian
Export2Excel_01.java

Bild: Export2Excel.jpg
Export nach Excel mittels des Binary Interchange File Format (BIFF)
Diese Lösung verwendet beim Double-Datentyp zwei Pipes
Die erste Lösung ist natürlich besser, zeigt aber die Verwendung von Pipes
Hauptproblem:
Windows speichert in little Endian
Java speichert in big Endian
Export2Excel_02.java

Bild: Export2Excel.jpg

Exception

Beschreibung Download
Exception mit Java
Abfangen einer Exception
Zwingen, dass der Aufruf einer Methode mittels eines try catch Block programmiert werden muss
Exception.zip

File: Dateien suchen

Beschreibung Download
Beispiele mit der Klasse File, um Dateien und Verzeichnisse rekursiv zu suchen FCB1.java
FCB2.java (mit JTree, aber nicht vollständig, dann besser JExplorer ansehen)

FCB = File Control Block

FileChooser

setzen des aktuellen Verzeichnisses mit Hilfe des Programmpfades:
jFileChooser1.setCurrentDirectory( new File( (String) System.getProperties().get("user.dir") ) );


Grafikbeispiele

Beschreibung Download
Grafikbeispiele grafikbeispiele
Neu: drawString, auch mit Attributen
Beispiel: String03.jpg
Bildverarbeitung
Grafik2D
Grafik2D.zip
Beispiele mit Bilder
Memory-Varianten
Bilder.zip
Zeichnen eines vertikalen Strings Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform at = new AffineTransform();
int x=50;
int y=100;
at.setToRotation( Math.toRadians(-90), x,y ); // theta x y
g2d.setTransform(at);
g2d.drawString("Name", x,y);

HashMap

Beschreibung Download
Hashmap hashmap1.java
hashmap2.java
hashmap3.java

Hexeditor

Beschreibung Download
Hexeditor mit Register
Suchen von Dateien inkl. Preview
Suchfenster mit JSplitter
Die Bytes werden mit drawString gezeichnet
Export nach Excel mittels BIFF
Hexeditor.7z
1. Preview-Bild
2. Preview-Bild


Java Native Interface

Beschreibung Download
Java Native Interface Beispiele und Dokumentation

JButton, MouseOver und HTML

Beschreibung Download
Beispiele mit JButton
Laden von Bildern in JButton
MouseEnter, MouseExit
JButton.zip
JButton.pdf (Beispiele als PDF)

JCheckBox mit JFrames

Beschreibung Download
Beispiele für Dialogfenster mit JCheckBox CheckBox01.java
// Auslesen des Wertes (isSelected)
// OnChange-Event für die Checkboxen

JComboBox mit JFrames

Beschreibung Download
Beispiele für Dialogfenster mit einer JComboBox ComboBox.pdf
Beispiel 1: Eine ComboBox

Beispiel 2: Zwei ComboBoxen, mit Update beim Auswahl der linken ComboBox


combo.setEditable(false);
combo.setSelectedIndex(-1); // keine Markierung
Benutzt ein ListModel als Vector Beispiel 3: Zwei ComboBoxen, mit Update beim Auswahl der linken ComboBox,

class myVector extends AbstractListModel implements ComboBoxModel {

Syntax

JComboBox cbFormat = new JComboBox();
cbFormat.addItem("0000"); // kein Array oder Vector


JFrames mit GUI-Elementen

Beschreibung Download
Beispiele mit GUI

Kombinationen mit
Textfeldern, CheckBox, Radiobutton
Rahmen um GUI-Elemente
GUI.zip

GUI.pdf

GUI_01: Editor mit TextField
GUI_02: JFrame mit RadioButton, CheckBox, Textfield
GUI_03: Beispiel GUI_02 mit Editor, im Editor werden die Einträge verwaltet
GUI_04: Beispiel GUI_02 mit Liste, in der Liste werden die Einträge verwaltet
GUI_05: Beispiel GUI_02 mit Tabelle, in der Tabelle werden die Einträge verwaltet
GUI_06: Beispiel GUI_02 mit Tabelle, ComboBox als Spalteneditoren
GUI_07: JSpinnervarianten, mit Datum
GUI_08: ProgressBar, Slider, Threads
GUI_09: Beispiel für die Verwendung von Border mit Eingabezeilen

JDialog

Beschreibung Download
einfaches Dialogbeispiel
Ein JDialog verwendet man, wenn man modale Eingabe benötigt.
Das heisst, der Benutzer kann nur den aktuellen Dialog verwenden.
Dialog1.java
Ein JDialog verwendet man, wenn man modale Eingabe benötigt.
Das heisst, der Benutzer kann nur den aktuellen Dialog verwenden.
Diese Beispiel zeigt eine JTable.
Mit einem Doppelklick wird ein JDialog aufgerufen.
Tabelle mit sortieren, compare Routine und Doppelklick mit JDialog
Tabelle20.java

JInternalframes

Beschreibung Download
Überwachen des Schließens eines JInternalframes
Closing a JInternalframes
closing_JInternalFrame


JLIst mit JFrames

Beschreibung Download
Beispiele für Dialogfenster mit verschiedenen JList JList.zip
Liste.pdf
jlist2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
/*
SINGLE_SELECTION
SINGLE_INTERVAL_SELECTION
MULTIPLE_INTERVAL_SELECTION
*/
Beispiel einer JList mit einer Klasse
Einfügen, Löschen, Bearbeiten
JListe06.java

JRadioButton mit JFrames

Beschreibung Download
Beispiele für Dialogfenster mit JRadioButton RadioButton.zip
RadioButton.pdf
Einzelne Beispiele RadioButton05.java fertiges Beispiel ohne Array, Vorschau
RadioButton06.java fertiges Beispiel mit Array, Vorschau

JTabbedPane mit JFrames

Beschreibung Download
Beispiele für die Anwendung von TabbedPane JTabbed Pane.zip
Erstellen von TabbedPane JPanel panel;
int n = jTabbedPane1.getTabCount();
for (int i=0; i<4; i++) {
panel = new JPanel();
jTabbedPane1.add(i.toString(), panel);
}
Holen der TabbedPane JPanel panel;
int n = jTabbedPane1.getTabCount();
for (int j=0; j<n; j++) {
panel = (JPanel) jTabbedPane1.getComponentAt(j);
panel.setBackground(Color.RED);
}

JTable mit JFrames

Beschreibung Download
Beispiele für die Anwendung von Tabellen Tabellenbeispiele.zip
Tabellen.pdf
Beispiel einer JTable mit einer Klasse
Doppelklick erzeugt ein JDialog zum Ändern der Daten
Tabelle08.java
Bild des Beispiels
Beispiel mit einer Tabelle
Sortieren
Doppelklick mit JDialog
Einfache Sortierbeispiele

table.setAutoCreateRowSorter(true);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

JComboBox comboBox = new JComboBox( items );
TableColumn colorColumn = table.getColumn("Favorite Color");
// Eine Combobox dient als Editor für die Spalte "Favorite Color"
colorColumn.setCellEditor( new DefaultCellEditor(comboBox) );

// Setzen eines Hintergrunds und Tooltipp für die Farbspalte
DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer();
colorColumnRenderer.setBackground(Color.cyan);
colorColumnRenderer.setToolTipText("Click for combo box");
colorColumn.setCellRenderer(colorColumnRenderer);
Tabelle mit einer Klasse
manuelle Sortierung und automatische Sortierung
Doppelklick liefert Dialogfenster
Problem der internen Sortierung mit Dialogfenster gelöst
TabelleSortierung.java

Einfacher geht es mit :
table.setAutoCreateRowSorter(true);

Hier wird aber nur nach einer Spalte sortiert.
Scrollen zu einer bestimmten Zeile Tabelle10.java

Beispiel mit Schaltern:
Tabelle10.zip

Bild:
Tabelle10.jpg
Spaltenbreite in JTable
ColumnWidth in JTable
Man setzt die Automatik außer Kraft uns setzt dann die Breiten

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(45);
table.getColumnModel().getColumn(1).setPreferredWidth(100);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
int n=10;
for (int col=3; col<n; col++) {
_table.getColumnModel().getColumn(col).setPreferredWidth(90);
}

Tabellenspalten zentrieren

DefaultTableCellRenderer nnumberColumnRenderer = new DefaultTableCellRenderer();
numberColumnRenderer.setHorizontalAlignment(JLabel.CENTER); // RIGHT LEFT
// holen der Spalten
TableColumn numbersColumn = table.getColumn("Favorite Number"); // Spaltenüberschrift
// setzen der Ausrichtung
numbersColumn.setCellRenderer(numberColumnRenderer);


JTextArea, Notepad

Beschreibung Download
Scrollpane Beispiel mit Editor

Scrollbalken ist immer sichtbar
Notepad1.java

scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
/*
HORIZONTAL_SCROLLBAR_AS_NEEDED bzw.
VERTICAL_SCROLLBAR_AS_NEEDED

HORIZONTAL_SCROLLBAR_ALWAYS bzw.
VERTICAL_SCROLLBAR_ALWAYS

HORIZONTAL_SCROLLBAR_NEVER bzw.
VERTICAL_SCROLLBAR_NEVER
*/

JTextFieldDocListenerTest

Beschreibung Download
ein JTextField wird mit einem Listener abgeleitet
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3
JTextFieldDocListenerTest1.java

Bild:
JTextFieldDocListenerTest1.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3
JTextFieldDocListenerTest2.java

Bild:
JTextFieldDocListenerTest2.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3

Zusätzlich wird bei jedem Tastendruck abgeprüft, ob das Ergebnis eine int-Zahl ist
Buchstaben, Punkte, Sonderzeichen werden NICHT in den Editor eingetragen
JTextFieldDocListenerTest3.java

Bild:
JTextFieldDocListenerTest3.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3

Zusätzlich wird bei jedem Tastendruck abgeprüft, ob das Ergebnis eine double-Zahl ist
Buchstaben, Sonderzeichen werden NICHT in den Editor eingetragen
JTextFieldDocListenerTest4.java

Bild:
JTextFieldDocListenerTest4.jpg

JTrees mit JFrames

Beschreibung Download
Beispiele mit JTree JTree.zip (Alle Quellen)
Einfaches Beispiel mit DefaultMutableTreeNode Tree02.java

Tree02.jpg
Beispiel mit DefaultMutableTreeNode
mit toString Methode
Tree06.java

Tree06.jpg
Beispiel mit DefaultMutableTreeNode
CTreeNodeRec liefert Zusatzinformationen, mit toString
Klick Ereignis wird abgefangen (Single bzw. Double-Click)
Die KlickID ist je nach Baumstruktur unterschiedlich
Einfach Äste öffnen
Aufruf eines Ereignisses, MessageBox, wenn ID>2
Methode CreateAktionFromTreeNode
Die Methode „CreateAktionFromTreeNode“ verweist dann auf die eigentliche Aktion
Tree07.java

Tree07.jpg

Diese Variante ist als Startversion sinnvoll
Beispiel mit DefaultMutableTreeNode
CTreeNodeRec liefert Zusatzinformationen, mit toString
Klick Ereignis wird abgefangen (Single bzw. Double-Click)
Die KlickID ist je nach Baumstruktur unterschiedlich
Einfach Äste öffnen
Aufruf eines Ereignisses, MessageBox, wenn ID>2
Methode CreateAktionFromTreeNode

Die Methode „CreateAktionFromTreeNode“ verweist dann auf die eigentliche Aktion
Vier Schalter (Add, Remove, Add Node Clear)
Mit Maus-Event aus Tree07.java

AddNode fügt einen Knoten untern dem aktuellen Knoten ein
Tree08.java

Tree08.jpg
Beispiel mit DefaultMutableTreeNode
CTreeNodeRec liefert Zusatzinformationen, mit toString
Klick Ereignis wird abgefangen (Single bzw. Double-Click)
Die KlickID ist je nach Baumstruktur unterschiedlich
Einfach Äste öffnen
Aufruf eines Ereignisses, MessageBox, wenn ID>2
Methode CreateAktionFromTreeNode

Die Methode „CreateAktionFromTreeNode“ verweist dann auf die eigentliche Aktion
Vier Schalter (Add, Remove, Add Node Clear)
Mit Maus-Event aus Tree07.java

AddNode fügt einen Knoten untern dem aktuellen Knoten ein.
Mit einem Doppelklick werden „Daten“ in den Editor eingetragen
Tree09.java

Tree09.jpg

JTree MouseClick

jTree1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jTree1_mouseClicked(e);
}
});


void jTree1_mouseClicked(MouseEvent e) {
int selRow = jTree1.getRowForLocation(e.getX(), e.getY());
TreePath selPath = jTree1.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
if(e.getClickCount() == 1) {
SingleClick(selRow, selPath);
}
else if(e.getClickCount() == 2) {
DoubleClick(selRow, selPath);
}
}
}


Weitere Methoden:
jTree1.setBorder(BorderFactory.createLineBorder(Color.black));
jTree1.setToolTipText("ToolTipp");
jTree1.setShowsRootHandles(true);

// Horizontale Linien
jTree1.putClientProperty("JTree.lineStyle","Horizontal");
// Mit Linien zwischen den Knoten
jTree1.putClientProperty("JTree.lineStyle","Angled");
// Alle Knoten expandieren
for (int i=0; i<jTree1.getRowCount(); i++) {
jTree1.expandRow(i);
}


JUnit

Beschreibung Download
Testbeispiele für Java Unit, JUnit JUnit.zip

Literatur

JUnit: Profi-Tipps
Klaus Meffert
Entwickler.press
ISBN: 3-935042-76-0
2006

Softwaretests mit JUnit
Verlag: Dpunkt Verlag; 2. Auflage, 2005
ISBN-10: 3898643255
ISBN-13: 978-3898643252


Klassen

Beschreibung Download
Klassenbeispiele
(contr*.java, Interface, Tisch, WBaum)
Klassen.zip

Layout

Beschreibung Download
Layout-Beispiele Layout.zip
Layout.pdf
Beispiele Mehrere Zeilen: GridBagLayout03.java
Editor: GridBagLayout05.java

optionale Ausrichtung im FlowLayout:
FlowLayout.LEFT, FlowLayout.CENTER (default), FlowLayout.RIGHT
//FlowLayout myLayout = new FlowLayout(FlowLayout.RIGHT);
Beispielbild


Listener: Action, Mouse, KeyListener

Beschreibung Download
Beispiel mit Listener für das JFrame (onClose)
ActionListener für Panels
KeyListener für Panels
MouseListener für Panels
FocusListener für Panels
Listener_Bsp01.java

Listener_Bsp02.java

Listener_Bsp02.java
Bild: Listener_Bsp03.jpg

Look and Feel

Beschreibung Download
MDI-Fenster mit Look & Feel
(Motif, Windows)
Look_and_Feel_01.java

LooknFeel.pdf (Doku)

Bilder Windows
Bilder Motif
Bilder Metal (Standard)

Beispiel

public void MnLook_and_Feel(ActionEvent e) {
try {
if (e.getSource() == MnLook_Feel_Windows ) {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this.getContentPane() );
}
if (e.getSource() == MnLook_Feel_Metal ) {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
SwingUtilities.updateComponentTreeUI(this.getContentPane() );
}
if (e.getSource() == MnLook_Feel_Motif ) {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(this.getContentPane() );
}
if (e.getSource() == MnLook_Feel_Macintosh ) {
UIManager.setLookAndFeel("javax.swing.plaf.mac.MacLookAndFeel");
SwingUtilities.updateComponentTreeUI(this.getContentPane() );
}
} catch (Exception exc) {
}


Menüs mit JFrames

Beschreibung Download
Beispiele mit Menüs
a) einfaches Menü
b) mit JToggleButton
menu.zip

Multi-Dokument-Interface

Beschreibung Download
1. MDI-Beispiel Quellen: mdi01.java
Beschreibung: MDI-Programm mit einem einfachen Clientfenstertyp
Nur der Menüeintrag „Neu“ funktioniert
Bild: mdi01.jpg
2. MDI-Beispiel Quellen: mdi02.java
Beschreibung: MDI-Programm mit einem Clientfenster
New erzeugt Fenster; erzeugt Fenster
OpenDialog; SaveDialog vorhanden; FileFilter
diverse Menüs;
Fenster werden verschoben; Aufteilen und Cacasde
Bild: mdi02.jpg
3. MDI-Beispiel Quellen: mdi03.java
Beschreibung: MDI-Programm mit einem Clientfenster;
New erzeugt Fenster; OpenDialog, erzeugt Fenster; FileFilter
diverse Menüs
Fenster werden verschoben; Aufteilen und Cacasde
gemeinsame Basisklasse für die JInternalFrames
mdi03 noch als Parent
Insgesamt stehen VIER Fenster zur Verfügung
Beispiel für aktive Berechnung in einem Clientfenster
Threads; Implements runnable
Trotz Berechnung bleibt das Fenster änderbar
Bild: mdi03.jpg
4. MDI-Beispiel Quellen: mdi04.java
Beschreibung: wie mdi03:
Interface für die Aktionsmethode
Aufrufbeispiel in Menü „cut“
Bild: mdi04.jpg
5. MDI-Beispiel Quellen: mdi05.java
Beschreibung: wie mdi03:
Interface für die Aktionsmethode
Aufrufbeispiel in Menü „cut“
Bild: mdi05.jpg
WindowLayout:
Klasse, die die JIF positioniert

Klasse WindowLayout mit:
Vorheriges Fenster
Nächstes Fenster
Aufteilen der Fenster
Cacasde
horizontal Aufteilung
vertikale Aufteilung
Quellen: WindowLayout.java

NumberFormat

Beschreibung Download
Beispiele für das Formatieren von Zahlen
Eintragen in einem Editor oder Ausgabe in einer Datei (etc.)
Zusätzlich gibt es ein Hilfefenster, welches immer oberhalb des JFrame ist (AlwaysOnTop)
setAlwaysOnTop(true);
NumberFormatTest.java

Kurzform:
import java.text.*; // NumberFormat
DecimalFormat df = new DecimalFormat("##0.0");
String s = df.format(12.3456);
DecimalFormat df = new DecimalFormat("00");
String s = df.format(2);

Bild: NumberFormat.jpg

Syntax der Formatierungszeichen

Symbol und Erläuterung
0
Ist eine Ziffer, entweder eine Ziffer oder Null
#
Ist eine Ziffer, entweder eine Ziffer oder ein Leerzeichen
.
Dezimaltrenner. Trennt Vor- und Nachkommastellen.
,
Komma ist Wiederholungszeichen für eine Gruppe. Tausendergruppe, Milliongruppe etc.
;
Trennzeichen. Links davon steht das Muster für positive, rechts das für negative Zahlen.
-
Das Zeichen für das negative Zahlen
%
Die Zahl wird mit 100 multipliziert (Prozentwert)
%%
Die Zahl wird mit 1000 multipliziert (Promillewert)
\u00A4
Nationales Währungssymbol (€ für Deutschland)
\u00A4\u00A4
Internationales Währungssymbol (EUR für Deutschland)
X
Alle anderen Zeichen z. B. X können ganz normal benutzt werden.
'
Ausmarkieren von speziellen Symbolen im Präfix oder Suffix à la \\


Feste Beispiele:
String sStr = NumberFormat.getCurrencyInstance().format( 12345.6789 ) liefert 12.345,68 €

Formatiert mit und das Ergebnis
DateFormat.getDateInstance().format( new Date() )
liefert 02.09.2005

DateFormat.getTimeInstance().format( new Date() )
liefert 15:25:16

DateFormat.getDateTimeInstance().format( new Date() )
liefert 02.09.2005 15:25:16

NumberFormat.getInstance().format( 12345.6789 )
liefert 12.345,679

NumberFormat.getCurrencyInstance().format( 12345.6789 )
liefert 12.345,68 €

NumberFormat.getPercentInstance().format( 0.123 )
liefert 12 %


Paint mit Java

Beschreibung Download
Java Paint:
Im Programm werden links die einzelnen Elemente angezeigt
Rechts werden die Elemente dargestellt
Unterstützt werden:
Linie
Kreis
Rechteck

Eigenschaften:
Splitter
Timer
Aufziehen eines Grafikrechteck mit XOR-Modus
Anzeige eines JDialogs
Click-Event für eine JList und einen JPanel
Mittels Timer blinkt das ausgewählte Element
Aufruf eines JColorChooser

Dieses Programm ist "Identisch" mit dem CAD-WPF-Programm
jpaint.zip

Bilder:
jpaint01.png
jpaint02.npg
jpaint03.npg

Pipe

Beschreibung Download
Beispiel mit Pipes welches zwei Threads erzeugt, die die Daten transferieren
Dieses Beispiel stützt NICHT ab, das das Update der Editoren über invokeLater realisiert wurde
Pipe_01.java

Bild: Pipe01.jpg
Beispiel mit Pipes welches zwei Threads erzeugt, die die Daten transferieren
Dieses Beispiel stützt ab, das das Update der Editoren nicht über den AWT-Thread läuft
Abhilfe mit invokeLater in Pipe_01.java
Mit der CheckBox kann man das Verhalten pürfen
Pipe_02.java

Bild: Pipe02.jpg

JSplitPane

editor1 = new JTextArea("abc\ndef");
editor2 = new JTextArea();

JSplitPane split = new JSplitPane(JSplitPane. HORIZONTAL_SPLIT ,false, new JScrollPane(editor1), new JScrollPane(editor2) );

this.getContentPane().add( split, BorderLayout. CENTER );
split.setDividerLocation(350); // Width of the left textarea
add(split , BorderLayout. CENTER );


Plausibilitätsprüfung

Beschreibung Download
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java: Plausi.zip (alle Beispiele)
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java:
Plausi1.java:
einfache Plausibilitätsprüfung mit try Exception
Plausi1.java
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java:
Plausi2.java:
einfache Plausibilitätsprüfung mit Basis-Klasse (Methode IVal)
Plausi2.java
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java:
Plausi3.java:
verwendet ein PlainDocument mit IVal zum Testen (integer)
Plausi3.java
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java:
Plausi4.java:
verwendet ein PlainDocument mit DVal zum Testen
Plausi4.java
Beispiele für die Anwendung von Plausibilitätsprüfungen in Java:
Plausi5.java:
Zusätzlich wird bei jedem Tastendruck abgeprüft, ob das Ergebnis eine double-Zahl ist
Buchstaben, Sonderzeichen werden NICHT in den Editor eingetragen
Benutzt ein PlainDocument
diese Datei ist die einfachere Variante von JTextFieldIntDocListenerTest4.java
Plausi5.java
Beispiel eines Dialogs mit einer Methode zum Abprüfen der Werte Plausi6.java

Beispieldateien: plausi_std.zip
Beispiel eines Dialogs mit einer Methode zum Abprüfen der Werte
Hier werden aber die Überprüfungen in der jeweiligen Klasse durchgeführt
Ein Rückgabewert "false" zeigt an, dass die Eingabe falsch ist
Plausi7.java

Beispieldateien: plausi_std.zip
Beispiel eines Dialogs mit einer Methode zum Abprüfen der Werte
Es wird dazu mit der Pattern-Klasse gearbeitet (Reguläre Ausdrücke)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Plausi8.java

Beispieldateien: plausi_std.zip

JTextFieldDocListenerTest Beispiele

Beschreibung Download
ein JTextField wird mit einem Listener abgeleitet
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3
JTextFieldDocListenerTest1.java

Bild:
JTextFieldDocListenerTest1.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3
JTextFieldDocListenerTest2.java

Bild:
JTextFieldDocListenerTest2.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3

Zusätzlich wird bei jedem Tastendruck abgeprüft, ob das Ergebnis eine int-Zahl ist
Buchstaben, Punkte, Sonderzeichen werden NICHT in den Editor eingetragen
JTextFieldDocListenerTest3.java

Bild:
JTextFieldDocListenerTest3.jpg
ein JTextField wird mit einem Listener abgeleitet
Hier wird zusätzlich das OnChange-Event benutzt
Das entspricht einer Registrierung à la ActionListener
Mit BnOk_Click wird das Modify Flag abgefragt
stammt aus dem Pattern_MVC3

Zusätzlich wird bei jedem Tastendruck abgeprüft, ob das Ergebnis eine double-Zahl ist
Buchstaben, Sonderzeichen werden NICHT in den Editor eingetragen
JTextFieldDocListenerTest4.java

Bild:
JTextFieldDocListenerTest4.jpg

Popupmenüs

Beschreibung Download
Beispiel mit mehreren Popupmenüs
Popupmenü mit einem Editor
Popupmenue01.java

Properties

Beschreibung Download
Basisklasse um in Java die Properties auszulesen

fileSeparator, pathSeparator, lineSeparator
userName, userHome, userDir
getpathParam("java.io.tmpdir");
getpathParam("os.name");
getpathParam("os.version");
BspProperties.java
CProperties.java

System01.java
Bild: properties.jpg

Read & Write

Beschreibung Download
Beispiele zum Lesen und Schreiben von Daten in eine Datei
ASCII
Binär
int double und String
ReadWrite.zip (Alle Beispiele)
Einlesen einer ASCII-Datei,
Verwendet die neue Methode LineNumberReader
Abbruch mit der Methode din.ready()
ReadASCII01.java
Einlesen einer ASCII-Datei,
Verwendet die Methode read,
Einlesen in einem Block.
Nur bei kleinen Dateien sinnvoll
ReadASCII02.java
Einlesen einer ASCII-Datei,
Verwendet die Methode read,
Einlesen in einem Block (DataInputStream)
Nur bei kleinen Dateien sinnvoll
ReadASCII03.java
Einlesen aus einer HTML-Datei
kann als Basis diene, so überprüfen, ob eine neue Version exitsiert
ReadASCII04.java
Beispiel für die Ausgabe mittels eines PrintStreams
Die Daten werden immer in ASCII-Zeichen übersetzt und in die Datei geschrieben
Kann dann mit jedem ASCII-Editor geoeffnet werden, Notepad
WriteASCII01.java
Beispiel für die Ausgabe mittels eines PrintStreams
Die Daten werden immer in ASCII-Zeichen übersetzt und in die Datei geschrieben
Kann dann mit jedem ASCII-Editor geoeffnet werden, Notepad
Beschleunigung mittels BufferedOutputStream
WriteASCII02.java
Ausgabe von int, double, float Werten in eine binäre Datei
Einlesen der Binär-Datei
Readwrite_int_double_1.java
Ausgabe eines Strings in eine binäre Datei
Einlesen der Binär-Datei
Readwrite_int_double_2.java
Schreiben einer Instanz in eine Binärdatei
Abstrakte Klasse, Line und Rectangle
Mit Versionsnunmmer
typ wird mitgespeichert, aber Container.load gelesen
Readwrite_int_double_3.java
Schreiben einer Instanz in eine Binärdatei
Abstrakte Klasse, Line und Rectangle
Mit Versionsnunmmer
typ wird mitgespeichert.
In Container.load wird gelesen, aber zurückgespeichert
(unread der Klasse PushbackInputStream)
unread geht aber nur mit einem Byte
Readwrite_int_double_4.java
Ausgabe mit int, double, float Werten in eine binäre Datei write3.java
Ein- und Auslesen eienr binären Datei
Strings werden mitttels CDataOutputStream ausgegeben
Strings werden mitttels CDataInputStream eingegelesen
besser wäre String mittels writeUTF zu speichern
besser wäre String mittels readUTF zu lesen

Anzeige der Daten mittels eines Hexeditors
readwriteStr1.java

Bild: readwriteStr1.jpg
Ein- und Auslesen eienr binären Datei
Strings werden mitttels writeUTF ausgegeben
Strings werden mitttels readUTF eingelesen

Anzeige der Daten mittels eines Hexeditors
readwriteStr2.java

Bild: readwriteStr2.jpg
Beispiel mit einfacher GUI
Einlesen und schreiben in BINÄR-Datei
schreiben von int, long, chars, double
readwriteStr3.java

Bild: readwriteStr3.jpg
Programm testet die zeitlichen Unterschiede zwischen binär- und ASCII-Speicherung IOtest.java
Schreiben einer Datei in das gz_format
(GZIPOutputStream)
Write_gz.java
Lesen einerDatei im gz_format (entzippen)
(GZIPImputStream)
Read_gz.java
Schreiben und Lesen einer Datei in das zip_format.
Das zip-Format ist aber eigenständig!!
DeflaterOutputStream
Write_zip.java

Run Process

Beschreibung Download
Ruft ein Programm mittels Runtime.getRuntime().exec auf
optional kann auch gewartet werden
Run01.java

Bild: Run01.jpg
Ruft ein Programm mittels ProcessBuilder auf
optional kann auch gewartet werden
gegegenueber Runtime.getRuntime().exec kann man hier auch ein Startverzeichnis angeben
Das Startverzeichnis wird über die JList ausgewählt (nur Root-Verzeichnisse funktionieren mit Notepad)
Run02.java

Bild: Run02.jpg

Read Write mit Klassen

Beschreibung Download
klassen_read_write1.java
Schreibt und lädt Klassen mittel DataOutputStream
Verwendet MagicNumber und Version
schreiben und lesen von CAuto
Format binaer, mittel DataOutputStream
klassen_read_write1.java
klassen_read_write2.java
schreiben und lesen von CAuto
Format binaer, mittel Serializer
schreiben und lesen von CAutos (Liste)
Format binaer, mittel Serializer
klassen_read_write2.java
klassen_read_write3.java
schreiben und lesen von CAuto, CSchiffe, CFlugzeuge
Format binaer, mittel Serializer (Liste lokal)
klassen_read_write3.java
klassen_read_write4.java
schreiben und lesen von CAuto, CSchiffe, CFlugzeuge
Format binaer, mittel Serializer (Liste als separate Klasse)
klassen_read_write4.java
klassen_read_write5.java
schreiben und lesen von CAuto
Format XML, mittel xml.bind.annotation
das Root bekommt ein Element vor der Klassendefintion
alle Klassen muessen einen Default-Kontruktor haben !!!!!!!!!!!!!
es müssen alle get und set-Methoden implementiert werden !!!!!!!!
schreiben und lesen von CAutos (Garage)
Format XML, mittel xml.bind.annotation
klassen_read_write5.java (XML)

Run Time Type Identification

Beschreibung Download
RTTI: Run Time Type Identification und Reflection
Auslesen der Informationen aus einer Klasse (Methoden etc.)
rtti.zip (Alle Beispiele)
rtti01.java:
Ausgabe der Attribute und Methoden von MyJLabel
Hier nur die Methoden von MyJLabel
rtti01.java

Bild: rtti01.jpg
rtti02.java:
Ausgabe der Attribute und Methoden von MyJLabel
Hier alle die Methoden von MyJLabel bis Object
rtti02.java

Bild: rtti02.jpg
rtti03.java:
Hier alle die Methoden von MyJLabel bis Object
Man kann nun verschiedene Klassen auswählen
rtti03.java

Bild: rtti03.jpg
rtti04.java:
Hier alle die Methoden von MyJLabel bis Object
Man kann nun verschiedene Klassen auswählen
hier wird ein Object mitttels ClassFor erzeugt

hier wird ein Objekt mittels String erzeugt und dann eine Mtehode "setMatrnr" aufgerufen.
Problem: Man kennt die Methode nicht. Funktioniert aber trotzdem
rtti04.java

Bilder:
rtti04a.jpg
rtti04b.jpg
rtti04c.jpg

Klassen erzeugen

Beispiel um ein Objekt zu erzeugen und eine Methode aufzurufen:

private test() {
Class c = null;
Object obj;
Method[] m; // Array der Methoden

try {
c = Class.forName( sClassname );
obj = c.newInstance(); // Erzeugen einer Instanz der Klasse
m = c.getMethods(); // Liefert alle Methoden
for (int i=0; i<m.length; i++) {
String s1 = m[i].toString(); // aktueller Methodenname
if ( s1.indexOf("setName")>=0 ) {
// Methode der Oberklasse nun aufrufen
Object args[] = { new String("Meier") }; // Parameter
// Methode ausführen am Objekt obj
m[i].invoke(obj, args );
}
} // for
}
catch ( ClassNotFoundException e) {
System.out.println("Error4");
}
}


Spiele

Beschreibung Download
Memory
Thread-Problem beim Aufdecken und Zuklappen !

Siehe // Error
Memory.zip

Bild: Memory.jpg
MemJong MemJong.zip

Bild: MemJong.jpg
zeigt einen einfachen Drag´n Drop mit Vierecken, JPanels
kann als Grundlage für Spiele dienen
Game1.java

Bild: Game1.jpg
Ameise
Mathematisches zelluläres Spiel
Ameise.java

Bild: Ameise.jpg

Serialize

Beschreibung Download
Serialize1 mit einer Klasse
BnRead_Clicked
BnWrite_Clicked
Ausgabe in einem Editor
Serialize1.java

Bild: Serialize1.jpg
Serialize2 mit zwei Klassen (Person Parson und Gehalt)
eine Person HAT eine Gehalt
BnRead_Clicked
BnWrite_Clicked
Ausgabe in einem Editor
Serialize2.java

Bild: Serialize2.jpg
Serialize3 mit zwei Klassen (Person Parson und Gehalt)
Verschlüsselung des Passwortes
eine Person HAT eine Gehalt
BnRead_Clicked
BnWrite_Clicked
Ausgabe in einem Editor
Serialize3.java

Bild: Serialize3.jpg
Komplettes Beispiel mit Eingabe, Speichern und Laden Serialize4.java

Bild: Serialize4.jpg

Serialize


Single Probleme

Beschreibung Download
Das Beispiel zeigt die Probmele beri der Verwendung von float resp. single
1) Ist 0.1+0.1+0.1=0.3
2) Wertetabelle von 0 bis 2.0 in 0.1 Schritten
3) GIS Berechnung mittels Zwischenwerten
Single_probleme.java

Bild: Single_probleme.jpg

Sortieren

Beschreibung Download
JFrame mit Editor
zeigt, wie man mit Collections.sort
automatisch sortieren
Reihenfolge ändernbar
sort1.java

split: Stringanalyse

Beschreibung Download
String analysieren
Verwendet die Methode split
analyse.java

Steuerungsbehälter

Beschreibung Download
Steuerungsbehälter
Mit einem Ventil kann ein Behälter gefüllt werden
Drei Ventile entleeren den Behälter
Abflussmenge kann individuell gesteuert werden
Geregelt werden die Befehle mittels AND / ODER
Steuerung_behaelter1.java

1. Preview-Bild

Timer

Beschreibung Download
Beispiele für die Anwendung von Timern (Animator) in Java Timer, der einfach mit Syso hochzählt
Timer1.java

Timer, der ein JLabel hochzählt
Timer2.java

Vector

Beschreibung Download
Vector1
Einfache Klasse wird in ein Vector eingefügt
Typisierter Vector
Vector01.java

Bild: Vector01.jpg
Vector2
Komplexe Klasse wird in ein Vector eingefügt und ausgegeben
verwendet Singleton Pattern
CPrintStream p = CPrintStream.getInstance();
Vector02.java

Bild: Vector02.jpg

Vector-Iterator

CKlasse kl;
for (int i=0; i<myVector.size(); i++) {
kl = myVector.elementAt(i);
kl.print();
}

// neuer Iterator
System.out.println("\nNeuer Vector");
for (CKlasse kl2:myVector) {
kl2.print();
}


XML und Java

Beschreibung Download
XML1
Lädt eine beliebige XML-Datei
xml1.zip

Bild: xml1.jpg
XML2
Beispiel aus Serialize
Klasse Person und Gehalt
Gespeichert in einer XML-Datei
Laden aus der Datei

Wichtig:
Die Klassen dürfen nicht in einer Datei sein!
xml2.zip

Bild: xml2.jpg
XML3
Beispiel aus Serialize
Klasse Person und Gehalt
Gespeichert in einer XML-Datei
Laden aus der Datei

Wichtig:
Die Klassen dürfen nicht in einer Datei sein!
xml3.zip

xml3.java
Bild: xml3.jpg
klassen_read_write5.java
schreiben und lesen von CAuto
Format XML, mittel xml.bind.annotation
das Root bekommt ein Element vor der Klassendefintion
alle Klassen muessen einen Default-Kontruktor haben !!!!!!!!!!!!!
es müssen alle get und set-Methoden implementiert werden !!!!!!!!
schreiben und lesen von CAutos (Garage)
Format XML, mittel xml.bind.annotation
xml4.java (XML)
xml4.zip (XML)
Bild: xml4a.jpg
Bild: xml4b.jpg
ReadXML
Lesen einer XML-Datei
Validierung einer XML-Datei
Parsen eines Knotens
Javadatei:
ReadXML.java
Als Textdatei:
ReadXML.txt


Beispieldatei:
Autovermietung.xml
Autovermietung.xsd
Als Textdatei:
Autovermietungxml.txt
Autovermietungxsd.txt

Person2.xml

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_11" class="java.beans.XMLDecoder">
<string>Hallo</string>
<object class="java.util.Date">
<long>1292432430578</long>
</object>
<object class="xml2.Person">
<void property="betrag">
<double>1234.0</double>
</void>
<void property="firstname">
<string>Fred</string>
</void>
<void property="lastname">
<string>Weasley</string>
</void>
<void property="password">
<string>secret</string>
</void>
</object>
</java>


Java mit einfachen Dialogen

Aufgabe Bemerkung Link
Aufgaben   EinfuehrungGUI.pdf
Aufgabe1.pdf
Aufgabe2.pdf
Aufgabe2.zip
Aufgabe2.pdf
Aufgabe1 Fakultät Einfache Lösung Aufgabe1_fak1.java
  Erweiterung:
Fehlermeldungen mit einem Dialogfenster !!!
Editzeile mit einem Hinweistext !!
Aufgabe1_fak2.java
  Erweiterung:
Fehlermeldungen mit einem Dialogfenster !!!
Editzeile mit einem Hinweistext !!
Speicherung in eine Binär-Datei
Speicherung in einer ASCII-Datei
Laden aus einer binärdatei
Laden aus einer ASCII-Datei
Aufgabe1_fak3.java
Aufgabe1 Fibonacci Ermittelt die Fibonacci-Zahlen Aufgabe1_fibo.java
Aufgabe1 Quersumme Ermittelt die Quersumme einer Zahl Aufgabe1_quersumme.java
Aufgabe1 Alle drei Lösungen Es sind nun drei "Calc-Schalter" eingefügt.
Separate Berechnung.

Aufgabe1_alles.java
Aufgabe2 Anzeige eines Startfensters
Aufruf zwei Zusatzfenster

Aufgabe2.java
Student.bin
Matrnr.bin
Aufgabe2b Anzeige eines Startfensters
Aufruf zwei Zusatzfenster

Aufbau mittels einer Klasse Student
SEHR KOMPLEX !

Aufgabe2b.java
Student2.bin
Matrnr2.bin