- zum Ende scrollen
- String aus Ressource bauen
- JTable mit horizontaler ScrollBar
- JTable Hintergrund
- Look & Feel
- Dateiname abfragen
- Klasse über Reflection starten
- Fokus beim Dialog-Start setzen
- Zwischenablage
- System-Parameter und Kommandozeilen-Argumente
- alte und neue Collections
- Ressourcen, interessante Projekte
- Weitere Links
ans Ende scrollen
von einem JTextArea
jTextArea.setCaretPosition(text.length());
in einer JTable
table.scrollRectToVisible(
table.getCellRect(table.getRowCount()-1,-1,true)
);
String aus Ressource bauen
[code lang=“java“]String str = null;
InputStream is = getResourceStream(pkgname, fname);
if (is != null) {
StringBuffer sb = new StringBuffer();
while (true) {
int c = is.read();
if (c == -1) {
break;
}
sb.append((char)c);
}
is.close();
str = sb.toString();
}[/code]
JTable mit horizontaler ScrollBar
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JTable Hintergrund
@Override
public boolean getScrollableTracksViewportHeight() {
return getParent() instanceof JViewport &&
getPreferredSize().height < getParent().getHeight();
}
Look & Feel
JGoodies Looks wird mit der BSD-Lizenz verteilt. Das Ziel ist die perfekte Nachbildung von Windows 95/98/NT/ME/2000/2003/XP/Vista Anwendungen ab Java 1.4.
[code lang="java"]try {
String laf = LookUtils.IS_OS_WINDOWS_XP
? Options.getCrossPlatformLookAndFeelClassName()
: Options.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel( laf );
} catch (Exception e) {
e.printStackTrace();
}[/code]
Gegenüber dem Windows Look and Feel von Sun korrigiert es viele Feinheiten, wie passende Insets bei Eingabefeldern, Icons, Farben, Rahmen, den richtigen Font, Menüeigenschaften, Auflösungen von 96 und 120 dpi und vieles mehr.
Ein weiteres sehr schönes Look & Feel, was ab Java 1.5 eingesetzt werden kann ist Substance.
Dateiname abfragen
[code lang="java"]File file = null;
int filePlaceOk = JOptionPane.YES_OPTION;
do {
JFileChooser fileChooser = new JFileChooser("C:/Temp");
int fileChooserResponse = fileChooser.showSaveDialog(parent);
if(fileChooserResponse == JFileChooser.CANCEL_OPTION) {
return;
} else if(fileChooserResponse == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
if(file.exists()) {
filePlaceOk = JOptionPane.showOptionDialog(this,
"Die Datei existiert schon. Soll sie überschrieben werden?",
"Warnung", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,
null, null, null);
}
}
} while(filePlaceOk != JOptionPane.YES_OPTION);
if(file == null) return;[/code]
Klasse über Reflection starten
[code lang="java"]try {
Class params[] = new Class[] {};
Class c = Class.forName(className);
java.lang.reflect.Constructor cons = c.getConstructor(params);
Object args[] = new Object[] {};
MyClass myClass = (MyClass)cons.newInstance(args);
myClass.myMethod(methodParams);
} catch(Exception e) {
e.printStackTrace();
}[/code]
Fokus beim Dialog-Start setzen
[code lang="java"]jDialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
jTextField.requestFocus();
}
});[/code]
Zwischenablage
Zeichenketten müssen in ein Transferable-Objekt verpackt werden (z.B. StringSelection), um in die Zwischenablage kopiert werden zu können.
[code lang="java"]import java.awt.datatransfer.*;
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = new StringSelection("eine Zeichenkette");
c.setContents(t, null);[/code]
Eine Zeichenkette aus der Zwischenablage lesen:
[code lang="java"]import java.awt.datatransfer.*;
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = c.getContents(this); // this currently not used
if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String s = (String) t.getTransferData(DataFlavor.stringFlavor);
}[/code]
Aus dem Tranferable-Objekt können auch alle unterstützen Formate abgefragt werden über:
[code lang="java"]DataFlavor [] getTransferDataFlavors();[/code]
Das Array kann durchsucht werden, bis ein passendes Format gefunden wurde.
System-Parameter und Kommandozeilen-Argumente
Argumente lesen:
[code lang="java"]boolean debug = false;
String number = null;
for(String arg: args) {
if(arg.equals("--debug") || arg.equals("-d"))
debug = true;
if(arg.startsWith("--input") || arg.equals("-i"))
number = arg.substring(arg.indexOf("=") +1).trim();
}[/code]
System-Parameter setzen:
java -cp test.jar -Ddas.ist.der.Wert=xyz
System-Parameter abfragen:
[code lang="java"]String xyz= "default.wert.xyz";
String prop = System.getProperty("das.ist.der.Wert");
if(prop != null) xyz = prop;[/code]
alte und neue Collections
- Hashtable » HashMap
- Vector » ArrayList
- Stack » ArrayDeque (ab Java 6)
...mehr Infos unter: http://www.javapractices.com
Ressourcen, interessante Projekte
- HSQL ist eine vollständig in Java programmierte relationale Datenbank.
- Lucene ist eine Open-Source-Java-Bibliothek zum Erzeugen und Durchsuchen von Indizes.
- Java Systray ist eine Möglichkeit den Windows Systray mit Java zu nutzen.
- SwingLabs, l2fprod.com und JIDE Common Layer erweitern Swing um eine Reihe fehlender Komponenten.
- jTDS ist ein OpenSource zu 100% in Java programmierter JDBC 3.0 Driver (type 4) für Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12).
- Jackcess ist eine reine Java-Bibliothek mit denen man auf MS Access Datenbanken zugreifen kann.
- JDIC ermöglicht eine bessere Desktop-Integration für Java-Applikationen.
- The JUnique library can be used to prevent a user to run at the same time more instances of the same Java application.
- Swing Explorer is a tool for Swing developers intended for visual exploring of a Swing-based application internals.
- FEST is a collection of APIs, released under the Apache 2.0 license, which mission is to simplify software testing.
Weitere Links
- Design Patterns in Stories
- Creating a GUI with JFC/Swing
- Java Logging
- The Java Developers Almanac 1.4
- FAQ bei java-tutor.com
- JavaMagazin
- Die verschiedenen Möglichkeiten, Textelemente mit unterschiedlichen Hervorhebungen darzustellen.
- Open Source-Perlen: Die Sourceforge Datenbank HSQLDB
- http://www.andreasgoedel.de/swing/
- http://www.angelikalanger.com/Articles/JavaSpektrum/
- 10 Object Oriented Design Principles Java Programmer should know
- 10 Common Mistakes Java Developers Make when Writing SQL