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
Swing mit Null-Layout
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 22.12.2021
Beispiel-Auswahl
- Allgemeine Basisklasse (CBasis) Stand 19.10.2010, neu inkl. Properties
- Layouts (FlowLayout, GridLayout, GridBagLayout, CardLayout)
- Listener (ActionListener, MouseListener und KeyListener, JFrame exit)
- JTextFieldDocListenerTest (Einbau eines Listeners, modify Flag, int und Double)
- Bilder (Bild im JFrame, Bild mit ScrollPane, Spiel mit Bildern)
- Border (Beispiele mit Border)
- ClipBoard, Zwischenablage
- dBase (Programm zum Lesen einer dBase-Datei)
- Design Pattern (Singleton, Observer, Observer mit Plausibilität)
- Excel (nativer Export nach Excel mittels BIFF)
- Exception
- Dateien suchen (File Control Block aus Assembler)
- Drag & Drop
- FileChooser (setzen des aktuellen Verzeichnisses)
- Formatierung eines String, NumberFormat, DecimalFormat
- Games, einfache Spiele
- Grafikbeispiele (Grafik und Grafik2D)
- JButton, MouseOver und HTML
- JDBC (Datenbanken)
- Java Native Interface (Alter Stand)
- JCheckBox
- JComboBox
- JDialog
- JFrames mit GUI-Elementen (Komplexere Beispiele)
- JList
- JRadioButton
- JTabbedPane mit JFrames
- JTable , löst das Problem der internen Sortierung
- JTextArea, Notepad mit permanenten Scrollbalken
- JTree
- JUnit, Testbeispiele
- Klassen (Beispiele mit Klassen, Alter Stand)
- Look & Feel (Apple, Motif, Windows)
- MDI (Multi-Document-Interface)
- Menüs (FileChooser, mit JToggleButton )
- Notepad, JTextArea mit permanenten Scrollbalken
- NumberFormat, Formatieren eines String
- Pipes (vernwenden von zwei Threads zur Datenübertragung)
- Plausibilitätsprüfung (Documentlistener)
- Popupmenüs , Popupmenü mit einem Editor
- Systemeigenschaften:
- Properties (PathSeparator, LineSeparator, Username, Userdir, Betriebssystemversion etc.)
- Read & Write (Einbau eines Hexeditors, Nebenprodukt)
- RTTI: Run Time Type Identification und Reflection, Auslesen der Konstruktoren und Methoden aus einer Klasse
- Run, Starten eines externen Programms (ProcessBuilder und Runtime.getRuntime().exec)
- Serialize (Speichern von Objekten auf Festplatte) (Alter Stand)
- Sortieren mit Collections.sort, compareTo
- Spiele (Einfache Spiele, Games)
- Split (Analyse eines Strings)
- Thread.zip (Java Threads) (Alter Stand)
- Timer (Timer)
- Vector (Klassenbeispiele mit Vector)
- XML (Beispiele mit XMLEncoder und Decoder)
- Einfache Dialoge (Horizontal- und Vertikalbox) (Alter Stand)
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 |
Notepad.java Hat diverse Menüs Liest eine Datei ein Speichert eine Datei Hat ein Aktions-Menü 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 |
JFrame OHNE Layout | No_Layout.java |
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
- Übungsaufgabe serialize_xml.java
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 |