G
Garfield83
Gast
Hallo Leute.
Also ich habe folgendes Problem. Ich möchte gerne auf die Klicks in eine JList aus "Bankkonto"-Objekten so reagieren, dass das angeklickte Bankkonto in die intanzvariable "clickedKonto" übergeben wird mit der ich dann weiter agieren kann.
Also das folgende sind die 4 Klassen, mit denen man die GUI aufrufen kann. Wie man jetzt clickedKonto den Wert zu weist muss in der BankkontoGUI zeile 88-98 irgendwie implementiert werden, aber hab jetzt schon viel rumprobiert und komme leider ned auf die Lösung.
Also wäre über Hilfe dankbar.
Hier mal die vier Klassen, mit denen man die GUI aufrufen kann. Die GUI ruft erst dann eine exception auf, sobald man in der JList mit der Maus eines der Konten auswählt.
Nochmal das Problem zusammengefasst. Bei Click auf ein Konto in der Liste, will ich dass dieses Konto dann in die ClickedKonto Variable gespeichert wird.
Also ich habe folgendes Problem. Ich möchte gerne auf die Klicks in eine JList aus "Bankkonto"-Objekten so reagieren, dass das angeklickte Bankkonto in die intanzvariable "clickedKonto" übergeben wird mit der ich dann weiter agieren kann.
Also das folgende sind die 4 Klassen, mit denen man die GUI aufrufen kann. Wie man jetzt clickedKonto den Wert zu weist muss in der BankkontoGUI zeile 88-98 irgendwie implementiert werden, aber hab jetzt schon viel rumprobiert und komme leider ned auf die Lösung.
Also wäre über Hilfe dankbar.
Hier mal die vier Klassen, mit denen man die GUI aufrufen kann. Die GUI ruft erst dann eine exception auf, sobald man in der JList mit der Maus eines der Konten auswählt.
Nochmal das Problem zusammengefasst. Bei Click auf ein Konto in der Liste, will ich dass dieses Konto dann in die ClickedKonto Variable gespeichert wird.
Code:
package bankkonto;
import java.util.Observer;
import java.util.Observable;
public class Bankkonto extends Observable {
private double kontostand;
private String benutzername;
public String toString(){
return this.getName();
}
public void einzahlen(double betrag) {
kontostand = kontostand + betrag;
setChanged();
notifyObservers();
}
public String getName(){
return this.benutzername;
}
public void setName(String x){
this.benutzername = x;
}
public void abheben(double betrag) {
kontostand = kontostand - betrag;
setChanged();
notifyObservers();
}
public double getKontostand() {
return kontostand;
}
public void ueberweisen(double betrag, Bankkonto empfaenger) {
this.abheben(betrag);
empfaenger.einzahlen(betrag);
}
public Bankkonto() {
this(5, "Defaultuser");
}
public Bankkonto(double startguthaben,String benutzername) {
this.kontostand = startguthaben;
this.benutzername = benutzername;
}
}
Code:
package bankkonto;
import java.util.ArrayList;
import java.util.Iterator;
public class Bank {
private ArrayList<Bankkonto> konten;
public Bank() {
konten = new ArrayList<Bankkonto>();
}// k1
public Bank(ArrayList<Bankkonto> konten) {
this.konten=konten;
}// k2
public ArrayList<Bankkonto> getList(){
return this.konten;
}
public void addKonto(Bankkonto konto){
this.konten.add(konto);
}// addKonto
public void deleteKonto(Bankkonto konto){
if(this.konten.isEmpty()){
System.err.println("Die Bank ist leer");
}
else{
if(this.konten.indexOf(konto)<0){
System.err.println("Das Konto ist an dieser Bank nicht eingetragen");
}
else{
this.konten.remove(this.konten.indexOf(konto));
System.out.println("Das Konto wurde gelöscht");
}
}
}// delete Konto
}
Code:
package bankkonto;
import java.util.ArrayList;
public class TestBank {
public static void main(String[] args){
Bankkonto Tilo = new Bankkonto(0.0,"Tilo");
Bankkonto Franz = new Bankkonto(0.0,"Franz");
Bankkonto Horst = new Bankkonto(0.0,"Horst");
ArrayList<Bankkonto> konten = new ArrayList();
konten.add(Tilo);
konten.add(Franz);
konten.add(Horst);
Bank Hypo = new Bank(konten);
BankGUI HypoTest = new BankGUI(Hypo);
}
}
Code:
package bankkonto;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
public class BankGUI extends JFrame {
private Bank bank;
private JButton ok;
private JButton loeschen;
private JButton transaktion;
private JTextField aktuellesKonto;
private JTextField eingabe;
private JTextField meldung;
private Bankkonto clickedKonto;
public BankGUI(Bank bank){
this.bank =bank;
this.setSize(500,300);
this.setTitle("Bank");
this.clickedKonto= new Bankkonto();
Container inhalt = this.getContentPane();
JPanel ersteEbene = new JPanel(new BorderLayout());
inhalt.add(ersteEbene);
JPanel zweiteEbene = new JPanel(new GridLayout(1,2));
ersteEbene.add(zweiteEbene,"Center");
JPanel westen = new JPanel(new BorderLayout());
zweiteEbene.add(westen);
JLabel kontenueberschrift = new JLabel("Konten:");
westen.add(kontenueberschrift,"North");
JPanel norden = new JPanel();
ersteEbene.add(norden,"North");
JLabel ueberschrift = new JLabel("~Kontenverwaltung~");
norden.add(ueberschrift);
JPanel osten = new JPanel();
zweiteEbene.add(osten);
JLabel text1 = new JLabel("Neues Konto anlegen:");
osten.add(text1);
eingabe = new JTextField(15);
osten.add(eingabe);
ok = new JButton("Ok");
osten.add(ok);
JLabel aktuell = new JLabel(" Aktives Konto:");
osten.add(aktuell);
aktuellesKonto = new JTextField(20);
aktuellesKonto.setEditable(false);
osten.add(aktuellesKonto);
loeschen = new JButton("Löschen");
transaktion = new JButton("Transaktion");
osten.add(loeschen);
osten.add(transaktion);
meldung = new JTextField(20);
meldung.setEditable(false);
meldung.setFont(new Font("arial", Font.BOLD, 12));
osten.add(meldung);
JList listel = new JList(bank.getList().toArray());
listel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listel.setLayoutOrientation(JList.VERTICAL);
westen.add(listel,"Center");
// MAUSLISTENER - ich rock so derb
listel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1)
clickedKonto = (Bankkonto) e.getSource();
System.out.println(clickedKonto.getName());
System.out.println("Index "+
((JList) e.getSource()).
locationToIndex(e.getPoint())+
" wurde ausgewählt");
}
});
// Hier kommt jetzt die Listener Klasse
class Zuhoerer implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton knopf1 = (JButton) e.getSource();
String knopf = knopf1.getText();
if(knopf.equals("Ok")){
if(eingabe.getText().length()<2){
Color rot =new Color(250,0,0);
meldung.setForeground(rot);
meldung.setText("Neue Konten benötigen mind. 3 Buchst.");
}// zu wenig Buchstaben
if(eingabe.getText().length()>12){
Color rot =new Color(250,0,0);
meldung.setForeground(rot);
meldung.setText("Der Kontoname ist zu lang.");
}// zu wenig Buchstaben
else{
Color green =new Color(100,250,120);
meldung.setForeground(green);
meldung.setText("Konto "+eingabe.getText()+" wurde angelegt");
String name = eingabe.getText();
eingabe.setText("");
Bankkonto neuesKonto = new Bankkonto(0.0,name);
BankGUI.this.bank.addKonto(neuesKonto);
}// jo hier klappts jetzt
}// if-OK BUTTON
if(knopf.equals("Löschen")){
//BankGUI.this.bank.deleteKonto(konto);
}// if- LÖSCHEN Button
if(knopf.equals("Transaktion")){
}// if- TRANSAKTION Button
}// actionPerformed
}// Zuhoererclass
Zuhoerer zuhoerer = new Zuhoerer();
ok.addActionListener(zuhoerer);
loeschen.addActionListener(zuhoerer);
transaktion.addActionListener(zuhoerer);
this.setVisible(true);
}
}