Posted: Februar 21st, 2010 | Filed under: Programmieren | Tags: Beispiele, Bezeichner, Java, Java Konventionen | 8 Comments »
Allgemein
Bezeichner
Bezeichner sind die Namen der Java Klassen, Interfaces, Variablen, Objekte, Methoden und Konstanten.
Was ist überhaupt erlaubt?
- Alle Unicode Alphabete (z.B.: a-z, A-Z, 0-9, ä, é, ب (Arabisch), β (Griechisch))
- Nummern (jedoch nicht am Anfang)
- Währungssymbole
- Unterstrich _
- kein Schlüsselwörter erlaubt (z.B.: public nicht benutzen)
- keine Leerzeichen erlaubt
Beispiele
erlaubt, nicht erlaubt
- String
- S t r i n g
- i17
- i&17
- بρετη
- 123456
- MAX_VALUE
- max-value
- Public
- public
- $Dollarzeichen
- #lol
- _lol
Was sollte man benutzen (Konvention) ?
Die folgenden Kriterien gelten für alle Bezeichner. Also Klassen, Methoden, Variablen und Interfaces.
- Ausschließlich a-z, A-Z, 0-9
- _ (Unterstrich) nur einmal in Folge verwenden und nie allein
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- String
- بρετη
- i17
- _
- MAX_VALUE
- MAX__VALUE
- Public
- $Dollarzeichen
Klassen (Konventionen)
- Erster Buchstabe immer groß
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben, z.B.: BierZapfanlage)
- Möglichst nur Nomen (Substantive) (z.B.: Bier) verwenden
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- String
- string
- Bier
- Trinken
- BierBrauerei
- Bier_Brauerei
Methoden (Konventionen)
- Erster Buchstabe immer klein
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben den Rest immer klein, z.B.: bierZapfen)
- Sollte aus Verben bestehen oder in Kombination mit Nomen (z.B.: bierTrinken)
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Konvention berücksichtigt, Konventionsverstoß
Variablen (Konventionen)
- Erster Buchstabe immer klein
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben den Rest immer klein, z.B.: bierAlkoholgehalt)
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- zahl
- ζαηλ
- kraftfahrzeug
- kfz
- pi
- inPiUmrechnen
- donauDampfschiffahrtsGesellschaft
- z64
Interfaces (Konventionen)
- Adjektive (z.B.: Trinkbar)
Posted: August 30th, 2009 | Filed under: Internet, Programmieren | Tags: Applet signieren, Java, Java-Applet, Java-Applet Dateizugriff | No Comments »
Einleitung
Ich arbeite momentan an einem Imagehoster Skript mit Multi-Uploader, um gleichzeitig mehrere Bilder auf einen Schlag hochzuladen. Den Multi-Uploader habe ich mittels Java realisiert und soll als Applet in die Webseite eingebunden werden. Anfangs hatte ich jedoch einige Probleme beim erstellen des Applets. Ein Tutorial aus dem RaidRush Forum hat mir dabei sehr geholfen. Im folgenden Artikel wird beschrieben wie man
- kompilierte Klassen (*.class – Dateien)
- externe Bibliotheken (JARs)
archiviert und daraus ein Applet erstellt. Die Ordnerstruktur unseres Beispiel-Applets sieht wie folgt aus:
Ordner des Java-Applets
Archive entpacken
Das Jar-Archiv mysql-connector-java-5.1.7-bin.jar wird für die Verbindung zu einer Datenbank benötigt. Ebenso das Bild pic.gif im Applet verwendet. Nun wollen wir alle Dateien zu einen Archiv zusammenfügen. Bevor wir jedoch das eigentliche Jar-Archiv erstellen können, müssen wir zuvor erstmal das Archiv mysql-connector-java-5.1.7-bin.jar entpacken. Dies können wir über ein normales Packprogramm wie zum Beispiel 7-Zip oder Winrar entpacken.
Jar-Archiv extrahieren
Eine andere Möglichkeit bietet uns ein Hilfsprogramm der Java Umgebung. Dazu gehen wir in die Konsole (Unter Windows Start->Ausführen->CMD) und geben folgenden Befehl ein
jar xf mysql-connector-java-5.1.7-bin.jar
Falls ihr den Hinweis bekommt, dass Windows diesen Befehl nicht kennt, dann müsst ihr den vollen Pfad angeben oder den JAVA-Pfad zu den Umgebungsvariablen hinzufügen. Die Java-Tools befinden sich normalerweise im Ordner jdkx.x.x_xx\bin\. Für Windows unter C:\Programme\Java\jdkx.x.x_xx\bin\ und für Vista unter C:\Progam Files\Java\ jdkx.x.x_xx\bin\. Wie man nun sieht, wurden weitere Ordner erstellt: com, META-INF und org.
Ordner des Java-Applets
Die Ordner com und org enthalten weitere Unterordner mit den jeweiligen Klassen des Mysql-Connectors.
Jar-Archiv erstellen
Jetzt haben wir alle Vorkehrungen getroffen um das Projekt zu einem Jar-Archiv zusammenzufassen. Mit dem folgenden Befehl in der Konsole erzeugen wir ein Jar-Archiv:
jar -cfv JavaApplet.jar database.class start.class pic.gif com META-INF org
Der Befehl ist wie folgt aufgebaut:
- jar ist der Befehl zum erzeugen eines Jar-Archiv
- -cfv –> c == Jar-Archiv erstellen f == Jar-Achriv Name v == Debugausgabe
- JavaApplet.jar –> ist der Name des Jar-Archives welches erstellt werden soll
- die weiteren Parameter sind die Klassen und Ordner(in denen sich Klassen befinden) welche man zum Jar-Archiv hinzufügen will
Applet einbinden
Damit wäre die erste Aufgabe erledigt. Nun können wir das Applet testen. Wir legen uns dazu eine Html-Datei an. Diese enthält folgenden Inhalt:
<html>
<head>
<title>JavaApplet</title>
</head>
<body>
Hier kann man noch was angegeben usw.<br>
<applet code=“start.class“ archive=“JavaApplet.jar“ width=800 height=800>
Oops! Geht nicht mit diesem Browser.
</applet>
</body>
</html>
Uns interessiert nur die Zeile, mit dem Applet-Tag. Der Parameter code gibt die Main-Class an. Archive ist das Archive, welches wir uns gerade angelegt haben.
Nun können wir die HTML-Datei öffnen und wie man sieht es „funktioniert“. Aber der Schein trügt. Denn wenn wir unsere Interaktion auslösen wollen, dann bekommen wir nichts angezeigt. Schauen wir uns mal den Output der Java-Console (im Firefox unter Extra -> Java Console. Falls ihr diesee nicht findet, dann könnt ihr unter Java-Console diese herunterladen) an.
Java Konsole
Archiv signieren
In der ersten Zeile wird uns schon alles gesagt. Das Applet wird nicht richtig ausgeführt, da es nicht signiert worden ist und gegen die Sicherheitsrichtlinien verstößt. Aus diesem Grund müssen wir dies noch machen.
Hierzu müssen wir als erstes ein Zertifikat erstellen. Diese können wir mit folgendem Befehl erzeugen:
keytool -genkey -validity 365 -keyalg rsa -alias meinSchluessel
Der Parameter -validity 365 gibt an, wie lange das Zertifikat gültig ist. Dieser wird in Tagen angegeben.
Beim Ausführen des Befehls wird man nach verschiedenen Sachen gefragt, wie zum Beispiel Name, Organisation, Herkunftsland und weitere. Diese werden dann später, wenn das Aplett ausgeführt wird, angezeigt.
Danach exportiert man diese Werte mit folgendem Befehl in ein Zertifikat:
keytool -export -alias meinSchluessel -file meinZerti.crt
Das hat den Vorteil, wenn man mehrere Jar-Archive mit dem gleichen Zertifikat signieren möchte. Anschließend kann man das Jar-Archiv mit folgendem Befehl signieren:
jarsigner JavaApplet.jar meinSchluessel
Um die Signierung zu überprüfen, lässt sich der jarsigner mit veränderten Parametern verwenden:
jarsigner -verify -verbose -certs JavaApplet.jar
Es kann passieren, dass während des signieren des Archives folgende Fehlermeldung auftritt:
jarsigner: attempt to rename JavaApplet.jar to JavaApplet.jar.orig failed
Dies bedeutet, dass das Archiv von irgendeinem Prozess noch verwendet wird. Meistens hilft es, den Firefox zu schließen. Nun können wir das Applet erneut starten. Es kommt eine Meldung welchen den User fragt, ob er das Applet ausgeführt werden darf. Wenn alles richtig gemacht worden ist, müssten auch alle Interaktionen ausgeführt werden.
Falls es doch nicht geht, dann sollte man noch mal in der Java-Console nachschauen, ob es irgendeine Exception gibt.
Danksagung
Vielen Dank an harry1526 aus dem RaidRush Forum, der mir das Tutorial frei zur Verfügung gestellt hat.
Hier noch der Originalpost: http://board.raidrush.ws/showthread.php?t=554481
Posted: Juli 28th, 2009 | Filed under: Programmieren | Tags: DropDown, DropDownmenü, Java, JComboBox, JComboBox aktuallisieren, JComboBox Beispiel, JComboBox refreshen, ListDataListener | 21 Comments »
Heute möchte ich zeigen wie ihr ein Dropdownmenü in Java realisieren könnt. Diese Dropdownkomponente nennt sich JComboBox. Die Werte der JComboBox können über einen DefaultComboBoxModel definiert werden. Das DefaultComboBoxModel kann über einen Vector die Werte des DropDownMenüs erhalten. Dabei können nicht nur Strings sondern auch andere Objekte in diesen Vector gelegt werden. Die toString() – Methode des jeweiligen Objektes gibt den Anzeigewert in der JComboBox an. Um Interaktionen der JComboBox zu verarbeiten wird der ListDataListener benötigt. Bei meinem Beispielprogramm werden Strings in den Vector gelegt.
Beim drücken auf den „wechseln“ – Button wird das ComboBoxModel ausgetauscht und die Werte ändern sich!
JComboBox Beispiel Programm
Quelltext
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
public class JComboBoxBeispiel implements ActionListener, ListDataListener {
private Container mainContainer;
private JFrame frame;
private JComboBox dropDown;
private DefaultComboBoxModel comboBoxModel1;
private DefaultComboBoxModel comboBoxModel2;
private JButton wechseln;
public JComboBoxBeispiel(){
frame = new JFrame();
mainContainer = frame.getContentPane();
frame.setLayout(new BorderLayout());
wechseln = new JButton("wechseln");
wechseln.addActionListener(this);
// Combobox instanziieren
dropDown = new JComboBox();
// ComboBoxModel erzeugen
// Vector erstellen mit Beispielwerten
Vector<String> tiere = new Vector<String>();
tiere.add("Hund");
tiere.add("Katze");
tiere.add("Maus");
Vector<String> autos = new Vector<String>();
autos.add("BMW 3er");
autos.add("VW-Käfer");
autos.add("Merceds SLK");
comboBoxModel1 = new DefaultComboBoxModel(tiere);
comboBoxModel1.addListDataListener(this);
comboBoxModel2 = new DefaultComboBoxModel(autos);
comboBoxModel2.addListDataListener(this);
// ComboBoxModel setzen
dropDown.setModel(comboBoxModel1);
mainContainer.add(wechseln, BorderLayout.NORTH);
mainContainer.add(dropDown);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.pack();
frame.setTitle("JComboBox Beispiel");
frame.setVisible(true);
}
public static void main(String[] args) {
new JComboBoxBeispiel();
}
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == wechseln){
if (dropDown.getModel() == comboBoxModel1){
dropDown.setModel(comboBoxModel2);
}else{
dropDown.setModel(comboBoxModel1);
}
}
}
public void contentsChanged(ListDataEvent arg0) {
System.out.println(dropDown.getModel().getSelectedItem());
}
public void intervalAdded(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
public void intervalRemoved(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
} |
Posted: Juni 4th, 2009 | Filed under: Programmieren | Tags: Java, Java Tabelle, JFrame, JScrollPane, JTable, JTable Beispiel, Tabelle | 4 Comments »
JTable - Screenshot
Seit längerem beschäftigt mich die Problematik „Tabellen auf der Benutzeroberfläche von Java Anwendungen abzubilden“. Mit Hilfe der Swing Komponente JTable ist dies möglich. Unsere Beispieltabelle soll zwei Spalten besitzen. Als erstes legen wir diese mittels eines String-Arrays an. Anschließend erzeugen wir unsere Daten die wir in einem zweidimensionalen Array ablegen. Um die Tabellenspalten anzuzeigen müssen wir die Tabelle über eine JScrollPane zum Container hinzufügen. Die Tabelleninhalte können per Knopfdruck getauscht werden. Hier der Quellcode.
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Tabelle implements ActionListener {
boolean tableModel;
Container mainContainer;
JFrame frame;
JButton wechseln;
JTable tabelle;
DefaultTableModel tabellenmodellGruppeA;
DefaultTableModel tabellenmodellGruppeB;
// Spalten anlegen
String spalten[] = { "Mannschaft", "Punkte"};
// Datenmodelle anlegen
String gruppeA[][] = {
{ "Die Gelben Uboote", "9.6" },
{ "FatFighters", "8.1" },
{ "Biertrinker", "6.2" }
};
String gruppeB[][] = {
{ "KillerBienen", "10.4" },
{ "Citties", "6.2" },
{ "Team ohne Namen", "5.8" }
};
public Tabelle() {
frame = new JFrame();
mainContainer = frame.getContentPane();
frame.setLayout(new BorderLayout());
wechseln = new JButton("wechseln");
wechseln.addActionListener(this);
mainContainer.add(wechseln, BorderLayout.NORTH);
tabellenmodellGruppeA = new DefaultTableModel(gruppeA, spalten);
tabellenmodellGruppeB = new DefaultTableModel(gruppeB, spalten);
tabelle = new JTable(tabellenmodellGruppeA);
// Um die Spalten der Tabelle anzuzeigen muss die Tabelle
// über eine ScrollPane hinzugefügt werden
mainContainer.add(new JScrollPane(tabelle));
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.pack();
frame.setTitle("JTable Beispiel");
frame.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
if (tableModel){
tabelle.setModel(tabellenmodellGruppeA);
tableModel = false;
}else{
tabelle.setModel(tabellenmodellGruppeB);
tableModel = true;
}
}
public static void main(String[] args) {
new Tabelle();
}
} |
Hier könnt ihr euch den Quellcode herunterladen.
Drückt man auf den Button wird das Table Model neu gesetzt.