Java Minis: Allgemein

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

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();
}

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.

try {
   String laf = LookUtils.IS_OS_WINDOWS_XP
         ? Options.getCrossPlatformLookAndFeelClassName()
         : Options.getSystemLookAndFeelClassName();
   UIManager.setLookAndFeel( laf );
} catch (Exception e) {
   e.printStackTrace();
}

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

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;

Klasse über Reflection starten

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();            

}

Fokus beim Dialog-Start setzen

jDialog.addWindowListener(new java.awt.event.WindowAdapter() {
   public void windowOpened(java.awt.event.WindowEvent evt) {
      jTextField.requestFocus();
   }
});

Zwischenablage

Zeichenketten müssen in ein Transferable-Objekt verpackt werden (z.B. StringSelection), um in die Zwischenablage kopiert werden zu können.

import java.awt.datatransfer.*;

Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = new StringSelection("eine Zeichenkette");
c.setContents(t, null);

Eine Zeichenkette aus der Zwischenablage lesen:

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);
}

Aus dem Tranferable-Objekt können auch alle unterstützen Formate abgefragt werden über:

DataFlavor [] getTransferDataFlavors();

Das Array kann durchsucht werden, bis ein passendes Format gefunden wurde.

System-Parameter und Kommandozeilen-Argumente

Argumente lesen:

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();
}

System-Parameter setzen:

java -cp test.jar -Ddas.ist.der.Wert=xyz

System-Parameter abfragen:

String xyz= "default.wert.xyz";
String prop = System.getProperty("das.ist.der.Wert");
if(prop != null) xyz = prop;

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

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>