Kommentare deaktiviert

Java: GUI

2010
07.14

Ich verwende ja gern Funktionen um Objekte fertig initialisiert zu erstellen.
Daher hab ich als ich mich an GUIs gemacht hab als Erstes dafür eine Funktion geschrieben.

Der folgende Code erstellt ein Fenster mit angegebenem Titel und Ausmaßen.

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;

public static JFrame createFrame(String title, int width, int height){
  Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  if (d.height < height || d.width < width)
    System.err.println("Window creation: Frame bigger than screen.");

  JFrame win = new JFrame(title);
  win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  win.setSize(width, height);
  win.setResizable(false);
  win.setLocationRelativeTo(null); // Show window centered

//  No title bar etc.
//  win.dispose();
//  win.setUndecorated(true);
//  win.setVisible(true);

//  Full Screen
//  win.setLocation( 0, 0 );
//  win.setSize( Toolkit.getDefaultToolkit().getScreenSize() );

  win.setVisible(true);
  return win;
}

Jetzt muss das Ganze natürlich noch aufgerufen werden:

// Window Size: x, y
int[] winSize = new int[]{830, 800};
JFrame mainwin = createFrame("Titel",winSize[0],winSize[1]);

// Set LookAndFeel to Nimbus (Looks better)
try {
  UIManager.setLookAndFeel(
    "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e) {
  System.out.println("Error setting Nimbus LAF: " + e);
}

mainwin.setLayout(new FlowLayout());
JTabbedPane tabs = new JTabbedPane();
tabs.setPreferredSize(new Dimension(winSize[0],winSize[1]));
mainwin.add(tabs);
JPanel pHome = new JPanel();
tabs.addTab("Home", pHome);
JPanel pPlayer = new JPanel();
tabs.addTab("Player", pPlayer);
...

Wir haben nun ein schönes Tablayout mit dem wir arbeiten können.
Natürlich lässt es sich um beliebig viele Tabs erweitern.

Nützlich: Mit .setPreferredSize(Dimension d) lässt sich die Größe von einzelnen Elementen einstellen.

Nun macht es Sinn, die GUI als eigenen Thread laufen zu lassen.
Man kann so Aktualisierungen im Hintergrund laufen lassen.
Daher deklarieren wir die Klasse folgendermaßen:

public class Gui extends Thread{
//  Vars

  public Gui() {
  JFrame mainwin = createFrame("Title", 800, 600);
//  ... see above
  }

  @Override
  public void run() {
//  Do some refreshs ...
  sleepG(1000);
  }
}

Mit

public static void sleepG(int msec){
  try {
    Thread.sleep(msec);
  } catch (InterruptedException e) {
    System.err.println("Da hats doch grad nen sleep gekillt...");
    e.printStackTrace();
  }
}

Die InterruptedException muss schließlich aufgefangen werden.

Der Aufruf ist wie folgt:

Gui g = new Gui();
g.start();

Merke: Die Threadfunktion wird zwar als “run” deklariert, wird aber als “start” aufgerufen.
Mit g.run(); würden wir den Inhalt der Funktion sequentiell anstarten und nicht parallel in einem eigenen Thread.

Da wir in der GUI-Erstellung
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gesetzt haben, wird das gesamte Programm beim Schließen der GUI beendet.
Alternativ: .DO_NOTHING_ON_CLOSE

Kommentare deaktiviert

Java: InputBox

2010
07.14

Wie einige ja wissen, lerne ich gerade Java.
Andere wissen auch: Java ist auch eine Insel! (Das Buch ist toll für den Einstieg)

Da man in Java ja gerne Code recycelt, hab ich mir gedacht, ich schreib hier einfach mal n paar nützliche Schnipsel auf.
Vielleicht findet sie ja jemand und muss sich nicht danach kaputtsuchen wie ich :)

Inputboxen erstellt man einfach mit JOptionPane aus dem Swing Set.

String var = "";
var = javax.swing.JOptionPane.showInputDialog(null, "Text", "Titel", JOptionPane.QUESTION_MESSAGE, null, null, "DEFAULT");
// var = javax.swing.JOptionPane.showInputDialog(PARENT, TEXT, TITLE, MESSAGE_TYPE, null, null, "DEFAULT");

Wenn das ganze nun einen Integerwert abfragen soll sieht die Geschichte schon anders aus.
Die Eingabe muss nun in eine Ganzzahl umgewandelt werden.

int spd = 0;
try {
  spd = Integer.valueOf((String) javax.swing.JOptionPane.showInputDialog(null, "X Minuten pro Sekunde", "Geschwindigkeitsmultiplikator", JOptionPane.QUESTION_MESSAGE, null, null, "5"));
  if (spd < 1)
    spd = 1;
  else if (spd > 250)
    spd = 250;
} catch (NumberFormatException e) {
  spd = 10;
}

Möglicherweise funktioniert das auch ohne valueOf und (String). So funktioniert es aber sicher und wirft die genannte NumberFormatException wenn keine Zahl eingegeben wird.

Um das ganze noch zu vervollständigen. So geht eine einfache Messagebox:

JOptionPane.showMessageDialog(null, "Text", "Titel", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "Text");
Kommentare deaktiviert

Greys Super Sommer Sonne Mix ~ Gute Laune Edition

2010
05.11

Einige erinnern sich bestimmt noch an die letzten Jahre. Wenn ich zurücksehe, erinnere ich mich zum Beispiel an einen dreisitzer Ford Puma (ja, das könnte man als Insiderjoke bezeichnen), Touren duch die Fränkische unter Sternenhimmel und ne ganzen Menge gutelaune Musik.

Das gehört einfach zum Sommer dazu. Also hab ich mich mal wieder auf die Suche nach ein paar echten Krachern gemacht.

Und eins hab ich festgestellt: Der Soundtrack zu meinem Sommer wird verdammt vielseitig. Bis jetzt hab ich schon von Deutschpunk bis Drum and Bass die ganze Palette.

Ich fang dann mal mit dem ersten Teil an, vielleicht gefällts euch ja auch.

The Temper Trap – Fader
(Das erste Lied, von dem ich den Bass komplett auf meinem E-Bass spielen kann :) )

The Verve – Love Is Noise

[Republica - Ready To Go]
(Kein Musikvideo auf YT dank Sony.)

Massendefekt feat. Micki Krause – Nur ein Sommerlied
(Das kennen bestimmt noch einige :) )

Massendefekt – Wellenreiter

Funkagenda & Mark Knight – Man With The Red Face
(Mit dem sexy Sax ^^ )

Enter Shikari – Juggernauts (Nero Remix)
[Drum and Bass]

Danny Byrd vs. Liquid – Sweet Harmony
[Drum and Bass]

Matrix & FutureBound – American Beauty VIP
[Drum and Bass]

More to follow :)

Wenn sonst ein Video nicht geht liegts entweder an den Rechteinhabern (wofür ich noch verständnis hab) oder an der GEMA, die grad mal wieder ne schöne Löschwelle bei Youtube anstoßen.
Ja, ich empfehle die Musik die ich kaufe auch gerne weiter. Wenn ihr die Hörproben löscht, schneidet ihr euch ins eigene Fleisch, aber bitte…
Kommentare deaktiviert

Tolle Tools – DisplayFusion

2010
05.10

Es soll ja ausser mir noch so ein paar Verrückte geben, die auf mehr als einem Monitor gleichzeitig arbeiten.

Die, die es tun kennen alle das Problem. Man kann in Windows nur ein Wallpaper einstellen. Für beide Monitore.

Das ist jetzt in genau einer Situation besonders schlecht: Wenn die Bildschirme unterschiedlich groß sind.

Hier bietet DisplayFusion eine wirklich gute Abhilfe. Man kann für beide Bildschirme unterschiedliche Hintergründe einstellen. Diese dann getrennt voneinander gestreckt, zentriert, etc…

Die Basic Version (kostenlos) bietet schon alles was man braucht. In der Pro Version finden sich noch einige schöne Features, die man zwar nicht unbedingt braucht, die aber durchaus hilfreich sein können. Dazu gehören Feineinstellung der Bilder, eine Taskbar für den Zusatzmonitor und Funktionen für Internetdienste wie Flickr.

Für Leute, die den Win7 Wallpaperchanger mögen habe ich ein Script geschrieben, das die generierten Wallpapers in einen Ordner speichert. Bei Interesse einfach anfragen ;)

Kommentare deaktiviert

Server Status Screen

2010
04.14

Man gebe einem Informatiker:

  • Einen Server, dessen Status nicht überwacht wird
  • Etwas Kreativität
  • Ein PHP Handbuch
  • Ein Bash Scripting Handbuch
  • Ein dojo-Java-Framework
  • Zu viel Kaffee
  • Eine C64 Schriftart
  • Etwas freie Zeit um sich mit irgendwas abzulenken

Soweit zur Ausgangssituation.

Das stolze Ergebnis dieser Aktion ist die neue Statusseite dieses Servers!
http://status.graueseiten24.de

Und nun etwas Detailinformation zu den beiden Komponenten.

Der PHP Information Parser
ist eigentlich nix anderes als eine PHP File, die INI Files ausliest.
Zwei an der Zahl. Die erste beinhaltet die Objektnamen (linke Spalte) und die Statustexte (rechte Spalte).
Die zweite sagt der PHP welche Farben für welche Statusmeldungen verwendet werden sollen.

Dazu fügt sich dann noch das dojo-Framework ein: Die Spalten werden in folgender Reihenfolge eingeblendet: Rot->Gelb->Blau->Grün
Rot: Nicht OK
Gelb: Sollte man sich mal anschauen
Blau: Infotext
Grün: OK

Die Notes und der Footer werden aus extra Dateien geladen.

Und dann gibts da noch…
Das Bash Checkscript
… das im Prinzip nur alle fünf Minuten die INI Datei neu schreibt.

Was es bisher kann:

  • Prüfen, ob eine Webseite erreichbar ist anhand des Response Code (200:OK, Rest: Nicht OK)
  • Prüfen, ob ein Prozess läuft
  • Prüfen ob Yafaray gerade am Rendern ist
  • Systemmeldungen anzeigen
  • Statischen Text anzeigen

Das schöne an der ganzen Sache:
… man kann das Teil prinzipiell für jeden Fall abändern.
Die Farbcodes lassen sich einfach ergänzen. Man muss nicht unbedingt automatisch generierte Informationen verwenden.
Theoretisch kann man das Teil auch als To-Do-List verwenden… als Terminplaner… oder was auch immer.

Und Eye Candy ist für den geneigten Geek auch noch dabei ;)

War mal wieder ein lustiges Projekt für nebenbei…

Kommentare deaktiviert

Internet Radio für Drum and Bass Liebhaber

2010
02.03

Da ich auf meine Vorliebe für Liquid Drum and Bass gestoßen bin, hier mal einige Webradios in Richtung DnB.

Eine schöne Liste findet man hier.

Was ich bisher empfehlen kann ist Bassjunkees.com und wenns etwas Trance-iger sein darf DiscoverTrance.com .

Spoiler Inside: Vollständige Liste vom 03.02.2010
Kommentare deaktiviert

Schule – Europaprojekt

2010
02.01

So, hier mal kurz ein Artikel mit den fertigen Bildern.

Die folgenden zwei sind von mir.
Sie sind zwar nicht perfekt, aber am Wochenende war leider nicht mehr drin.


-einander


Europatasche
(Zugegeben, etwas einfallslos. Aber was besseres ist mir nicht eingefallen…)

Download hier

http://media.graueseiten24.de/temp/schule/20100128%20Bilder/Fertig/ChiViTiergarten.jpg
Kommentare deaktiviert

Kurz vorgestellt: Nützliche Addons für Firefox

2010
01.29

Hier mal wieder ein kleines Update für die werten Firefox Nutzer.

Adblock Plus

Dazu muss ich wohl nicht mehr viel sagen. Genialer Werbeblocker.

AppTabs

Verkleinert Tabs auf das Icon. Sehr nützlich, wenn man Seiten wie seinen Mail-Account oder Twitter immer offen hat.

Better Gmail 2

Wer Google Mail verwendet, findet hier viele kleine Verbesserungen. Sehr nütlich: Zeigt die Anzahl ungelesener Mails im Tab-Icon (Favicon) an.

Read the rest of this entry »

Kommentare deaktiviert

Neuerungen

2010
01.28

Hab gerade mal die Auto-Update Funktion von meiner Blog-Software funktionstüchtig gemacht.

Erstaunlicherweise hat alles sofort funktioniert, sogar das Update auf die neuste Version ging ohne Zicken (im krassen Gegensatz zur Appendix-Homepage)

Und weils so schön war hab ich gleich mal das Theme mitgeändert.
Hoffe es gegällt :)

Da ich jetzt auch vom Handy aus bloggen kann, könnte es sein, dass es demnächst wieder mehr Artikel gibt.

Kommentare deaktiviert

Firefox 3.6 RC 1 ist da!

2010
01.09

Ja,  der Release Candidate von Firefox 3.6 ist endlich angekommen.

UPDATE: 3.6 ist jetzt offiziell verfügbar

Und so schnell war der Fuchs noch nie!
Mozilla hat die Renderengine mit der die Seiten dargestellt werden geupdatet. Ich selbst war erst der Meinung, dass das wohl nicht so ausschlaggebend ist. Allerdings musste ich feststellen, dass ich mich doch geirrt hatte.

Ich habe den neuen Firefox nun einige Stunden getestet. Was ich berichten kann ist nicht viel, dafür aber sehr positiv.
Vom subjektiven empfinden her ist er einfach schneller.  Schneller? Ja! Ich konnte einfach keine Verzögerungen feststellen. Wo FF3.5 noch manchmal etwas nachzog beim Tabs wechseln oder Scrollen ist bei 3.6 einfach NICHTS mehr. So flüssig habe ich noch nie gebrowst.

Was noch positiv auffällt ist, dass die Tabs nun besser aussehen. Wirklich bemerkbar eigendlich nur wenn man Personas benutzt. Jedenfalls sind inaktive Tabs nun leicht durchsichtig (weiß nicht ob sie es davor auch schon waren). Jedenfalls sehen sie schicker aus :)

Das wars vorerst auch schon.

~Michi