# Textfeld nachträglich einfügen



## aNd12121 (2. Mai 2012)

Hallo,

ich versuche nachfolgend mal mein Problem so genau und gut wie möglich darzustellen.

Ich studiere im dritten Semester Elektrotechnik und dieses Semester haben wir Java bekommen. Als ersten Praktikum sollten wir eine Klasse schreiben füür Komplexe Zahlen. Jetzt haben wir eine Vorlesung die GUI behandelt und sollen die Klasse aus dem ersten Praktikum wieder verwenden.

Hierfür sollen wir folgendes tun:

##Die GUI enthält eine Liste zur Verwaltung komplexer Zahlen.
##Der Benutzer kann Zahlen zur Liste hinzufügen und aus der Liste löschen.
##Die Summe und das Produkt aller in der Liste ausgewählten Zahlen werden angezeigt.

Bei dem letzten Punkt habe ich meine Schwierigkeiten. Man soll dies wie folgt realisieren:

## Die Summe und das Produkt der selektierten komplexen Zahlen werden berechnet und in einem Bereich der GUI angezeigt.
## Sind keine Zahlen selektiert, so wird kein Ergebnis angezeigt.
## Die Berechnungen auf selektierten Zahlen werden automatisch durchge-führt. Das heißt sobald sich die Auswahl ändert, werden Summe und Pro-dukt neu berechnet und angezeigt.



Ich habe es schon hinbekommen, dass mir eine selektierte Zahl auf der Konsole angezeigt wird. Aber wie ich es schaffe mir die in der GUI anzeigen zu lassen weiß ich nicht. Es wäre nett wenn mir jemand helfen könnte.

Nachfolgend mein Java-Code:


```
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;


import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import aufgabe1_1.Complex;


public class GUI implements ActionListener, ListSelectionListener{
	private JList list;
	private DefaultListModel listModel;
	private JTextArea imag;
	private JTextArea real;
	private JTextField j;
	private JTextField number =  new JTextField();
	static Complex z1 = new Complex();
	final Container contentPane;
	
	
	public GUI(){
		JFrame frame = new JFrame("List of Complex Numbers");		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
		frame.setSize(400, 200);									
		frame.setLocation(100,50);																		
		
		contentPane = frame.getContentPane();				
		contentPane.setLayout(new GridLayout(3,3));			
		
		listModel = new DefaultListModel();					

		list = new JList( listModel );
		JScrollPane scrollPane = new JScrollPane( list );			
		contentPane.add(scrollPane);
		
		real = new JTextArea(1,1);
		j = new JTextField("j");
		imag = new JTextArea(1,1);
		
		[...]
			
		JButton random = new JButton("Add random");			
		random.setActionCommand("add random");			
		random.addActionListener(this);					
		contentPane.add(random);

		[...]
				
		list.addListSelectionListener(this);             // hier starte ich den SelectionListener
		
		contentPane.add(new JLabel("Sum: ", JLabel.CENTER));		
		contentPane.invalidate();


		frame.pack();
		frame.setVisible(true);	
	}
	public void actionPerformed(ActionEvent e) {
		if("add random".equals(e.getActionCommand())){						
	Random r = new Random();								
			double real = 10 * r.nextDouble();					
			double imag = 10 * r.nextDouble();					
			
			Complex z1 = new Complex(real,imag);				
			if(!listModel.contains(z1)){
			listModel.addElement(z1);									}						
		}
		
[...]
		
	public void valueChanged(ListSelectionEvent event) {         // es wir nur die Zahl auf  Konsole //ausgegeben, wie ich dies in die GUI einbaue weiß ich aber nicht!
		 if ( event.getValueIsAdjusting() )
		      return;
		
		if(list.getSelectedIndex() != -1){
			Complex ComplexNumber = new Complex();
			Object obj = list.getSelectedValue();
			ComplexNumber = (Complex)obj;
			System.out.println(ComplexNumber.toString());

		
		}
	}


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

}
```


----------



## L-ectron-X (2. Mai 2012)

Schade, dein Code ist nicht kompilierbar. Auch sagst du nicht genau, wo/worin die Anzeige des Ergebnisses geschehen soll. :bahnhof:
Wie wär's mit einer Skizze?


----------



## aNd12121 (3. Mai 2012)

Ja durch die vorherige Klasse ist es ein bisschen schwer. Wie es ausschauen soll ist eigentlich erstmal egal. Wichtig wäre mir erstmal egal, wichtig ist mir dass ich das irgendwie auf Die Benutzerfläche bekommee und den Text variable halten kann.


----------



## L-ectron-X (3. Mai 2012)

Hmm, unter den Voraussetzungen kann man dir nicht gezielt helfen...

Für statischen Text ein [JAPI]JLabel[/JAPI] verwenden.
Für Text, der durch direkte Benutzereingabe geändert werden kann, eine Subklasse von [JAPI]JTextComponent[/JAPI] verwenden.

Zum Einbau in deine GUI, musst du sie kennen bzw. wissen, wo der Text angezeigt werden soll.
Daraufhin lässt sich ein geeigneter LayoutManager wählen und/oder die GUI entsprechend anpassen.

Sämtliche Methoden findest du in der API.

Mehr kann man zu deinen Beiträgen nicht sagen. :bahnhof:


----------



## bERt0r (3. Mai 2012)

Du kannst einem JLabel mit setText("123") einen neuen Wert zuweisen, das wird dann in der GUI angezeigt.


----------

