Servus
Ich bin jetzt schon seit mehreren Tagen an diesem Problem und komme einfach nicht mehr weiter. Es geht darum, dass ich ein Programm geschrieben habe, in welchem eingegebene Messwerte in einer ArrayList gespeichert werden und dann z.B die größte/kleinste Zahl etc. ausgegeben werden kann. Jetzt möchte ich das ganze aber mit einem GUI programmieren, damit man das Programm auch benutzen kann. Im Output Fenster sollen Anweisungen stehen, was als nächstes gemacht werden soll. Im Input Fenster soll man dann die Werte als Double eingeben. Wenn man dann links auf Finish drückt, soll dann die Gesamte ArrayList in dem rechten TextFeld abgebildet werden und dann je nach Methode (Die anderen Knöpfe Rechts) sortiert werden. Klingt einfach, ich bin aber am Verzweifeln.
Ich arbeite mit JavaSE-12 und dem Windowbuilder von Eclipse. In meiner ersten Klasse hab ich den ganzen Code was die Berechnungen betrifft, in der zweiten Klasse liegt der Code für das GUI. So sieht das Fenster bis jetzt aus.
Hier mal der gesamte Quellcode der ersten Klasse.
Und hier ist das GUI:
Ich bin jetzt schon seit mehreren Tagen an diesem Problem und komme einfach nicht mehr weiter. Es geht darum, dass ich ein Programm geschrieben habe, in welchem eingegebene Messwerte in einer ArrayList gespeichert werden und dann z.B die größte/kleinste Zahl etc. ausgegeben werden kann. Jetzt möchte ich das ganze aber mit einem GUI programmieren, damit man das Programm auch benutzen kann. Im Output Fenster sollen Anweisungen stehen, was als nächstes gemacht werden soll. Im Input Fenster soll man dann die Werte als Double eingeben. Wenn man dann links auf Finish drückt, soll dann die Gesamte ArrayList in dem rechten TextFeld abgebildet werden und dann je nach Methode (Die anderen Knöpfe Rechts) sortiert werden. Klingt einfach, ich bin aber am Verzweifeln.
Ich arbeite mit JavaSE-12 und dem Windowbuilder von Eclipse. In meiner ersten Klasse hab ich den ganzen Code was die Berechnungen betrifft, in der zweiten Klasse liegt der Code für das GUI. So sieht das Fenster bis jetzt aus.
Hier mal der gesamte Quellcode der ersten Klasse.
Java:
import java.util.*;
import java.io.*;
public class MessWerte {
//Datenfeld wird initialisiert
private static ArrayList<Double> messwerte = new ArrayList<Double>();
private static Scanner scanner = new Scanner(System.in);
private static boolean weiter = true;
private static boolean cont = true;
//Main Methode
public static void main(String[] args) throws Exception{
GUI gui = new GUI();
gui.setVisible(true);
//Try-Catch Block um Programmabstürze zu vermeiden
try {
while(weiter == true) {
if(weiter == true) {
//Abfrage ob man einen messwert hat
System.out.println("Haben Sie einen Messwert? (y/N)");
String nextString = scanner.next();
if(nextString.equals("y")) {
//Eingabe des Messwertes
System.out.println("Geben Sie einen Wert sein.");
messwerte.add(scanner.nextDouble());
weiter = true;
} else if(nextString.equals("N")) {
//Abfrage ob ArrayList leer ist, falls ja wieder zurück zum Anfang, falls nein, wird eine Txt Datei mit den Werten erstellt.
if(messwerte.isEmpty()) {
System.out.println("Es gibt keine Messwerte!");
weiter = true;
} else {
weiter = false;
File datei = new File(System.getProperty("user.home") + "//Desktop//Messwerte.txt");
datei.createNewFile();
PrintWriter pw = new PrintWriter(new FileWriter(datei));
pw.println(messwerte);
pw.flush();
pw.close();
}
}
}
}
} catch (Exception f) {
f.printStackTrace();
}
try {
do {
//Abfrage wie man Fortfahren möchte. je nach eingabe werden die Entsprechenden methoden aufgerufen.
//Nach Aufruf der Methode kann ein anderer Vorgang aufgerufen werden.
System.out.println("Liste wurde erstellt. Wie wollen Sie fortfahren? (min/max/mid/med/all/exit)");
String nextString = scanner.next();
if(nextString.equals("min")) {
minMesswertErmitteln();
} else if(nextString.equals("max")) {
maxMesswertErmitteln();
} else if(nextString.equals("mid")) {
mittelwertErmitteln();
} else if(nextString.equals("med")) {
medianErmitteln();
} else if(nextString.equals("exit")) {
exit();
} else if(nextString.equals("all")) {
alleWerteAusgeben();
} else {
System.out.println("Bitte \"min\" (kleinster Wert), \"max\" (groesster Wert), \"mid\" (Mittelwert), \"med\" (median), \"all\" (alle Werte) oder \"exit\" (beenden) eingeben.");
}
}while(true);
} catch (Exception g) {
g.printStackTrace();
}
}
//Methode um alle Werte auszugeben.
public static void alleWerteAusgeben() {
for(int i = 0; i < messwerte.size(); i++) {
System.out.println(messwerte.get(i));
}
}
//Methode um den maximalen/höchsten Messwert zu ermitteln.
public static void maxMesswertErmitteln() {
try {
System.out.println("Der groesste aller Werte ist: " + Collections.max(messwerte));
} catch (Exception e) {
e.printStackTrace();
}
}
//Methode um den minimalen/kleinsten Messwert zu ermitteln.
public static void minMesswertErmitteln() {
try {
System.out.println("Der kleinste aller Werte ist: " + Collections.min(messwerte));
} catch (Exception e) {
e.printStackTrace();
}
}
//Freiwillige Aufgabe: Methode um den Mittelwert zu ermitteln (Alle Werte Addieren und dann durch die Anzahl der Werte teilen)
public static void mittelwertErmitteln() {
try {
double zaehler = 0;
double summe = 0 ;
for(int i = 0; i < messwerte.size(); i++) {
zaehler += messwerte.get(i);
summe = zaehler;
}
System.out.println("Der Mittelwert aller Werte betr�gt: " + summe / messwerte.size());
} catch (Exception e) {
e.printStackTrace();
}
}
//Sonderaufgabe: Methode um den Medianwert der Messwerte zu ermitteln. Hierbei werden alle Werte von klein nach gross sortiert und dann der Mittlere Wert genommen.
//Falls die Anzahl der Werte ungerade ist, werden die beiden Mittleren Zahlen addiert und durch 2 geteilt.
public static void medianErmitteln() {
try {
double median;
if(messwerte.size() % 2 != 0) {
Collections.sort(messwerte);
System.out.println("Der Medianwert aller Werte betraegt: " + messwerte.get(messwerte.size() / 2));
} else {
Collections.sort(messwerte);
median = (messwerte.get(messwerte.size()/2)) + (messwerte.get(messwerte.size()/2 - 1));
System.out.println("Der Medianwert aller Werte betraegt: " + median / 2);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//Freiwillige Aufgabe: Methode um das Programm zu beenden.
public static void exit() {
System.out.println("Programm wurde beendet, ihre Werte wurden gespeichert. Sie finden sie auf Ihrem Desktop als \"Messwerte.txt\"");
System.exit(0);
}
}
Und hier ist das GUI:
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
public class GUI extends JFrame {
private JPanel contentPane;
private JTextField txtField_output;
private JTextField txtField_arrayList;
private JTextField txtField_input;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI frame = new GUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1042, 553);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
txtField_output = new JTextField();
txtField_output.setEditable(false);
txtField_output.setBounds(5, 5, 382, 355);
contentPane.add(txtField_output);
txtField_output.setColumns(10);
txtField_arrayList = new JTextField();
txtField_arrayList.setEditable(false);
txtField_arrayList.setBounds(397, 5, 382, 355);
contentPane.add(txtField_arrayList);
txtField_arrayList.setColumns(10);
txtField_input = new JTextField();
txtField_input.setBounds(5, 371, 1016, 138);
contentPane.add(txtField_input);
txtField_input.setColumns(10);
JButton btn_mid = new JButton("Mid");
btn_mid.setBounds(789, 71, 227, 49);
contentPane.add(btn_mid);
JButton btn_med = new JButton("Med");
btn_med.setBounds(789, 131, 227, 49);
contentPane.add(btn_med);
JButton btn_min = new JButton("Min");
btn_min.setBounds(789, 191, 227, 49);
contentPane.add(btn_min);
JButton btn_max = new JButton("Max");
btn_max.setBounds(789, 251, 227, 49);
contentPane.add(btn_max);
JButton btn_all = new JButton("All");
btn_all.setBounds(789, 311, 227, 49);
contentPane.add(btn_all);
JButton btnNewButton_5 = new JButton("Finish");
btnNewButton_5.setBounds(789, 5, 227, 55);
contentPane.add(btnNewButton_5);
}
}