 |
 |
 |
 |
 |
|
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 / ORJSplitPane
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 |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
Bilder |
|
|
|
|
|
|
|
|
|
|
|
Border |
|
|
|
|
|
|
|
|
|
|
|
ClipBoard |
|
|
|
|
|
|
|
|
|
|
|
dBase |
|
|
Beispiele für das Einlesen von dBase-Dateien dBase Beispiele werden mitgeliefert |
dBase.zip |
|
|
|
|
|
|
|
|
|
Design Pattern |
|
|
|
|
|
|
|
|
|
|
|
Drag & Drop |
|
|
|
|
|
|
|
|
|
|
|
Excel Export |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
Hexeditor |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
JButton, MouseOver und HTML |
|
|
Beispiele mit JButton Laden von Bildern in JButton MouseEnter, MouseExit |
JButton.zip JButton.pdf (Beispiele als PDF) |
|
|
|
|
|
|
|
|
|
JCheckBox mit JFrames |
|
|
Beispiele für Dialogfenster mit JCheckBox |
CheckBox01.java // Auslesen des Wertes (isSelected) // OnChange-Event für die Checkboxen |
|
|
|
|
|
|
|
|
|
JComboBox mit JFrames |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
JLIst mit JFrames |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
JTabbedPane mit JFrames |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
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 |
|
|
Klassenbeispiele (contr*.java, Interface, Tisch, WBaum) |
Klassen.zip |
|
|
|
|
|
|
|
|
|
Layout |
|
|
|
|
|
|
|
|
optionale Ausrichtung im FlowLayout: FlowLayout.LEFT, FlowLayout.CENTER (default), FlowLayout.RIGHT //FlowLayout myLayout = new FlowLayout(FlowLayout.RIGHT); Beispielbild
|
|
|
|
|
|
|
|
|
Listener: Action, Mouse, KeyListener |
|
|
|
|
|
|
|
|
|
|
|
Look and Feel |
|
|
|
|
|
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 |
|
|
Beispiele mit Menüs a) einfaches Menü b) mit JToggleButton |
menu.zip |
|
|
|
|
|
|
|
|
|
Multi-Dokument-Interface |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
Properties |
|
|
|
|
|
|
|
|
|
|
|
Read & Write |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
Serialize |
|
|
|
|
|
Serialize |
|
|
|
|
|
|
|
|
|
|
|
Single Probleme |
|
|
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 |
|
|
JFrame mit Editor zeigt, wie man mit Collections.sort automatisch sortieren Reihenfolge ändernbar |
sort1.java |
|
|
|
|
|
|
|
|
|
split: Stringanalyse |
|
|
|
|
|
|
|
|
|
|
|
Steuerungsbehälter |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
ReadXML
|
|
 |