Tastatur zentral nutzen

Der klassische Weg eine Komponente und eine Tastenkobination zu verbinden führt über die Key– und ActionMap.

[code lang=“java“]Action doNothing = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println(„F2“);
}
};

jPanel.getInputMap().put(
KeyStroke.getKeyStroke(„F2“), „doActionF2“);

jPanel.getActionMap().put(„doActionF2“,
doNothing);[/code]

Jede Komponente kennt drei InputMap, um nut bei bestimmten Fokuszuständen reagieren zu müssen.

Möchte man eine Tastenkombination für die gesamte Anwendnung zur Verfügung stellen, muss man den KeyboardFocusManager nutzen.

[code lang=“java“]KeyEventDispatcher disp = new KeyEventDispatcher() {
public boolean dispatchKeyEvent(KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_F2 &&
evt.getId() == KeyEvent.KEY_RELEASED){
System.out.println(„F2“);
}
return true;
}
};

KeyboardFocusManager.getCurrentKeyboardFocusManager().
addKeyEventDispatcher(disp);[/code]

Weitere Informationen unter:

http://java.sun.com/products/jlf/ed2/book/
http://java.sun.com/docs/books/tutorial/
http://javamagazin.de/itr/online_artikel/

Tabellenauswahl verarbeiten

[code lang=“java“]jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

ListSelectionModel rowSM = jTable.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {

if (e.getValueIsAdjusting()) return; // ignore extra messages

ListSelectionModel lsm = (ListSelectionModel) e.getSource();

if (lsm.isSelectionEmpty()) {
// no rows are selected
} else {
int selectedRow = lsm.getMinSelectionIndex();
}
}
});[/code]

Auswahl über Links in einem JEditorPane

Füllt man ein JEditorPane mit Links, kann man die Benutzer-Klicks darauf auswerten und für weitere Aktionen nutzen.

Schritt 1: Wir registrieren im Konstruktor unserer GUI für das JEditorPane einen HyperlinkListener . Dieser informiert uns dann bei entsprechenden Benutzer-Klicks.

[code lang=“java“]import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

jEditorPane.addHyperlinkListener(new HyperlinkListener(){
public void hyperlinkUpdate(HyperlinkEvent evt) {
if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
jTextField.setText(evt.getURL().toString().substring(7));
}
}
});[/code]

Schritt 2: Der Html-Content muss aufgebaut werden. Wichtig ist, das wir den Links mit „http://“ beginnen. Unser Listener schneidet diese 7 Zeichen später wieder ab.

[code lang=“java“]StringBuffer sb = new StringBuffer(„„);

for(String s: list) {
if(sb.length() > 12) sb.append(„, „);
sb.append(„„);
sb.append(s);
sb.append(„
„);
}

sb.append(„„);

jEditorPane.setText(sb.toString());[/code]

Schöne Icons

Screenshot Nuvola Eine Anwendung wird vom Benutzer nur akzeptiert, wenn sie sich a) in das eingesetzte Betriebssystem nahtlos integriert und b) die verwendeten Grafiken, dem eigene Geschmack entsprechen.

So steht beispielsweise mit Nuvola von David Vignoni eine umfangreiche Sammlung von Icons in verschiedenen Größen zur Verfügung. Diese sind unter der LGPL lizensiert und können damit beliebig verwendet werden.

Bilder und Icons

http://www.openclipart.org, http://www.famfamfam.com, http://tango.freedesktop.org, http://www.drweb.de (1), http://www.drweb.de (2), http://www.drweb.de (3), http://www.kde-look.org, http://www.gnome-look.org

Schriften

http://misprintedtype.com, http://pixelfonts.style-force.net/, http://www.josbuivenga.demon.nl/tallys.html

Sounds

http://87.233.139.100/~midistern/sound.htm

Sonstiges

http://www.flashkit.com,
http://www.oswd.org/

Nagios, Perfmon, Counter und Perf Data

Screenshot Perf Data Die Aufgabe war, die angemeldeten Benutzer an einem Terminalserver langfristigen auswertbar zu machen. Da wir einen Nagios einsetzen und die gewünschten Werte sich über den Perfmon (einem Windows Tool zum anzeigen der internen Performance Counter) abfragen lassen, lag es nah beides miteinander zu verbinden. Das Plugin check_counter liest die Performance Counter und kann eine entsprechende Ausgabe zurück geben. In diese lässt sich nur schwer das Perf Data Format integrieren. So das wir dies mit einem kleinen Vbs-Skript erledigen (alle Anführungszeichen sind doppelte!).

Set objShell=Wscript.CreateObject("Wscript.shell")

Set objExecObject=objShell.exec("%comspec% /c wincheck_counter
-C ""Terminaldienste""
-P ""Aktive Sitzungen"" -c 25 -w 10 -f ""%f""")

Do Until objExecObject.stdOut.AtEndOfStream
counter=objExecobject.stdOut.ReadLine()
Loop

Wscript.Echo counter & " aktive Sitzungen |
ActiveSessions=" & counter & ";;;;"

WScript.Quit(0)

Die zweite Set-Zeile und die vorletzte Echo-Zeile müssen komplett in einer Zeile stehen. Des weiteren muss der Pfad zum wincheck_counter angepasst werden. Der Return-Code ist immer 0 (ok), da es sich um eine Datenerfassung handelt. Das Skript muss dann noch als Kommando für den NSRP konfiguriert werden und im Nagios die Erfassung der Perf Data per PNP aktiviert werden.

Netbeans „Strings Table“

Die Templates-Variablen passt man in Netbeans mit Hilfe der Strings Table an. So kann der Benutzer dauerhaft durch die Änderung von USER gesetzt werden.

Screenshot Netscreen

Der Dialog findet sich unter Tools » Options » Advanced Options » Editing » Java Sources. Auf der rechten Seite kann man die Strings Table editieren.

SNMP und Netscreen

Eine Netscreen kann mit dem folgenden Befehl per SNMP von einem Linuxserver aus abgefragt werden:

snmpwalk -v 1 -c bobmin netscreen.domain.de system

Wird eine Anzeige mit den System-Eigenschaften geliefert, waren die Einstellungen erfolgreich.

SNMPv2-MIB::sysDescr.0 = STRING: NetScreen-5GT version...
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.3224...
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (55125200) 6 days...
SNMPv2-MIB::sysContact.0 = STRING: mbo@pokolm.de
SNMPv2-MIB::sysName.0 = STRING: ns5gt
SNMPv2-MIB::sysLocation.0 = STRING: harsewinkel, germany
SNMPv2-MIB::sysServices.0 = INTEGER: 72