Posted: April 2nd, 2011 | Filed under: Programmieren, Tutorials | Tags: einrichten, Entwicklung, Java, slick, slick2D, Spiele, Tutorial | 5 Comments »
Seit einiger Zeit befasse ich mich mit der Java 2D Spiele-Engine Slick (Danke an Tobse). Deswegen habe ich mir gedacht wieso nicht ein Tutorial schreiben. Heraus gekommen ist ein Dokument welches beschreibt wie man Slick einrichtet, wie mein sein erstes Projekt erstellt und wie man ein erstes Spiel entwickelt. Als Beispiel-Spiel habe ich mich für einen Pong-Klon entschieden.
Hier geht’s zum Slick Tutorial:
Posted: Januar 21st, 2011 | Filed under: Programmieren | Tags: ArrayList, Collection, Element löschen, Iterator, Java, java.util.ConcurrentModificationException, LinkedList, List, während Iteration | 7 Comments »
Oft kommt es vor dass man in Java während der Iteration über eine ArrayList oder eine LinkedList ein Element nach einem gewissen Kriterium heraus löschen will. Über die gewöhnliche Schleife for(String name : namen) geht dies jedoch nur über Umwege mit einer zweiten Hilfsliste. Löscht man Elemente während der Iteration mit obiger Schleife erhält man eine java.util.ConcurrentModificationException.
Folgende Lösung ist weitaus einfacher und effizienter. Hier wird nämlich ein Iterator verwendet und es ist möglich während der Iteration zu löschen:
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListRemoveDuringIteration { public static void main(String[] args) { List<String> namen = new ArrayList<String>(); namen.add("Peter"); namen.add("Paul"); namen.add("Maria"); namen.add("Frank"); for (Iterator<String> nameIter = namen.iterator(); nameIter.hasNext();){ String name = nameIter.next(); if(name.equals("Paul")){ nameIter.remove(); System.out.println("Paul wurde während der Iteration aus der Liste gelöscht!"); } } } } |
Quelltextdatei herunterladen: ListRemoveDuringITeration.java
Posted: November 24th, 2010 | Filed under: Programmieren, Software | Tags: EXE, JAR, JAR in EXE, Java, kostenlos, Software, umwandeln | 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.
Nachdem ihr mit dem Button “Create Executable” eine *.exe Datei erstellt habt könnt ihr euer Java Programm nun mittels Doppelklick öffnen.
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
Posted: Oktober 5th, 2010 | Filed under: Software | Tags: Analyse, Festplatten Monitor, Java, JNotify, Logger, Logging, Schreibzugriffe | No Comments »
Habe mal wieder Lust gehabt etwas zu erschaffen. Dabei herausgekommen ist der JNotify basierende Festplatten-Monitor. JNotify und jHardDiscSpy unterstützen folgende Plattformen:
- Windows (2000 oder höher)
- Linux (2.6.14 oder höher)
- Mac OS X (10.5 oder höher)
Funktionen
- Loggt alle Festplatten und Wechseldatenträger – Aktionen mit (Voraussetzung Lese & Schreiberechte)
- Filtermöglichkeit der Log Daten per Regulären Ausdruck
Screenshots
Download
http://jharddiscspy.mynotiz.de/download/jHardDiscSpy_1.2.zip
Posted: September 26th, 2010 | Filed under: Programmieren, Tutorials | Tags: automatisch nach unten scrollen, Beispiel, Example, Java, JFrame, JList, JScrollPane, Scroll down | No Comments »
Ich schreibe gerade an einem Programm welches alle Festplattenaktivitäten in einer JList auflistet. Da sehr viele Aktionen anfallen möchte ich dass die, von einer ScrollPane umgebene, JList automatisch nach unten scrollt sobald ein Eintrag hinzugefügt wird. Quasi ein JList Auto-Scroll Down. Das Java-Beispielprogramm sieht folgendermaßen aus.
Screenshot
Quellcode
Und hier der erlösende Quellcode dazu.
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; public class Main extends JFrame { private JList jList; private JScrollPane jScrollPane; private DefaultListModel defaultListModel; private JButton jButton; public Main() { super(); initGUI(); } private void initGUI() { try { BorderLayout thisLayout = new BorderLayout(); this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); this.getContentPane().setLayout(thisLayout); defaultListModel = new DefaultListModel(); jList = new JList(); jList.setModel(defaultListModel); jScrollPane = new JScrollPane(); jScrollPane.setPreferredSize(new java.awt.Dimension(392, 245)); jScrollPane.setViewportView(jList); jButton = new JButton(); jButton.setText("add"); jButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { // Wichtig ist dass das Hinzufügen alles in einem seperaten // Thread abläuft damit die Oberfläche nicht hängen bleibt // und damit es keine Fehler beim dem Scrollen gibt(IndexOutOfBoundsException). SwingUtilities.invokeLater(new Runnable() { public void run() { // Element dem DefaultListModel hinzufügen. // Angezeigt wird dann die toString Methode des // Objektes, in diesem Fall ist das der String // selbst. defaultListModel.addElement(new String(System.currentTimeMillis() + "")); // Anschließend den letzten index des Model sichtbar setzen, // dies Bewirkt den automatischen Scroll nach unten. jList.ensureIndexIsVisible(defaultListModel.size() - 1); } }); } }); this.getContentPane().add(jScrollPane, BorderLayout.CENTER); this.getContentPane().add(jButton, BorderLayout.SOUTH); this.setTitle("JList Auto-Scroll Beispiel"); this.pack(); this.setSize(400, 300); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Main inst = new Main(); inst.setLocationRelativeTo(null); inst.setVisible(true); } }); } } |
Download
Main.java
Ich hoffe ich konnte einigen von euch helfen.