JAVA SDk6 (eclipse)

Jens.k

Cadet 2nd Year
Registriert
März 2009
Beiträge
17
Hallo ,
Ich habe da ein Problem undzwar programiere ich im moment ein Kontoausgabe, das soll einfach bissl übung sein.
Mein Problem ist : Ich Habe ein Frame , in diesem ist eine Liste welche meine Konten beherbergt (3stk) Jetzt möchte ich ein Textfeld daneben machen in welchem details stehen.

Quasi klick auf (LISTE) Kontonr : 123 --->(Textfeld) Name : Jens Ktostand : 1000

gut das ist jetzt nicht das schwierige das grund gerüst mit Liste und Textfeld steht nur wie zum Teufel bekomme ich die Information von der Liste welche Ktonr ich da gerade ausgewählt habe.

meine idee war es mim Actionlistener zu machen , aber leider hat der Actionlistener von einer Liste nur eine Void methode also keine Rückgabe wert :((

Bitte währe freundlich wennn mir einer Helfen kann, ich verzweifel so ein Wenig

Hier mein bisheriger Programm code , der ist in 4 Klassen einfach weil es sich so angeboten hat durch den Schulunterricht.


Code:
public class Konto {

	String inhaber;
	int ktoNr;
	int kontostand;
	int kreditrahmen;

	public Konto(String inhaber, int ktoNr, int kontostand, int kreditrahmen) {
		this.inhaber = inhaber;
		this.ktoNr = ktoNr;
		this.kontostand = kontostand;
		this.kreditrahmen = kreditrahmen;

	}

	public void einzahlen(int betrag) {
		kontostand = kontostand + betrag;

	}
	public void auszahlen(int betrag) {
		if(kontostand - betrag< kreditrahmen){
			System.out.println("Fehler");
		}
		else{
		kontostand = kontostand - betrag;
		}
	}



	
	public String toString() {

		return ""+ktoNr+" "+inhaber+" "+ kontostand;
	}

}

Code:
public class Bank {
	Konto k1;
	Konto k2;
	Konto k3;
	int blz;
	String Bankname;
	
	

	public String getBankname() {
		return Bankname;
	}



	public void setBankname(String bankname) {
		Bankname = bankname;
	}



	public Konto getK1() {
		return k1;
	}



	public void setK1(Konto k1) {
		this.k1 = k1;
	}



	public Konto getK2() {
		return k2;
	}



	public void setK2(Konto k2) {
		this.k2 = k2;
	}



	public Konto getK3() {
		return k3;
	}



	public void setK3(Konto k3) {
		this.k3 = k3;
	}



	public int getBlz() {
		return blz;
	}



	public void setBlz(int blz) {
		this.blz = blz;
	}



	public void ueberweise(Konto quelle, Konto ziel, int betrag){
		quelle.auszahlen(betrag);
		ziel.einzahlen(betrag);
	}
	
	
}

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.TextComponent;


public class Bankeditor extends Frame implements ItemListener {

	
	List konten = new List();
	TextField text = new TextField();


	public Bankeditor(Bank Bank) {
		
		setLayout(null);
		setSize(400, 400);
		text.setSize(100,100);
		text.setLocation(300,50);
		text.setVisible(true);
		add(text);
		konten.setSize(200, 200);
		konten.setLocation(50, 50);
		konten.addItemListener(this);
		add(konten);
		setTitle(Bank.getBankname());
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
			}
		});

		konten.add(""+Bank.k1.ktoNr);
		konten.add(""+Bank.k2.ktoNr);
		konten.add(""+Bank.k3.ktoNr);
		
		text.setText(""+Bank.k1.inhaber);


}


	@Override
	public void itemStateChanged(ItemEvent arg0) {

	} 
	
	

}
Code:
public class TestBank {
	
	
	public static void main (String[]args){
		Bank b1 = new Bank();
		b1.setBankname("Vr-Bank-Rhein-Sieg");
		
		Konto Array[] = new Konto[8];
		Array[0]= b1.k1= new Konto("Jens", 1234, 1000, 0);
		Array[1]= b1.k2= new Konto("Thomas", 2345, 3000, 0);
		Array[2]= b1.k3= new Konto("Dan", 3456, 1000, 0);
				

		Bankeditor b = new Bankeditor(b1);
		b.setSize(500, 500);
		b.setVisible(true);

		
		
	
		
	
			
		
	}
	
	
	
}
 
Hallo

Das "ListSelectionListener" Interface implementieren und die Methode
Code:
public void valueChanged(ListSelectionEvent arg0)
überschreiben. Diese Methode wird aufgerufen wenn in der Liste ein Eintrag selektiert wurde.
Also:
Code:
int selectedRow = gettblTabllenname().getSelectedRow();

Und die Kontonummer aus Spalte 0 lesen mit:
Code:
tblTabellenname.getValueAt(selectedRow, 0)

Bin mir nicht ganz sicher ob das alles passt. Habs nicht getestet...
 
Hallo raumgleita,
also ich bin gerade etwas stuzig und zwar sagt mir Eclipse das der ausdruch
"getValueAt(selectedRow, 0);"---> "undefined for the typ list."

weiter entweder reicht mein verständnis oder mein wissen nicht dafür , mit dem

int selectedRow = gettblTabllenname().getSelectedRow();
lese ich die Spalte aus , aber was macht in dem zusammenhang das
gettblTabllenname()muss ich das durch den namen meiner liste also "konten" ersetzten oder wie ist das gemeint.


Meine grundidee war es ja die Indizes der liste mit der eines Arrays zu vergleichen und somit die Konten abzugleichen, aber das geht doch mit :
public void valueChanged(ListSelectionEvent arg0)nicht, das es doch wieder eine VOID methode ist, also keine rückgabe hat welche ich in die classe "Testbank" übergeben kann um eben die Indizes zu vergleichen.


lg jens
 
Darf ich fragen?
Schulaufgabe?
Wir mussten sowas letztens auch machen.
 
Ja, es ist eine Freiwillige Schulaufgabe und da ich eigentlich gerne an soetwas Arbeite wollte ich es machen aber ich bin mit allem am Ende, finde nix mehr dazu in Foren etc. meine Bücher geben nix her ... selbst Java ist auch eine Insel hat auf seinen 1400 seiten nix zu dem Thema was ich als nützlich nennen würde.
 
Das steht auch nicht in Büchern. Sinn des Ganzen ist Techniken zu kombinieren und die auszunutzen.
Wird bestimmt nicht einen Befehl geben wo du hingestehst alla "Wunschprogramm MeinselbstgeschriebenesProgramm = new Wunschprogramm()" oder so.
 
nt selectedRow = gettblTabllenname().getSelectedRow();
lese ich die Spalte aus , aber was macht in dem zusammenhang das
gettblTabllenname()muss ich das durch den namen meiner liste also "konten" ersetzten oder wie ist das gemeint.

Ich habe für jeden GUI Komponenten eine Methode mit return Wert das Objekt damit ich von überall her an das Objekt komme.

Ich schau mir jetzt mal dein Code an...

Was ich vorher geschrieben habe kannst du vergessen Das ist für eine JTable...

Also. Das eigentliche Problem ist das Design. Du deklarierst statisch jedes Konto! Damit du dies nicht tun musst und flexible ein unbekannte Anzahl Kontos verwalten kannst, muss du eine Konto Liste und am besten noch eine Bank Liste als Klasse erstellen.
Eine Bank hat 0,1 oder mehrere Konto Liste(n). Willst du ein Konto einer Bank zuordnen, verbindest du das Konto nicht direkt mit der Bank sondern fügst es in die Konto Liste der gewünschten Bank ein.

Z.B. so (Vektoren sind nicht speziel geeignet da du die Objekte im Vektor dursuchen musst. Aber wenns nur eine Übung mit ein paar Konto ist, ist es so relativ einfach):
Code:
import java.util.Vector;

public class KontoList {
	private Vector<Konto> kontoList;
	
	public KontoList(){
		this.kontoList = new Vector<Konto>();
	}
	
	public boolean add(Konto konto){
		return kontoList.add(konto);
	}
	
	public int getNumberofKonto(){
		return kontoList.size();
	}
	
	public Vector<Konto> getKontoList(){
		return kontoList;
	}
}

Und so bekommst du die Kontonummer aus der Liste:
Code:
public void itemStateChanged(ItemEvent e) {
		System.out.println(konten.getItem((Integer) e.getItem()));
	}

So Kannst du die Kontolisten durchlaufen und mit der Kontonummer abgleichen. Hast du das Element gefunden lässt du dir das Konto Objekt zurückgeben und damit kannst du dir alles Kontoinformationen mit den get Methoden auslesen.
 
Zuletzt bearbeitet:
Danke dir Raum.

...Cyba das ist selbst verständlich, aber es gibt vorgefertigte Methoden etc. diese stehen in Büchern und spezielen bibotheken drin ... es geht drum diese zu kombinieren =)
 
Zurück
Oben