Kleines GUI/Sortier Projekt für die Uni

nikels

Mitglied
Hallo alle zusammen,
wir als Gruppe sollen ein Projekt auf die Beine stellen das folgendes Eigenschaften aufweißt:
1) Es sollen 4 Sortieralgorithmen implementiert werden.
2) Es soll eine grafische Benutzeroberfläche geben.
3) Anhand der Zeit soll die Komplexität des Algorithmuses angezeigt.
4) Natürlich sollen per Hand Zahlen in die Zahlenfelder übernommen/übergeben werden.



Das folgende Mockup zeigt ungefähr, wie wir uns dies vorgestellt haben.
Das einzige Feature, das wir anders gestalten wollen ist, dass die Anzahl der möglichen Zahlenfelder auf Max. 8 beschränkt ist, somit gibt es schon
anfangs 8 felder und das + (für Zahlenfeld hinzufügen) und - (für Zahlenfeld entfernen) soll wegfallen.

Meine Frage ist nun hab ihr vielleicht Erfahrung in diesem Gebiet?
Wäre dankbar für Tipps und mögliche Ratschläge zur Implementierung / GUI geben.
 

stg

Top Contributor
Direkt als Hinweis: Bei nur 8 Zahlen wirst du keine Möglichkeit haben die Laufzeiten gescheit auszuwerten. Lass dir lieber (deutlich größere!!) Arrays mit Zufallszahlen befüllen und sortiere diese. Mögliche Schritte wären z.B. 100, 200, 400, 800, 1.600, 3.200, 6.400, 12.800. Lass diese Tests dann mehrmals (auf jeweils neuen Arrays) laufen, damit du gescheite Mittelwerte für die Laufzeit bestimmen kannst.
 

nikels

Mitglied
Algorithmen arbeiten soweit alle wie gewünscht die nächste Herausforderung wäre die GUI.
Da ich relativ wenig Ahnung habe hoffe ihr könnt mir Starthilfe geben.
Hier Teile des Codes und meine zusammen gebastelte GUI.
Ich habe momentan 3 Klassen 1xMain 1xSort(In der sich die Algorithmen befinden) 1xGUI

Hier erstmal Ausschnitte von Sort (Es gib mehr Algorithmen aber das sollte für Bubblesort reichen)
Java:
	int[] unorded;
	int index=0;
	int min;
	int size;


	//Array im Konstruktor erzeugen
	Sort(){
		unorded = new int[2000];
		
		for(int i=0; i<unorded.length; i++)
			unorded[i] = (int)(Math.random()*unorded.length);
	}



	//Bubblesort
	void bubblesort(){
		size = unorded.length;
		for(int y=0; y<size; size--){
			for(int x=0; x<size-1; x++){
				if(unorded[x]>unorded[x+1]){
					int puffer = unorded[x];
					unorded[x]=unorded[x+1];
					unorded[x+1]=puffer;
				}
			}
		}
	}

	//Ausgabe Methode
	void output(){
		for(int c:unorded){
			System.out.print(c+" ");
		}
	}

Hier die zusammen gebastelte GUI
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FirstGUI extends JFrame
{
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JPanel panelButton;
private JLabel oben;
private JLabel anzeige;

public FirstGUI()
{
super("Fenster");
setLocation(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout(5,5));

//Buttons erzeugen
button1 = new JButton("Zufalls Array erzeugen");
button2 = new JButton("bubblesort");
button3 = new JButton("selectionsort");
button4 = new JButton("simplesort");
button5 = new JButton("ritkow");

//Panels erzeugen
panelButton = new JPanel(new GridLayout(3,1));
//Auf Panel Buttons packen
panelButton.add(button1);
panelButton.add(button2);
panelButton.add(button3);
panelButton.add(button4);

//Listener für Buttons
addButtonListener(button1);
addButtonListener(button2);
addButtonListener(button3);
addButtonListener(button4);

//Labels erzeugen
oben = new JLabel("Projekt Nirvana");

//Label zentrieren
oben.setHorizontalAlignment(JLabel.CENTER);
anzeige = new JLabel("Array Platz");

//Labels auf Frame packen
getContentPane().add(BorderLayout.NORTH, oben);
getContentPane().add(anzeige);

//Panels auf Frame packen
getContentPane().add(BorderLayout.WEST, panelButton);
pack();
setVisible(true);
}
public static void main(String[] args)
{
FirstGUI g = new FirstGUI();
}
private void addButtonListener(JButton b)
{
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
eingabe(ae.getActionCommand());
}
});
}
private void eingabe(String a)
{
anzeige.setText(a);
}
}

Die konkrete Frage ist wie bekomme ich das Zufalls Array und das sortierte Array (Bubblesort) als methoden in die Buttons übergeben?
Wie bekomme ich die 2000 Werte lesbar angezeigt?
 

Ruzmanz

Top Contributor
Wie bekomme ich die 2000 Werte lesbar angezeigt?

Mit einer Textarea. Dort stehen die dann mit einem Semikolon getrennt drinnen: "203 ; 203 ; 100 ; 5 ; 76 ; ..."

Die konkrete Frage ist wie bekomme ich das Zufalls Array und das sortierte Array (Bubblesort) als methoden in die Buttons übergeben?

Java:
// GUI:
Sort sort = new Sort();
int[] sortedArray = sort.bubblesort(inputArray)

// Sort:
int[] bubblesort(int[] unsorted) {
//...
return sorted;
}
 

nikels

Mitglied
Das Projekt ist in 1,5 Wochen fällig und es passt eigentlich so weit alles.
Es fehlen noch bei 2 fenstern die Scollbuttons die ich nicht hin bekomme.


Anfang der Main
Java:
public class MainWindow extends JFrame {
		
	private static final long serialVersionUID = 1L;
	long vorher;
	private JPanel contentPane;
		
	public static void main() {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MainWindow frame = new MainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	
	}
	public MainWindow() {
		getContentPane().setLayout(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 600);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

Rückgabe Fenster wobei die Scrollbuttons bei txtpnVorher und txtpnResult benötigt werden.
Java:
		//Rueckgabefelder
		
		
		final JTextPane txtpnVorher= new JTextPane();
		txtpnVorher.setBounds(25, 40, 350, 150);
		contentPane.add(txtpnVorher);
		
		final JTextPane txtpnResult= new JTextPane();
		txtpnResult.setBounds(25, 375, 150,100);
		contentPane.add(txtpnResult);
		
		final JTextPane txtpnTime = new JTextPane();
		txtpnTime.setBounds(225, 375, 175, 20);
		contentPane.add(txtpnTime);

Action Listener für Zufallsarray und 1 der SortAlgos
Java:
		//Action Listener
		btnAdd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				
				int[] all = null;
								
				try {
				    
					Sort e1 = new Sort();
					e1.randomArray();
					
					all = Sort.getResult();

					Arrays.toString(all);
				    System.out.println(Arrays.toString(all));
	
				} catch (Exception e1) {
					JOptionPane.showMessageDialog(null,
							"Please check your data\n" + e1.getMessage());
				}
				  txtpnVorher.setText("Ergebnis: "+ Arrays.toString(all) );	
			}
		});
		
		
		btnBubblesort.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				
				int[] all = null;
								
				try {
				    
					
					Sort a = new Sort();
					vorher = System.currentTimeMillis();
					a.bubblesort();
					
					
					all = Sort.getResult();

					Arrays.toString(all);
				    System.out.println(Arrays.toString(all));
					
				    vorher = System.currentTimeMillis() - vorher;
				} catch (Exception e1) {
					JOptionPane.showMessageDialog(null,
							"Erstellen Sie zuerst ein Zufallsarray. Ihr aktuelles Array hat\n" + e1.getMessage()+" Zahlen");
				}
				
				 txtpnResult.setText("Ergebnis: "+ Arrays.toString(all) );
				txtpnTime.setText("Zeit ms: "+vorher);
			
				
			}
		});
Außer dem Scrollbuttons läuft soweit alles wie gewünscht, deswegen hoffe ich jemand kann mir sagen
wie ich das "Scollbutton" Problem einfach lösen kann.
Ich würde am liebsten falls möglich nur die JTextPanes erweitern, da ich den GUI-Kurs erst übernächstes Semester habe und ungern wieder sachen umbauen möchte (wegen fehlenden Know-how).
 

kaoZ

Top Contributor
Mit ScrollButtons meinst du was......? Scrollbalken, Vertikal sowie Horizontal ?

Falls ja dann ist die JScrollPane die Qual der Wahl.
 

nikels

Mitglied
Ja habs schon mit JScrollPane versucht aber hab nichts zustande bekommen. :noe:
Ein JScollPane zu erstellen ist kein Problem aber es an den richtigen platz zu setzten und es mit der Methode zu verbinden klappt bei mir nicht.
 

kaoZ

Top Contributor
Ein JScollPane zu erstellen ist kein Problem aber es an den richtigen platz zu setzten und es mit der Methode zu verbinden klappt bei mir nicht.

Du übergibst eine JScrollPane einfach die zu Scrollende Komponenten, z.B eine JTextArea

hauptsache ist das die Komponente das Interface Scrollable implementiert.

Java:
JTextArea area = new JTextArea();

JScrollPane pane = new JScrollPane(area);

sollte der Text nun länger sein als in der TextArea dargestellt werden kann, wird die Scrollpane den sogenannten ViewPort der TextArea durch ScrollBalken erweitern.

platzieren kannst du das ganze wie jedes andere Element in Swing über die verschiedenen Layoutmanager welche du den einzelnen JPanel zuordnest, die wiederum die Komponenten enthalten.

einer JTextArea kannst du Text entweder per
Code:
.append();
oder ganz normal über deren
Code:
.setText();
Methode übergeben.
 
Zuletzt bearbeitet:

nikels

Mitglied
Wenn ich z.B. das Feld des Unsortierentarrays ändere von
Java:
		final JTextPane txtpnVorher= new JTextPane();
		txtpnVorher.setBounds(25, 40, 350, 150);
		contentPane.add(txtpnVorher);

zu

Java:
		final JTextArea area = new JTextArea();
		JScrollPane pane = new JScrollPane (area);
		area.setBounds(25, 40, 350, 150);
		contentPane.add(area);

dann kann ich immer noch nicht Scrollen.
Hab ich irgendwas vergessen ?

OK es klappt wobei alle Zahlen jetzt ohne Zeilenumbruch da stehen (Alle Zahlen in 1 Reihe)
Bekomme ich es irgend wie einfach hin da einen Zeilenumbruch zu realisieren ?
 
Zuletzt bearbeitet:

nikels

Mitglied
Zeilenumbruch klappt auch jetzt möchte ich nur noch das es oben beginnt (Scrollbutton oben),
da momentan die letzten Elemente angezeigt werden.
Java:
area.setCaretPosition(0);
funktioniert leider nicht :noe:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M kleines KI Programm Idee Allgemeine Java-Themen 7
S Unerwarteter Output (kleines Raetsel) Allgemeine Java-Themen 6
G Kleines Projekt Allgemeine Java-Themen 2
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
V Kleines Regex-Problem Allgemeine Java-Themen 3
I kleines Wochenlohn-Programm schreiben Allgemeine Java-Themen 5
F Kleines Problem mit exec Allgemeine Java-Themen 14
C Architekturvorschläge für kleines Projekt Allgemeine Java-Themen 2
S wiedermal ein kleines Problem mit BigDecimal Allgemeine Java-Themen 5
R Kleines Ratespiel Allgemeine Java-Themen 14
N Kleines nicht java Problem Allgemeine Java-Themen 7
F kleines regexp Problem. Allgemeine Java-Themen 3
_SeiA_ Hilfe Kleines Java Programm schreiben. Summen. Allgemeine Java-Themen 3
G von großem Panel auf ein kleines Panel mappen Allgemeine Java-Themen 6
S kleines File problem Allgemeine Java-Themen 13
M kleines prob mit JInternalFrame Allgemeine Java-Themen 5
J Kleines Tool in Java erstellen? Allgemeine Java-Themen 20
B Lizenz und kleines Programm. Allgemeine Java-Themen 3
B kleines modales transparents Fenster ohne rahmen und buttons Allgemeine Java-Themen 15
P Hab ein kleines Problem mit fehlenden Pointern. Allgemeine Java-Themen 4
S Kleines Eclipse Problem, große Wirkung Allgemeine Java-Themen 7
P Habe ein kleines Problem Allgemeine Java-Themen 2
G mit Pattern strings filtern ein kleines problemchen ;) Allgemeine Java-Themen 2
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
S kleines Konstruktorproblem Allgemeine Java-Themen 3
S kleines Spielchen proggen Allgemeine Java-Themen 10
P Bitte kritisieren: rekursive Sortier-Methode Allgemeine Java-Themen 2
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
Jose05 mit 2 - 3 Personen an einem Projekt coden Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
S Microservice Projekt verwalten Allgemeine Java-Themen 22
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
O community projekt Allgemeine Java-Themen 9
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
pkm Warnungen in einem Drools-Projekt unterdrücken? Allgemeine Java-Themen 1
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
O Suche Unterstützung für ein OpenSource-Projekt (grafischer Editor) Allgemeine Java-Themen 13
DonMalte Ambitioniertes Projekt für Einsteiger & Motivierte Allgemeine Java-Themen 0
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
xYurisha Eclipse, Projekt beschädigt! Allgemeine Java-Themen 6
P BlueJ BlueJ Gloop City Projekt Allgemeine Java-Themen 0
R Praktikums Projekt Java vs MySQL Allgemeine Java-Themen 91
H Projekt Quadraturverfahren Rechner Allgemeine Java-Themen 2
S WebApplikation Projekt in Firma Allgemeine Java-Themen 2
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
J Java Projekt, Online-Datenabfrage, Visualisierung Allgemeine Java-Themen 3
markuskat Erste Schritte JavaEE WebApplication - Erstes Projekt Allgemeine Java-Themen 16
O Compiler-Fehler Wie kompiliere ich dieses Alt-Projekt ? Allgemeine Java-Themen 9
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
N Eclipse Projekt von GitHub in bestehendes Projekt einbinden Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
M Maven Dependency aus Projekt nicht aus Repo Allgemeine Java-Themen 3
S Erstes größeres Java Projekt: Etiketten Allgemeine Java-Themen 3
M Eclipse libgcrypt für window in java Projekt einbinden Allgemeine Java-Themen 1
M Eclipse Eine xhtml aus einem JSF Projekt starten Allgemeine Java-Themen 2
A Android App Projekt Allgemeine Java-Themen 0
I Zu zweit an einem Projekt? Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
U BlueJ NXT Projekt programmieren Allgemeine Java-Themen 0
C Projekt Realisierung Allgemeine Java-Themen 7
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
A mini Projekt Allgemeine Java-Themen 4
U Eclipse Java Projekt - Webservice einbinden Allgemeine Java-Themen 7
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
R Aus Eclipse Projekt ein UML erzeugen Allgemeine Java-Themen 3
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
M JSF-Projekt, Datasourceproblem Allgemeine Java-Themen 7
B Großes Projekt "gut" schreiben Allgemeine Java-Themen 22
maestr0 Programmatische Java Projekt Erstellung Allgemeine Java-Themen 2
J Projekt mit mehreren Einzelprogrammen Allgemeine Java-Themen 2
P Ant oder Dynamic Web Projekt Allgemeine Java-Themen 3
Kenan89 Riesen Java Projekt Allgemeine Java-Themen 10
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
S Compiler-Fehler Providing JavaCompiler within Projekt Allgemeine Java-Themen 10
P Eclipse Gemeinsam mit NetBeans an einem Projekt arbeiten? Allgemeine Java-Themen 3
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
S .Classpath Datei im Eclipse Projekt Allgemeine Java-Themen 7
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
J Herangehensweise an ein Projekt? Allgemeine Java-Themen 11
N Hilfe bei Projekt Allgemeine Java-Themen 5
M Suche Java-Projekt zum Thema Elektrotechnik Allgemeine Java-Themen 6
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
M Erstes eigenes Projekt Allgemeine Java-Themen 5
Y Notenbuch - Projekt Allgemeine Java-Themen 56
N php projekt in java importieren Allgemeine Java-Themen 4
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14

Ähnliche Java Themen

Neue Themen


Oben