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

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.