Java ausführbare JAR-Datei in EXE umwandeln

Posted: November 24th, 2010 | Filed under: Programmieren, Software | Tags: , , , , , , | 2 Comments »

Java Entwickler kennen das Problem. Man hat ein Programm geschrieben und möchte natürlich, dass jeder Benutzer das Programm ohne Probleme zum laufen bekommt. Allerdings stößt der Benutzer schon beim starten der Software Lösung an seine Grenze. Er muss nämlich in die Eingabeaufforderung oder in die Konsole und einen kryptischen Befehl eingeben.

Das geht auch wesentlich einfacher. Mit dem Tool JMadex könnt ihr ausführbare JAR-Dateien in eine EXE packen. Zusätzlich bietet euch das Programm noch an ein Icon für eure Anwendung zu definieren.

image

Nachdem ihr mit dem Button “Create Executable” eine *.exe Datei erstellt habt könnt ihr euer Java Programm nun mittels Doppelklick öffnen.

image

Beim starten der EXE wird die JAR-Datei in der EXE temporär entpackt. Anschließend wird nach der Java VM gesucht und mittels dieser die JAR Datei dann ausgeführt.

Download

http://www.olison.com/sites/jmadex.php


ICQ-Client mit Facebook Funktion

Posted: November 8th, 2010 | Filed under: Internet, Software | Tags: , , , , | No Comments »

http://png-5.findicons.com/files/icons/1594/social_media_icons_2_0/128/facebook.pngAls ich heute mein Miranda (sehr guter und ressourcensparend Chat-Client) aktualisiert habe bin ich auf ein praktisches Addon gestoßen. Facebook Protocol ermöglicht es über Miranda mit Leuten die bei Facebook online sind zu chatten. Zusätzlich erhaltet ihr, falls eine neue Meldung von jemandem online gestellt wird, ein Tooltip in eurem Systray mit der entsprechenden Information. Zum Beispiel wer gerade was macht.

Kostenlos herunterladen könnt ihr das ganze hier: http://addons.miranda-im.org/details.php?action=viewfile&id=4172. Einfach in den Miranda-Ordner Plugins entpacken und Miranda neustarten. Fertig!

image image


Firefox Addon: Tabs vertikal auf der linken Seite

Posted: November 7th, 2010 | Filed under: Internet, Software | Tags: , , , | No Comments »

Hi Leute, via Gordon ein Freund (den ich an dieser Stelle mal schön grüße) bin ich auf ein tolles Firefox Addon aufmerksam geworden.  Tree Style Tab ermöglicht es euch die Tableiste des Firefox auf die linke Seite zu bringen. Das Addon kann sogar noch mehr. Tabs werden sogar hierarchisch eingerückt. Wenn ihr also auf Google nach etwas sucht und ihr klickt dann auf einen vorgeschlagenen Link (neuer Tab) erscheint dieser Tab mit dem Link eingerückt unterhalb des Google Tabs. Ein schöne Sache wie ich finde. Gerade in Zeiten von Breitbildmonitoren und Widescreens sehr praktisch. Somit könnt ihr nämlich viel mehr Tabs auf einen Blick (ohne lästiges horizontales Scrollen) verwalten. Mittlerweile sowohl bei meinem Netbook als auch bei meinem Desktop-PC Standard.

image image


Java Checkbox in JList

Posted: November 3rd, 2010 | Filed under: Programmieren | Tags: , , , , , , , , , | 7 Comments »

Für mein neustes Programm jCalFilter, welches Einträge in einem Kalender im ICS-Format filtern kann, habe ich eine JList gebraucht in der ich Termine auswählen kann. Dafür eignete sich am Besten eine JList die JCheckboxes beinhaltet. Mit diesem kleinen Tutorial möchte ich euch zeugen wie ihr das realisieren könnt.

Das fertige Programm soll so aussehen:

image

Als Datenkapsel verwende ich ein Objekt Person welches lediglich die Informationen Vorname, Name und Alter abspeichert. Des weiteren bietet die Klasse Person noch eine toString()-Methode. In dieser wird der Text zurückgegeben der jeweils in der Liste angezeigt werden soll.

Person.java

public class Person {

  private String name;
  private String vorname;
  private int alter;
 
  public Person(String name, String vorname, int alter){
    this.name = name;
    this.vorname = vorname;
    this.alter = alter;
  }
 
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getVorname() {
    return vorname;
  }
  public void setVorname(String vorname) {
    this.vorname = vorname;
  }
  public int getAlter() {
    return alter;
  }
  public void setAlter(int alter) {
    this.alter = alter;
  }
 
  @Override
  public String toString() {
    return vorname + " " + name + " (" + alter + ")";
  }
}

 

Nun kommen wir zum eigentlichen Kern der Implementierung. Die Klasse JCheckBoxList erbt einfach von JList. Diese beinhaltet einen ListCellRenderer in dem Formatierungen verändert werden können. Zusätzlich bietet die Klasse JCheckBoxList eine Methode selectAll() und deselectAll() an, um eben alle Häkchen zu setzten oder um die Auswahl aller Häkchen zu entfernen.

JCheckBoxList.java

import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;

public class JCheckBoxList extends JList {

  public JCheckBoxList() {
    setCellRenderer(new CellRenderer());
    addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        int index = locationToIndex(e.getPoint());
        if (index != -1) {
          JCheckBox checkbox = (JCheckBox) getModel().getElementAt(
              index);
          checkbox.setSelected(!checkbox.isSelected());
          repaint();
        }
      }
    });
    setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  }

  protected class CellRenderer implements ListCellRenderer {
    public Component getListCellRendererComponent(JList list, Object value,
        int index, boolean isSelected, boolean cellHasFocus) {
      JCheckBox checkbox = (JCheckBox) value;

      if (isSelected) {
        // checkbox.setBorderPainted(true);
        // checkbox.setForeground(UIManager.getColor("List.selectionForeground"));
        // checkbox.setBackground(UIManager.getColor("List.selectionBackground"));
      } else {
        // checkbox.setBorderPainted(false);
        // checkbox.setForeground(UIManager.getColor("List.foreground"));
        checkbox.setBackground(UIManager.getColor("List.background"));
      }
      return checkbox;
    }
  }

  public void selectAll() {
    int size = this.getModel().getSize();
    for (int i = 0; i < size; i++) {
      JCheckBox checkbox = (JCheckboxWithObject) this.getModel()
          .getElementAt(i);
      checkbox.setSelected(true);
    }
    this.repaint();
  }

  public void deselectAll() {
    int size = this.getModel().getSize();
    for (int i = 0; i < size; i++) {
      JCheckBox checkbox = (JCheckboxWithObject) this.getModel()
          .getElementAt(i);
      checkbox.setSelected(false);
    }
    this.repaint();
  }
}

 

Um die Verbindung zwischen einer Person und der Checkbox herzustellen habe ich das Objekt JCheckboxWithObject erstellt. Diese Klasse erbt von JCheckBox aber beinhaltet zusätzlich noch ein Objekt vom Typ Object in dem man irgendein Objekt ablegen kann. In unserem Fall ein Objekt vom Typ Person. Die Checkbox wird, im Konstruktor und der Setter-Methode, nun mit dem Rückgabestring der toString()-Methode des jeweiligen Objektes(Person) beschriftet.

JCheckboxWithObject.java

import javax.swing.JCheckBox;

public class JCheckboxWithObject extends JCheckBox{
 
  private Object object;
 
  public JCheckboxWithObject (Object object){
    this.object = object;
    this.setText(object.toString());
  }
 
  public Object getObject() {
    return object;
  }

  public void setObject(Object object) {
    this.object = object;
    this.setText(object.toString());
  }
}

 

Nun kann die Datenstruktur wie folgt angewendet werden. Das Ergebnis seht ihr ja oben.

Main.java

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class Main {

  {
    // Set Look & Feel
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        // Fenster
        JFrame frame = new JFrame();

        // Checkboxliste
        DefaultListModel personenListModel = new DefaultListModel();
        JCheckBoxList list = new JCheckBoxList();
        list.setModel(personenListModel);

        // Daten hinzufügen
        Person hans = new Person("Wurst", "Hans", 24);
        Person peter = new Person("Müller", "Peter", 36);
        Person klaus = new Person("Wagner", "Klaus", 29);
        JCheckboxWithObject hansCheckbox = new JCheckboxWithObject(hans);
        JCheckboxWithObject peterCheckbox = new JCheckboxWithObject(
            peter);
        JCheckboxWithObject klausCheckbox = new JCheckboxWithObject(
            klaus);

        personenListModel.addElement(hansCheckbox);
        personenListModel.addElement(peterCheckbox);
        personenListModel.addElement(klausCheckbox);

        frame.getContentPane().add(list);
        frame.setVisible(true);
        frame.setTitle("JCheckbox in JList");
        frame.setSize(200, 200);
      }
    });
  }
}

Download

Hier könnt ihr euch denn ganzen Quellcode herunterladen.