Posted: März 1st, 2010 | Filed under: Programmieren | Tags: Farbige JList, Hintergrundfarbe, JList, JList Elemente Schriftfarbe, ListCellRenderer, ListCellRenderer Beispiel, ListCellRenderer Example, Schriftfarbe, Schriftfarbe in JList, UI Manager | No Comments »

geänderte Schriftfarbe in einer JList
Bei der Java GUI-Entwicklung bin ich in letzter Zeit immer öfters auf die Komponente JList gestoßen. Ich wollte euch nun zeigen wie ihr die Elemente in einer JList färben könnt. Ihr könnt sowohl die Schriftfarbe als auch die Hintergrundfarbe ändern. Dazu benötigen wir einen sogenannten ListCellRenderer. In unserem Beispiel möchten wir verschiedenen Personen, die wir zu einer JList hinzufügen, eine individuelle Schriftfarbe geben. Zunächst benötigen wir die Klasse „Person“, die eine Person mit einem Namen und einer Farbe repräsentiert.
Person.java
import java.awt.Color;
public class Person {
private String name;
private Color schriftfarbe;
public Person(String name, Color schriftfarbe){
this.name = name;
this.schriftfarbe = schriftfarbe;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Color getSchriftfarbe() {
return schriftfarbe;
}
public void setSchriftfarbe(Color schriftfarbe) {
this.schriftfarbe = schriftfarbe;
}
} |
Nun kommen wir zum ListCellRenderer. In unserem Beispiel nennen wir diesen „PersonListCellRenderer“. Dieser ListCellRenderer bestimmt das Aussehen der einzelnen Elemente in der List, implementiert die Klasse ListCellRenderer und ist ein Kindelement vom JLabel. Somit erreicht man also das die JList Elemente normale JLabels dargestellt werden. Wir können also all das machen das wir auch bei einem JLabel machen können. Wichtig ist das setOpaque auf true gesetzt wird. Mehr zu setOpaque findest du hier.
PersonListCellRenderer.java
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
public class PersonListCellRenderer extends JLabel implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// Wert aus der Liste wird als Person interpretiert (gecastet)
Person person = (Person) value;
// Name der Person wird als Text gesetzt
this.setText(person.getName());
// Muss aufgerufen werden ansonsten hat this.setBackground keine Wirkung
this.setOpaque(true);
// Element aus der Liste ist markiert
if(isSelected){
// Schriftfarbe
// UIManager.getColor("List.selectionForeground") gibt die
// Standard Schriftfarbe für ein markiertes Listen Element zurück
this.setForeground(UIManager.getColor("List.selectionForeground"));
// Hintergrund
// UIManager.getColor("List.selectionBackground") gibt die
// Standard Hintergrundfarbe für ein markiertes Listen Element zurück
this.setBackground(UIManager.getColor("List.selectionBackground"));
}
// Element aus der Liste ist nicht markiert
else{
// Schriftfarbe
this.setForeground(person.getSchriftfarbe());
// Hintergrund
this.setBackground(UIManager.getColor("List.background"));
}
// Das Label wird zurückgegeben und nun angezeigt
return this;
}
} |
Die Variable isSelected enthält die Information ob das jeweilige Element markiert ist oder nicht. Dementsprechend kann man verschiedene Farben für den jeweiligen Fall definieren. Über den UI Manager hat man die Möglichkeit Standardwerte auszulesen. Aus dem Quellcode geht hervor das wir die Hintergrundfarbe einfach vom Standard übernehmen und nur bei nichtmarkiertem Element erhält die jeweilige Person ihre Farbe. Alle möglichen Standardwerte des UI Managers können unter Java UI Manager Defaults nachgelesen werden. Schließlich wenden wir unseren ListCellRenderer auf eine JList an.
Beispiel Programm einer Liste
import java.awt.Color;
import java.awt.Container;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
public class Liste{
private JFrame frameApplikation;
private Container containerApplikation;
// Liste
private JList liste;
// Listen Modell
private DefaultListModel modell;
public Liste(){
//Set Look & Feel
try {
javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
frameApplikation = new JFrame();
frameApplikation.setTitle("Beispiel einer Liste mit bunter Schrift");
liste = new JList();
modell = new DefaultListModel();
liste.setModel(modell);
liste.setCellRenderer(new PersonListCellRenderer());
Person person1 = new Person("Stefan Raab", new Color(23, 59, 159));
Person person2 = new Person("Oliver Pocher", Color.GREEN);
Person person3 = new Person("Elton", new Color(244, 16, 159));
Person person4 = new Person("Hans-Martin", Color.RED);
modell.addElement(person1);
modell.addElement(person2);
modell.addElement(person3);
modell.addElement(person4);
containerApplikation = frameApplikation.getContentPane();
containerApplikation.add(liste);
frameApplikation.pack();
frameApplikation.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameApplikation.setVisible(true);
}
public static void main(String[] args) {
new Liste();
}
} |
Posted: Februar 24th, 2010 | Filed under: Programmieren | Tags: Color, Java, JAVA Farbe, Zufallsfarbe | 1 Comment »
Es gibt eine einfache Lösung in Java eine Zufallsfarbe zu erzeugen. Die Klasse Color repräsentiert in Java eine Farbe. Mit dem Konstruktor kann man die Werte(0-255) der Grundfarben rot, grün und blau übergeben. Aus diesen drei Werten ergibt sich dann eine Farbe.
// Zufallsfarbe
Random random = new Random();
Color color = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
|
Posted: Februar 24th, 2010 | Filed under: Programmieren | Tags: Java, Zufallszahl, Zufallszahl von bis | 3 Comments »
Im Artikel Java Zufallszahl habe ich bereits beschrieben wie man Zufallszahlen mit Hilfe von Math.random() erzeugt. Es gibt jedoch noch eine einfachere Methode Zufallszahlen zu erzeugen. Mittels der Java Klasse Random und deren Methode nextInt(zahl) kann man eine Zufallszahl zwischen 0 und der übergebenen Zahl erzeugen. Folgende, von mir geschriebene Methode, ermöglicht es einfach Zufallszahlen von einem übergebenenen Minimum, einschließlich diesem Minimum, bis zu einem übergebenenen Maximum, einschließlich dieses Maximums, zu erzeugen.
import java.util.Random;
public class Zufallszahl {
// Main-Methode
public static void main(String[] args) {
Zufallszahl zufallszahl = new Zufallszahl();
System.out.println(zufallszahl.zufallszahl(4, 10));
}
// Zufallszahl von "min"(einschließlich) bis "max"(einschließlich)
// Beispiel: zufallszahl(4,10);
// Mögliche Zufallszahlen 4,5,6,7,8,9,10
public int zufallszahl(int min, int max){
Random random = new Random();
return random.nextInt(max - min + 1) + min;
}
} |
Posted: Februar 21st, 2010 | Filed under: Programmieren | Tags: Beispiele, Bezeichner, Java, Java Konventionen | 8 Comments »
Allgemein
Bezeichner
Bezeichner sind die Namen der Java Klassen, Interfaces, Variablen, Objekte, Methoden und Konstanten.
Was ist überhaupt erlaubt?
- Alle Unicode Alphabete (z.B.: a-z, A-Z, 0-9, ä, é, ب (Arabisch), β (Griechisch))
- Nummern (jedoch nicht am Anfang)
- Währungssymbole
- Unterstrich _
- kein Schlüsselwörter erlaubt (z.B.: public nicht benutzen)
- keine Leerzeichen erlaubt
Beispiele
erlaubt, nicht erlaubt
- String
- S t r i n g
- i17
- i&17
- بρετη
- 123456
- MAX_VALUE
- max-value
- Public
- public
- $Dollarzeichen
- #lol
- _lol
Was sollte man benutzen (Konvention) ?
Die folgenden Kriterien gelten für alle Bezeichner. Also Klassen, Methoden, Variablen und Interfaces.
- Ausschließlich a-z, A-Z, 0-9
- _ (Unterstrich) nur einmal in Folge verwenden und nie allein
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- String
- بρετη
- i17
- _
- MAX_VALUE
- MAX__VALUE
- Public
- $Dollarzeichen
Klassen (Konventionen)
- Erster Buchstabe immer groß
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben, z.B.: BierZapfanlage)
- Möglichst nur Nomen (Substantive) (z.B.: Bier) verwenden
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- String
- string
- Bier
- Trinken
- BierBrauerei
- Bier_Brauerei
Methoden (Konventionen)
- Erster Buchstabe immer klein
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben den Rest immer klein, z.B.: bierZapfen)
- Sollte aus Verben bestehen oder in Kombination mit Nomen (z.B.: bierTrinken)
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Konvention berücksichtigt, Konventionsverstoß
Variablen (Konventionen)
- Erster Buchstabe immer klein
- CamelCase – Schreibweise (bei mehreren Wörtern den jeweiligen Anfangsbuchstaben groß schreiben den Rest immer klein, z.B.: bierAlkoholgehalt)
- Möglichst aussagekräftige Namen
- Möglichst keine Abkürzungen
Beispiele
Konvention berücksichtigt, Konventionsverstoß
- zahl
- ζαηλ
- kraftfahrzeug
- kfz
- pi
- inPiUmrechnen
- donauDampfschiffahrtsGesellschaft
- z64
Interfaces (Konventionen)
- Adjektive (z.B.: Trinkbar)
Posted: Februar 21st, 2010 | Filed under: Internet, Software | Tags: dropbox, Dropbox und Thunderbird, E-Mail synchronisieren, POP3 Mails synchronisieren, Thunderbird | 8 Comments »

Dropbox und Thunderbird
Ich bin im Besitz eines Netbooks und eines normalen Desktop-PC’s für zu Hause. Oft hab ich mir Gedanken gemacht wie ich am bessten meine WEB.DE – Freemail E-Mails und meine Geschäftlichen E-Mails, die ich per POP3 abrufe, synchronisieren kann. Leider stellt WEB.DE für Benutzer des Freemail Angebots kein IMAP zur Verfügung. Desshalb bin ich auf die Idee gekommen meine Thunderbird Mail-Verzeichnisse in meine Dropbox zu legen und bei beiden PCs zu benutzen. Dropbox ist ein Dienst und ein Programm bei dem ihr euch registrieren könnt und anschließend 2,5 Gigabyte Speicherplatz zur Verfügung gestellt bekommt. Ihr könnt dann über das Programm einen Ordner auf eurem PC anlegen. Dieser wird dann unmittelbar nach einer Änderung synchronisiert, d.h. alle neuen oder geänderten Dateien innerhalb dieses Ordners werden hochgeladen. Ihr habt sogar die Möglichkeit über den Webbrowser auf die Datein zuzugreifen, dazu müsst ihr euch einfach auf Dropbox.com anmelden. Über Extras -> Konten Einstellungen in eurem Mailprogramm Thunderbird könnt ihr das Lokale Verzeichnis eures jeweiligen Kontos ändern und in euren Dropbox Ordner legen. Am besten legt ihr pro Konto einen Extra Unterordner an. Hier im Beispiel habe ich diesen für mein WEB.DE Konto /web.de genannt.

Thunderbird Kontoeinstellung
Dies könnt ihr nun für alle Konten und natürlich auch für den Lokalen Ordner machen. Somit sind all eure E-Mails immer schön synchronisiert und sie stehen vorallem bei mehreren Systemen zur Verfügung.