Sortieren durch Austauschen - GUI

haui95

Bekanntes Mitglied
Guten Tag,
ich bin vor knapp einer Woche mit Java angefangen und komme bis jetzt, auch aufgrund meiner ausreichenden Delphi-Kenntnisse, gut mit der Syntax und der OOP zurecht. Nun habe ich ein Programm geschrieben, dass hinzugefügte Namen in einer JList sortieren soll. Nun, das Programm läuft auch, gibt mir jedoch eine Exception beim aufrufen des Sortieren Buttons. Ich habe bis jetzt den Fehler aber immer noch nicht gefunden, und wäre um jede Hilfe dankbar.

MfG

Sortieren Klasse mit main-Methode:

Java:
public class Sortieren 
{
    public static void main(String[] args) 
    {
        new Sortieren_GUI();
    }
}

Sortieren_GUI Klasse:

Java:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.Collator;
import javax.swing.*;

public class Sortieren_GUI 
{
    final int n = 100;
    String feld1[] = new String[n];
    int zaehler = 1;
    
    JFrame form1 = new JFrame("Sortieren");
    FlowLayout layout1 = new FlowLayout();
    JButton button1, button2, button3;
    JTextField edit1 = new JTextField();
    DefaultListModel model1 = new DefaultListModel();
    JList listbox1 = new JList(model1);
    
    public Sortieren_GUI()
    {
        button1 = new JButton("Hinzufügen");
        button1.addActionListener(new Buttonhandler());
        button2 = new JButton("Sortieren");
        button2.addActionListener(new Buttonhandler());
        button3 = new JButton("Beenden");
        button3.addActionListener(new Buttonhandler());
        
        edit1.setBounds(20, 20, 200, 20);
        form1.add(edit1);
        button1.setBounds(60, 70, 100, 25);
        form1.add(button1);
        button2.setBounds(60, 110, 100, 25);
        form1.add(button2);
        button3.setBounds(60, 150, 100, 25);
        form1.add(button3);
        listbox1.setBounds(300, 20, 250, 250);
        form1.add(listbox1);
        
        form1.setLayout(null);
        form1.setSize(590,330);
        form1.setVisible(true);
        form1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void hinzufuegen(String name)
    {
        feld1[zaehler] = name;
        zaehler = zaehler + 1;
    }
    void tausche(String str1, String str2)
    {
        String temp;
        
        temp = str1;
        str1 = str2;
        str2 = temp;
    }
    void sortieren()
    {
        int i, j;
        for (i = 1; i < (n - 1); i++)
        {
            for (j = i + 1; i < n; i++)
            {
                String string1 = feld1[i];
                String string2 = feld1[j];
                int k = string1.compareTo(string2);
                if (k > 0)
                {
                    tausche(feld1[i], feld1[j]);
                }
            }
        }
    }
    private class Buttonhandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e) 
        {
            if (e.getSource() == button1)
            {
                int i;
                hinzufuegen(edit1.getText());
                model1.clear();
                for (i = 1; i < n; i++)
                {
                    if (feld1[i] != "")
                    {
                        model1.addElement(feld1[i]);
                    }
                }
                edit1.setText("");
            }
            else if (e.getSource() == button2)
            {
                int i;
                sortieren();
                model1.clear();
                for (i = 1; i < n; i++)
                {
                    if (feld1[i] != "")
                    {
                        model1.addElement(feld1[i]);
                    }
                }     
            }
       }
   }
}
 

haui95

Bekanntes Mitglied
Wie meinst du das ? Ich fülle die JList doch mit der Array, und die Array habe ich mit der Hinzufuegen Methode gefüllt. Dann sortiere ich die Array und gebe die Array wieder in die JList aus. Jedoch bekomme ich eine Exception.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sortieren.Sortieren_GUI.sortieren(Sortieren_GUI.java:69)
at sortieren.Sortieren_GUI$Buttonhandler.actionPerformed(Sortieren_GUI.java:98)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:676)
at java.awt.EventQueue$4.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

Benutze NetBeans als Entwicklungsumgebung
 

haui95

Bekanntes Mitglied
Ja habe ich jetzt gemacht ;) Die Konsole gibt mir zuerst die Namen aus, die ich in die JList eingefügt habe und dann nur noch "null" . Und null kann er ja nicht sortieren :D
 

haui95

Bekanntes Mitglied
Nein , mache ich eigentlich nicht. Ich weiß nun auch nicht, ob das das Problem ist oder nicht. Könntest du deine "Igitts" noch einmal erläutern, was man an deinen Kritikpunkten verbessern könnte ? :)
 

Volvagia

Top Contributor
Problem: Ist ja klar. Du erzeugst ein leeres Array, schreibst dann ein paar Werte rein und sortierst es dann. Ist doch klar, dass am Ende noch einige Null-Werte sind. Entweder du ersetzt das Array durch eine Liste, oder du überprüfst die Werte vorher auf null. Möglicherweiße könnte das so aussehen, habs aber nicht getestet:

Java:
void sortieren() {
	int i, j;
	for (i = 1; i < (n - 1); i++) {
		for (j = i + 1; i < n; i++) {
			String string1 = feld1[i];
			String string2 = feld1[j];

			if((string1 == null && string2 != null) || (string1 != null && string1.compareTo(string2) > 0) {
				tausche(feld1[i], feld1[j]);
			}
		}
	}
}

tausche() wird so aber nicht funktionieren. (Zumindest nicht so, wie du willst.)


Igitt igitt: Null-Layout is evil. (Da hatte hier irgendwer einen Link in der Signatur). Erstens, musst du jedes Objekt von der Hand platzieren. Dazu musst du ewig rumrechnen, wie die Koordinaten lauten. Dadurch werden Erweiterungen und Änderungen auch die Hölle. Zweitens schaut es auf jeden Betriebsystem anderst aus. Dann siehst du nur noch Labels die mit 3 Punkten enden etc. Gibt noch mehr Gründe, aber ich finde das sind die Hauptgründe dagegen.

Igitt igitt²: Widerspricht den Java Convensions. Ein Klassenname sollte immer Groß und CamelCase sein. Also z. B. SortierenGUI oder SortierenGui. Eher zweiteres aber hier dürfte sich jeder auskennen. Es gibt viele Regeln, aber ich finde das ist die allerwichtigste überhaupt.
Am schlimmsten ist es aber immer bei Variablenamen:

Java:
public void method() {
	Klasse Ding = new Klasse();
	...
	Ding.tuWas(); //<- Klassen- oder Instanzmethode? "Ding" Klasse oder Variable?
}

An die Regel solltest du dich umbedingt halten.
 
Zuletzt bearbeitet:

haui95

Bekanntes Mitglied
Danke... Exception ist weg :) Nur, du meintest ja, dass tauschen() evtl. so nicht funktioniert. Wenn ich jetzt den Button drücke passiert rein garnichts. Entweder wird das Array nicht getauscht, oder er hat irgendwo Probleme das Array in die JList einzufügen. Ich stehe im Moment echt auf dem Schlauch :D

MfG
 

haui95

Bekanntes Mitglied
Ich übergebe in der Methode sortieren aber die beiden Arrays an die tauschen Prozedur.

Ausschnitt aus der Sortieren Methode:

Java:
tausche(feld1[i], feld1[j]);

Prozedurkopf der tauschen Methode:

Java:
void tausche(String str1, String str2)

MfG
 

haui95

Bekanntes Mitglied
Ja, de zwei Strings die ich übergebe soll er ja auch überprüfen und gegebenfalls tauschen.

Ah, ich habe gemerkt, dass ich doch keine Werte übergebe, da die Deklaration im Kopf der Prozedur Werteparameter sind und keine Referenzparameter oder ?
Wie kann ich denn Referenzparameter deklarieren ?
Bei Delphi ist es ja ganz einfach, da man dort ein " var " benutzt.

MfG
 

Volvagia

Top Contributor
Es sind Referenzvariablen, aber Kopien der Referenzen des Arrays und kein Interface dazwischen.

Java:
void tausche(String[] array, int fieldA, int fieldB)
{
	String temp = array[fieldA];
	array[fieldA] = array[fieldB];
	array[fieldB] = temp;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Mehrere Spalten mit Comparator sortieren Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
J Sortieren Java Basics - Anfänger-Themen 21
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
J Ungewolltes Sortieren eines Arrays Java Basics - Anfänger-Themen 4
T Collections Sortieren von Automodellen (v.a. BMW und Mercedes) Java Basics - Anfänger-Themen 3
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
D Erste Schritte array aufsteigend sortieren und ausgeben Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben