Java Regulärer Ausruck E-Mail

Posted: März 26th, 2010 | Filed under: Programmieren | Tags: , , , | 2 Comments »

Hier ein Regulärer Ausdruck oder Regular Expression für eine E-Mail-Adresse. Habe den Ausdruck mir selbst ausgedacht. Verbesserungsvorschläge nehme ich natürlich gerne an.Testen könnt ihr das ganze mit meinem RegularExpressionTester.

[A-Za-z0-9._%+-]+@{1}[A-Za-z0-9.-]+[.]{1}[A-Za-z]{2,4}

Java doppelte Einträge aus ArrayList löschen

Posted: März 26th, 2010 | Filed under: Programmieren | Tags: , , , , , , , | 3 Comments »

Beim schreiben eines Textfilters habe ich letzt eine kleine Funktion benötigt. Ich wollte gleiche Einträge in einer ArrayList herrauslöschen. Folgende Funktion löscht alle Duplikate.

  public void removeDuplicatedEntries(ArrayList<String> arrayList) {
    HashSet<String> hashSet = new HashSet<String>(arrayList);
    arrayList.clear();
    arrayList.addAll(hashSet);
  }

Windows herunterfahren über Konsole

Posted: März 14th, 2010 | Filed under: Betriebsysteme | Tags: , , , , , | 1 Comment »

Um Windows gezielt über die Konsole herunterzufahren kann man folgenden Befehl verwenden.

shutdown -s -f -t 0

Dabei bewirkt -s das Herunterfahren, -f erzwingt das Schließen ausgeführter Anwendungen ohne Warnung und -t gibt das Zeitlimit für das Herunterfahren an. Hier nochmal alle Befehle aus der Windowskonsole Hilfe aufgelistet.

Syntax: shutdown [-l | -s | -r | -a] [-f] [-m \\Computer] [-t xx]
[-c „Kommentar“] [-d up:xx:yy]

Keine Argumente Zeigt diese Meldung an (wie -?).
-i Zeigt eine grafische Benutzeroberfläche an (muss die erste Option sein).
-l Abmelden (kann nicht mit der Option -m verwendet werden).
-s Fährt den Computer herunter.
-r Fährt den Computer herunter und startet ihn neu.
-a Bricht das Herunterfahren des Systems ab.
-m \\Computer Remotecomputer zum Herunterfahren/Neustarten/Abbrechen.
-t xx Zeitlimit für das Herunterfahren, in xx Sekunden.
-c „Kommentar“ Kommentar für das Herunterfahren (maximal 127 Zeichen).
-f Erzwingt das Schließen ausgeführter Anwendungen ohne Warnung.
-d [u][p]:xx:yy Grund (Code) für das Herunterfahren:
u = Benutzercode
p = Code für geplantes Herunterfahren
xx = Hauptgrund (positive ganze Zahl kleiner als 256)
yy = Weiterer Grund (positive ganze Zahl kleiner als 65536)


Java Schriftfarbe in JList ändern

Posted: März 1st, 2010 | Filed under: Programmieren | Tags: , , , , , , , , , | No Comments »
geänderte Schriftfarbe in einer JList

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 = (Personvalue;

    // 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(2359159));
    Person person2 = new Person("Oliver Pocher", Color.GREEN);
    Person person3 = new Person("Elton"new Color(24416159));        
    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();
  }
}