Eingaben verwerten

BobHirte

Mitglied
Hi ihr. Ich muss für die uni ein Programm schreiben, das mehrere Messreihen (x,y werte) verwertet. Hab vorher bei meinem programm über eine tastatur klasse die anzahl der Messwerte und dann über eine for schleife nacheinander die x und y werte wieder über tastatur abgefragt. Nun muss ich aber das prog abändern und die Werte über eine Benutzeroberfläche eingeben und da liegt mein Problem. Ich tipp also die Anzahl der Messreihen in ein Feld ein über
Java:
 	int n = Integer.parseInt(anzahl.getText());
und möchte dann soviele weitere Textfelder (zum eingeben der x und y werte) erzeugen wie vorher eingegeben.. Vorher mit arrays sah das so aus
Java:
for (int i = 0; i < n; i++) {
			x[i] = Tastatur.liesDouble("X-Wert der Reihe "+ i);
			y[i] = Tastatur.liesDouble("Y-Wert der Reihe " + i);
		}
, nur jetzt wenn ich Textfelder erzeugen und auswerten möchte krieg ich das nicht mehr hin. Kann mir jemand nen Denkansatz oder tipps geben? danke
 

@x.l

Bekanntes Mitglied
Nimm doch drei TextFelder pro Messreihe. Und diese verwaltest du dann in einer Liste.

Java:
List<JTextField[]> messreihenListe = new ArrayList<JTextField[]>();

for(int i = 0; i < n; i++) {
    JTextField x = new JTextField();
    JTextField y = new JTextField();
    JTextField z = new JTextField();
    
    JTextField[] tmp = new JTextField[3];
    tmp[0] = x;
    tmp[1] = y;
    tmp[2] = z;
    messreihenListe.add(tmp);
}

Oder du machst deine Eingaben in einer JTextArea. Pro Zeile eine Messreihe, Messwerte mit Semikolon getrennt. Dann kannst das Zeilenweise auswerten und fertig ist die Laube.
 
Zuletzt bearbeitet:

jgh

Top Contributor
Du schreibst...und die Werte über eine Benutzeroberfläche eingeben
Hast du dir in Swing eine GUI gebaut, oder nutzt du die Eingabe über die Console?

Ist dein Problem ein Anzeigeproblem, oder wo genau liegt die Schwierigkeit?
Poste doch sonst mal den gesamten Quellcode..am besten als KSKB

Dann wird man(zumindest ich^^) dir sicher besser helfen können :)
 

BobHirte

Mitglied
ansich steht da noch nicht viel, die rechnerei is in andren teile, es geht mir nur um diesen schritt.
Java:
 import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

import javax.swing.*;


public class Event extends JFrame implements ActionListener {
	int n;

	private JTextArea anzahl = new JTextArea(1, 5);
	private JButton berechnen = new JButton("berechnen");

	public Event() {
		setTitle("");
		setLayout(new FlowLayout());
		add(anzahl);
		add(berechnen);

		setSize(130, 400);
		setVisible(true);

		berechnen.addActionListener(this);
	}

	public void actionPerformed(ActionEvent ae) {
		int n = Integer.parseInt(anzahl.getText());

	}
	
	public int getN() {
		return n;
	}
}
ansich möcht ich folgendes: ich hab z.B n= 10, nun will ich also 10 JTextAreas erzeugen, und die Ergebnisse davon einlesen. Theoretisch würde ich das so schreiben
Java:
for(int i = 0; i < n; i++) {
		    JTextField x[i] = new JTextField();
                    add(x[i]);
}

Ich hab also jeweils ein JTextField mit Namen x[0], x[1], x[2] usw. und könnte die Ergebnisse mit getText abrufen.


Ich glaub die lösung von @xl geht schon in die richtung, allerdings weiß ich nicht so recht wie ich weitermache, wie lass ich mir zb die Felder denn nun anzeigen? Hab mit soner Arraylist noch net viel gearbeitet :(
 

Heidi

Mitglied
Ein Textfeld sollte doch im Prinzip doch ausreichen...

Die Messwerte werden alle nacheinander eingegeben, oder??

Das heißt der Nutzer gibt einen Wert ein und bestätigt dieses dann über einen Button. Werte auslesen, Textfeld lerren, werte einer arraylist zufügen. Jetzt kann der nutzer wieder einen neuen wert eingeben...


hört sich stark nach einem infoprojekt der rub an?
 

jgh

Top Contributor
Dachte, dass kann ich mal schnell in 5 mins machen^^, dem war leider nicht so :(

Es sollte zumindest funktionieren. Und ich habe sogar versucht paar Kommentare einfließen zu lassen, sei Dir der Ehre bewusst :D

Java:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Event extends JFrame implements ActionListener {

	public static void main(String[] args) {
		new Event();
	}

	private static final long serialVersionUID = -1850748664040288132L;

	// immer sprechende Namen wählen (evtl den Typ der Variabel nutzen)
	int anzahlMessreihen;

	// Für die reine Anzahl der Messreihen ist ein JTextField absolut
	// ausreichend!!
	private JTextField jTfAnzahl = new JTextField(5);
	private JButton jBok = new JButton("ok");

	// Kurze Erklärung, was dort eingegeben soll schadet sicherlich nicht!
	private JLabel jLAnzahlMessreihen = new JLabel(
			"Bitte Anzahl der Messreihen eingeben:");
	// die Komponenten für die Eingabe der x und y Koordinaten
	private JTextField[] jTF_X;
	private JTextField[] jTF_Y;
	private JButton jBBerechnen;

	// für eine etwas einfachere/übersichtliche Darstellung wird
	// das 'panelEingabeXY_Koordinaten'-Panel wird erst nach eingabe der Anzahl
	// der Messreihen initialisiert!

	private JPanel panelAnzahlMessreihen = new JPanel(new FlowLayout());
	private JPanel panelEingabeXY_Koordinaten;

	public Event() {
		setTitle("Anzahl Messreihen eingeben");

		panelAnzahlMessreihen.add(jLAnzahlMessreihen);
		panelAnzahlMessreihen.add(jTfAnzahl);
		panelAnzahlMessreihen.add(jBok);
		add(panelAnzahlMessreihen, BorderLayout.NORTH);

		setSize(400, 600);
		setLocationRelativeTo(null);
		// NICHT VERGESSEN!!!!
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);

		jBok.addActionListener(this);
	}

	public void actionPerformed(ActionEvent ae) {

		if (ae.getSource() == jBok) {
			// Gleich mögliche Fehler abfangen und ausgeben
			try {
				anzahlMessreihen = Integer.parseInt(jTfAnzahl.getText());
				initPanelEingabeXY_Koordinaten();
			} catch (NumberFormatException nf) {
				JOptionPane.showMessageDialog(this, "fehlerhafte Eingabe");
				jTfAnzahl.setText("");
			}
		} else if (ae.getSource() == jBBerechnen) {
			for (int i = 0; i < anzahlMessreihen; i++) {
				// dann hier deine Berechnung, oder ein Aufruf auf deine
				// BerechnungsMethode
				System.out.println((i + 1) + ".X-Wert ist: "
						+ jTF_X[i].getText() + "   " + (i + 1)
						+ ".Y-Wert ist: " + jTF_Y[i].getText());

			}
		}
	}

	private void initPanelEingabeXY_Koordinaten() {
		// removen der Eingabemöglichkeit für die Anzahl der Messreihen
		setTitle("X- und Y-Koordinaten eingeben");
		remove(panelAnzahlMessreihen);

		panelEingabeXY_Koordinaten = new JPanel(new GridLayout(
				anzahlMessreihen, 4));
		// zwei entsprechend der Eingabe große JTexfieldArray(s) erzeugen
		jTF_X = new JTextField[anzahlMessreihen];
		jTF_Y = new JTextField[anzahlMessreihen];

		for (int i = 0; i < anzahlMessreihen; i++) {
			// für x-Koordinate Label und Textfield erzeugen und dem Panel adden
			JLabel label = new JLabel((i + 1) + ". X-Koordinate");
			jTF_X[i] = new JTextField(2);
			panelEingabeXY_Koordinaten.add(label);
			panelEingabeXY_Koordinaten.add(jTF_X[i]);

			// für Y-Koordinate Label und Textfield erzeugen und dem Panel adden
			label = new JLabel((i + 1) + ". Y-Koordinate");
			jTF_Y[i] = new JTextField(2);
			panelEingabeXY_Koordinaten.add(label);
			panelEingabeXY_Koordinaten.add(jTF_Y[i]);
		}

		// den neuen Button initialisieren und einen ActionListener hinzufügen
		jBBerechnen = new JButton("Berechnen");
		jBBerechnen.addActionListener(this);

		// das ganze noch schnell in eine JScrollPane gepackt
		JScrollPane jsp = new JScrollPane(panelEingabeXY_Koordinaten);

		// ein bissel hübscheres "Outfit" für den Frame
		setLayout(new BorderLayout());

		// alles andere als schön...aber keine Lust mehr gehabt^^
		if (anzahlMessreihen < 25) {
			add(jsp, BorderLayout.NORTH);
		} else if (anzahlMessreihen >= 25) {
			add(jsp, BorderLayout.CENTER);
		}

		// auch kein schöner Code...aber wenn es hübsch macht :)
		JPanel hilfsPanel = new JPanel();
		hilfsPanel.add(jBBerechnen);
		add(hilfsPanel, BorderLayout.SOUTH);

		// validieren und repainten, sollte man allerdings sparsam mit umgehen
		validate();
		repaint();
	}

}
 

BobHirte

Mitglied
krass dass du dir sone mühe gemacht hast! tausend dank :)
kannst du mir vielleicht noch sagen was genau validate und repaint bewirken?
 
Zuletzt bearbeitet:

jgh

Top Contributor
Programmieren aus Leidenschaft :)
welcome anytime

Edit:
wie in der PN schon gesagt: (und berichtigt mich, wenn es falsch ist)

validate() lässt alle Child-Komponenten (bspw. JPanels) und sich selbst neu berechnen (Größe, pref. Größe etc)
repaint() erzwingt das neuzeichnen des Containers
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
ralli85 Programm nach einer gewissen Anzahl von Eingaben beenden Java Basics - Anfänger-Themen 15
A Ungültige Eingaben: Fehler ausgeben Java Basics - Anfänger-Themen 16
A Fehler bei der Speicherung von JOptionPane-Eingaben Java Basics - Anfänger-Themen 4
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
F Erste Schritte Mehrere nextInt() Eingaben nebeneinander ausgeben Java Basics - Anfänger-Themen 12
K Eingaben in Array ausgeben Java Basics - Anfänger-Themen 3
R Scanner-Eingaben addieren Java Basics - Anfänger-Themen 5
H Best Practice Alternative Möglichkeit, um Eingaben vorzunehmen Java Basics - Anfänger-Themen 13
R struktogramm eingaben Java Basics - Anfänger-Themen 4
D Summe von Eingaben in einer for Schleife Java Basics - Anfänger-Themen 4
M Timer für Termial-Eingaben Java Basics - Anfänger-Themen 3
H Input/Output Console löschen und Eingaben in Echtzeit Java Basics - Anfänger-Themen 3
M Erste Schritte Eingaben in ein Array packen Java Basics - Anfänger-Themen 5
M Maskierte Eingaben in der Konsole? Java Basics - Anfänger-Themen 3
T Input/Output Scanner Eingaben auf Console farbig darstellen, wie? Java Basics - Anfänger-Themen 13
H JTable: Eingaben mit ENTER übernehmen Java Basics - Anfänger-Themen 2
Haave EAN-13-Prüfziffer: Vermeiden von Eingaben mit mehr/weniger als 12 Ziffern Java Basics - Anfänger-Themen 3
S Eingaben über die Konsole Java Basics - Anfänger-Themen 2
Obit Eingaben aus GUI auslesen Java Basics - Anfänger-Themen 10
J Regelmäßige Eingaben: Unresolved compilation problem? Java Basics - Anfänger-Themen 7
M Scanner String Eingaben ignorieren Java Basics - Anfänger-Themen 4
Antoras Durchschnitt ist nicht korrekt; Eingaben löschen Java Basics - Anfänger-Themen 7
A JTable nimmt eingaben von tastatur nicht an? Java Basics - Anfänger-Themen 2
D Klasse zum Auslesen von Eingaben Java Basics - Anfänger-Themen 2
L Gelöst: Negative Eingaben sollen verweigert werden Java Basics - Anfänger-Themen 3
M Dynamische Wertsetzung von Variablen durch Eingaben Java Basics - Anfänger-Themen 9
R Eingaben Java Basics - Anfänger-Themen 5
M Verdeckung von Eingaben Java Basics - Anfänger-Themen 3
A Was erzeugen diese Eingaben? Java Basics - Anfänger-Themen 2
G Webapplikation mit JSP und Beans - Eingaben sichern, wie? Java Basics - Anfänger-Themen 11
M Überprüfen ob die eingaben in einem JTextField eine Zahl ist Java Basics - Anfänger-Themen 5
D Nochmal zu den dummen Eingaben über Tastatur Java Basics - Anfänger-Themen 15
P Boolean Eingaben Java Basics - Anfänger-Themen 6
G Probleme mit Eingaben Java Basics - Anfänger-Themen 10
T Kann man in einer Anwendung Eingaben simulieren? Java Basics - Anfänger-Themen 8
B Probleme mit Eingaben [System.in.read())] Java Basics - Anfänger-Themen 10
A Innerhalb eines ActionEvents Eingaben tätigen Java Basics - Anfänger-Themen 23
O Überprüfung von Eingaben auf Sinnhaftigkeit Java Basics - Anfänger-Themen 7
B Tastatur eingaben abfragen und dann in Argumente zerlegen..? Java Basics - Anfänger-Themen 8
Strahlungsleck [Erledigt]Ergebnisse des Ausgelesenen Verzweichnis verwerten/benutzen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben