Parameterübergabe

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hi,
eigentlich ist es für mich kein Problem Parameter einer Methode einer anderen zu übergeben.
JBuilder macht das Ganze jedoch (für mich) etwas merkwürdig, sodass ich ratlos bin.
Kann mir wer helfen?

Code:
void btBerechnen_actionPerformed(ActionEvent e) {


  String kapitalAusgabe="";

  double preis, jahre, kapital;
  preis=Double.parseDouble(tfPreis.getText());
  jahre=Double.parseDouble(tfJahre.getText());

  kapital=preis/jahre;

  int jahreUmrechnung = (int) jahre;

  for(int i= 1; i<=jahreUmrechnung; i++)
    {
    preis= preis-kapital;
    kapitalAusgabe= kapitalAusgabe+ i+". Jahr: "+preis+" € \n";
    }
  rechnen(kapitalAusgabe);
  }

Den String kapitalAusgabe will ich an diese Methoder übergeben, da ich Strings von anderen Methoden nicht ohneweiteres aufrufen kann.

Code:
void btSpeichern_actionPerformed(ActionEvent e) {

      try
    {
    BufferedWriter daten= new BufferedWriter(
    new FileWriter ("kapital.txt", true));

    daten.write(kapitalAusgabe);
    daten.newLine();
    daten.write("_________________________________");
    daten.newLine();
    daten.close();
    }
    catch(IOException f)
      {
      JOptionPane.showMessageDialog(this,"Fehler beim Speichern");
      }

  }

Weiss jemand weiter?

Liebe Grüße
Reality

PS: Das sind Buttons
 
R

Roar

Gast
ääh ich versteh erstmal nicht was das für methoden sind!? ein ActionEvent als parameter? ich geh mal davon aus dass diese methoden aufgerufen werden sollten wenn ein event passiert. aber der ActionListener ruft immer actionerformed() und nicht btberechnene_actionPerformed auf oder wie die heisst !? wo und wie werden die methoden denn aufgerufen? und da ich ma ldavon ausgehe dass sie nicht direkt mit dem ActionListener interface zu tun haben weißt ich nicht wieso den denen ein ActinoEvent übergibts, obwohl du das gar nicht brauchst in der methode? füg doch einfach noch einen String als parameter hinzu !? ich kapier dein problem irgendwie nicht. was funktioniert denn nicht genau? und wo mecker JBuilder (der sowieso müll ist)...

ansonsten speicher den string halt in ner klassenvariable
 

Reality

Top Contributor
Hi,
wie in dem PS geschrieben, sind das Buttons und dazu braucht man ja imo Events.

Die Methode kann ich mittels btberechnen_actionPerformed() oder btberechnen() nicht aufrufen, da meckert JBuilder, dass es das nicht gibt.

Als Klassenvariable (static?) kann ich es ja nicht ohne weiteres speichern, weil es ja "errechnet" wird.

Also weist du bescheid, wie ich das jetzt genau mache?

Liebe Grüße
Reality
 
R

Roar

Gast
ja es gibt die methoden nicht weil es nur btberechnen_actionPerformed(ActionEvent e) gibt. aber was das für methoden sind, wann sie aufgerufen werden, und wieso sie ein ActionEvent als parameter haben weiß ich immernoch nicht.

wenn buttons ausgelöst werden wird actionPerformed(ActionEvent e) aufgerufen, aber nicht brtzlprmpftActionPerformed(ActinoEvent e);

was bringen alsso diese methoden?
 

Reality

Top Contributor
Hi,
dass Event ist imo da, damit es weiss, dass es angeklickt wurde. Jedenfalls, wenn ich Event weglasse, kommt folgende Fehlermeldung:
Code:
"HauptFenster.java": Fehler #: 300 : Methode btLoeschen_actionPerformed(java.awt.event.ActionEvent) nicht gefunden in Anonyme Klase von method jbInit() in Zeile 74, Spalte 9

Und die Methoden kann ich überhaupt nicht auffrufen, auch wenn ich die komplette Methode kopiere.
Wenn ich das tue, kommt eine Fehlermeldung, dass in Zeile soundso ein ) erwartet wird.

Liebe Grüße
Reality
 
R

Roar

Gast
nur sso ne vermutung: benutzt du klassen von JBuilder die in in der J2SE ist? denn ich kapier immernoch nicht was das machen soll. kannst du evtl. mal den sourcecode posten?

und zu deinem problem: ja speicher den string in eine klassen/instanzvariable wenn es nicht anders geht :?
 

Reality

Top Contributor
Hi,
keine Ahnung, was J2SE ist. Meinst du mit Klassen/Instanzvariable, static?

Hier der SourceCode:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;



public class HauptFenster extends JFrame {
  JPanel contentPane;
  TextField tfPreis = new TextField();
  Label lbPreis = new Label();
  TextField tfJahre = new TextField();
  Label lbJahre = new Label();
  Button btBerechnen = new Button();
  Button btSpeichern = new Button();
  TextArea taKapital = new TextArea();
  Button btLoeschen = new Button();
  Label lbStatus = new Label();

    public void rechnen(String kapitalAusgabe)
  {
  taKapital.setText(kapitalAusgabe);
  }


  /**Den Frame konstruieren*/
  public HauptFenster() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  /**Initialisierung der Komponenten*/
  private void jbInit() throws Exception  {
    //setIconImage(Toolkit.getDefaultToolkit().createImage(HauptFenster.class.getResource("[Ihr Symbol]")));
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(null);
    this.setSize(new Dimension(400, 318));
    this.setTitle("Produkt-Abbezahlung");
    tfPreis.setBounds(new Rectangle(227, 42, 108, 32));
    lbPreis.setFont(new java.awt.Font("Dialog", 1, 12));
    lbPreis.setText("Preis in €");
    lbPreis.setBounds(new Rectangle(228, 15, 56, 25));
    tfJahre.setBounds(new Rectangle(228, 104, 108, 32));
    lbJahre.setBounds(new Rectangle(221, 77, 123, 25));
    lbJahre.setText("Abbezahlung in Jahre");
    lbJahre.setFont(new java.awt.Font("Dialog", 1, 12));
    btBerechnen.setBackground(Color.white);
    btBerechnen.setFont(new java.awt.Font("Dialog", 1, 12));
    btBerechnen.setLabel("Berechnen");
    btBerechnen.setBounds(new Rectangle(234, 156, 99, 35));
    btBerechnen.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btBerechnen_actionPerformed(e);
      }
    });
    btSpeichern.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btSpeichern_actionPerformed(e);
      }
    });
    btSpeichern.setBounds(new Rectangle(18, 214, 99, 35));
    btSpeichern.setLabel("Speichern");
    btSpeichern.setFont(new java.awt.Font("Dialog", 1, 12));
    btSpeichern.setBackground(Color.white);
    taKapital.setBounds(new Rectangle(8, 20, 202, 172));
    btLoeschen.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btLoeschen_actionPerformed(e);
      }
    });
    btLoeschen.setBounds(new Rectangle(18, 255, 99, 35));
    btLoeschen.addMouseListener(new java.awt.event.MouseAdapter() {
    });
    btLoeschen.setLabel("Löschen");
    btLoeschen.setFont(new java.awt.Font("Dialog", 1, 12));
    btLoeschen.setBackground(Color.white);
    lbStatus.setBounds(new Rectangle(190, 260, 130, 33));
    contentPane.add(tfPreis, null);
    contentPane.add(lbPreis, null);
    contentPane.add(tfJahre, null);
    contentPane.add(lbJahre, null);
    contentPane.add(btBerechnen, null);
    contentPane.add(btSpeichern, null);
    contentPane.add(taKapital, null);
    contentPane.add(btLoeschen, null);
    contentPane.add(lbStatus, null);
  }
  /**Überschrieben, so dass eine Beendigung beim Schließen des Fensters möglich ist.*/
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void btBerechnen_actionPerformed(ActionEvent e) {


  String kapitalAusgabe="";

  double preis, jahre, kapital;
  preis=Double.parseDouble(tfPreis.getText());
  jahre=Double.parseDouble(tfJahre.getText());

  kapital=preis/jahre;

  int jahreUmrechnung = (int) jahre;

  for(int i= 1; i<=jahreUmrechnung; i++)
    {
    preis= preis-kapital;
    kapitalAusgabe= kapitalAusgabe+ i+". Jahr: "+preis+" € \n";
    }
  rechnen(kapitalAusgabe);
  }

  void btSpeichern_actionPerformed(ActionEvent e) {
      try
    {
    BufferedWriter daten= new BufferedWriter(
    new FileWriter ("kapital.txt", true));

    daten.write(kapitalAusgabe);
    daten.newLine();
    daten.write("_________________________________");
    daten.newLine();
    daten.close();
    }
    catch(IOException f)
      {
      JOptionPane.showMessageDialog(this,"Fehler beim Speichern");
      }

  }
  void btLoeschen_actionPerformed(ActionEvent e) {
  try{
    lbStatus.setText("Wird gelöscht...");
    btLoeschen.setBackground(Color.red);
    Thread.sleep(500);
    btLoeschen.setBackground(Color.white);
    Thread.sleep(500);
    btLoeschen.setBackground(Color.red);
    Thread.sleep(500);
    btLoeschen.setBackground(Color.white);
    lbStatus.setText("Gelöscht!");
    taKapital.setText("");
    lbStatus.setText("Gelöscht!");
    Thread.sleep(1500);
    lbStatus.setText("");
  }
  catch(InterruptedException fx)
    {
    JOptionPane.showMessageDialog(this,"Fehler!");
    }
  }
}

Liebe Grüße
Reality
 
R

Roar

Gast
achsooo *schalt* versteh :!:
ich hab mir shcon gedacht dass das so funzt.

J2SE = Java 2 Standart Edition
Klassenvariable != Instanzvariable

so nun zu deinem problem:
wieso schreibst du den code von dem was passieren soll mein buttonklick nicht direkt in den actionListener der dem button geaddet wird anstelle eine extra methode zu schreiben? naja is ja egal, geht ja auch so.
dann machst du es entweder so dass du der speichern-methode als zweiten parameter einen string übergibtst ( musst du natürlich in der methoden deklaration beachten). oder su speicherst den String in einer nstanzvariable. (
Code:
  Button btLoeschen = new Button();
  Label lbStatus = new Label(); 
  String s = new String();
)

und dann in deiner methode:
Code:
s = kapitalAusgabe;
// btSpeichern...blabla() {
// noch mehr blabla
daten.write(s);
 

Reality

Top Contributor
Hi,
hab ein neues Problem!
Wenn ich jetzt das speichere und dann später auslesen will, dann zeigt er mir nur jeden 2. Eintrag.


Code:
void btLesen_actionPerformed(ActionEvent e) {

  try
  {
  BufferedReader daten= new BufferedReader(
  new FileReader("kapital.txt"));

  kapitalAusgabe=daten.readLine()+"\n";
  while(daten.readLine()!=null)
    {
    kapitalAusgabe=kapitalAusgabe+daten.readLine()+"\n";
    taKapital.setText(kapitalAusgabe);
    }
  }
  catch(IOException fx)
    {
    JOptionPane.showMessageDialog(this, "\"kapital.txt\" nicht vorhanden");
    }

Und das liest er aus:
1. Jahr: 9000.0 €
3. Jahr: 7000.0 €
5. Jahr: 5000.0 €
7. Jahr: 3000.0 €
9. Jahr: 1000.0 €

null

Liegt das vielleicht daran, dass der gespeicherte String \n enthält und der Notepad-Editor statt einer neuen Zeile ein kryptisches Zeichen setzt?!

Liebe Grüße
Reality
 
R

Roar

Gast
kann sein. versuch einfach mal anstatt "\n" in den string zu setzen ein System.getProperty("line.separator") da rein zu schreiben.
 

Reality

Top Contributor
Hi,
bei btBerechnen oder bei btLesen? Und soll ich das in dem String schreiben? Das würde ich nämlich tun, wenn ich \n ersetze!

Liebe Grüße
Reality
 
B

Beni

Gast
Code:
while(daten.readLine()!=null)    <<<<<<<<<<<<<<<<<< 1. mal auslesen
    {
    kapitalAusgabe=kapitalAusgabe+daten.readLine()+"\n";   <<<<<<<<<<<<<<<<<< 2. mal auslesen
    taKapital.setText(kapitalAusgabe);
    }
  }

Mach noch eine Variable mehr:
Code:
String line = daten.readLine();
while( line != null)
    {
    kapitalAusgabe=kapitalAusgabe+line+"\n";
    taKapital.setText(kapitalAusgabe);
    line = daten.readLine();
    }
  }

mfg Beni
 

Reality

Top Contributor
Hey Beni! :)
Danke! funktioniert auch. Kannst du mir jedoch erklären, warum es am Anfang zuerst das 2. Jahr anzeigt und dann das erste?

Liebe Grüße
Reality
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
J Parameterübergabe in switch? Java Basics - Anfänger-Themen 2
W Was bedeutet im Struktogramm „zufall“ aufrufen (keine Parameterübergabe)? Java Basics - Anfänger-Themen 8
M Methode Objekt als Parameterübergabe Java Basics - Anfänger-Themen 6
B Parameterübergabe in main Java Basics - Anfänger-Themen 1
E Erste Schritte Parameterübergabe - Prozentrechner Java Basics - Anfänger-Themen 5
S Methoden Parameterübergabe Java Basics - Anfänger-Themen 4
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
Joew0815 Parameterübergabe Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
K Parameterübergabe im Terminal(Linux) Java Basics - Anfänger-Themen 8
V Parameterübergabe von Methoden verstehen Java Basics - Anfänger-Themen 13
P Java-Konsolenanwendung mit Parameterübergabe (Windows) Java Basics - Anfänger-Themen 3
X Parameterübergabe per Reflection Java Basics - Anfänger-Themen 10
H Parameterübergabe Java Basics - Anfänger-Themen 4
X Parameterübergabe Java Basics - Anfänger-Themen 6
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
E Einfache Frage zur Parameterübergabe in Methoden Java Basics - Anfänger-Themen 8
A Parameterübergabe zwischen statischen und nicht statischen Klassen Java Basics - Anfänger-Themen 6
L Parameterübergabe Java Basics - Anfänger-Themen 6
K Parameterübergabe Java Basics - Anfänger-Themen 3
W Parameterübergabe Java Basics - Anfänger-Themen 9
Y Probleme mit Parameterübergabe Java Basics - Anfänger-Themen 8
O Parameterübergabe mit RadioButtons Java Basics - Anfänger-Themen 2
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
G Parameterübergabe über mehrer Klassen Java Basics - Anfänger-Themen 2
S parameterübergabe Java Basics - Anfänger-Themen 5
M Parameterübergabe an *.jar Java Basics - Anfänger-Themen 5
M Parameterübergabe an externe JAR-Datei? Java Basics - Anfänger-Themen 2
B Frage zu Code (Parameterübergabe) Java Basics - Anfänger-Themen 14
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
B printf() mit Parameterübergabe? Java Basics - Anfänger-Themen 2
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
G Java Applikation ein Programm mit Parameterübergabe starten Java Basics - Anfänger-Themen 3
V doPost parameterübergabe funktioniert nicht. Java Basics - Anfänger-Themen 5
G Problem bei Parameterübergabe Java Basics - Anfänger-Themen 2
T Runtime.getRuntime().exec mit parameterübergabe Java Basics - Anfänger-Themen 16
roflomfg Parameterübergabe in in "*.jar" files möglich? Java Basics - Anfänger-Themen 8
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
D probleme bei der Parameterübergabe Java Basics - Anfänger-Themen 12
M Parameterübergabe Java Basics - Anfänger-Themen 7
J Nested Layouts - Parameterübergabe bei ActionListener Java Basics - Anfänger-Themen 2
M Parameterübergabe! Java Basics - Anfänger-Themen 4
M Probleme bei Parameterübergabe in Rekursion Java Basics - Anfänger-Themen 5
K Parameterübergabe bei quickSort Java Basics - Anfänger-Themen 6
G Parameterübergabe bei Runtime.getRuntime().exec Java Basics - Anfänger-Themen 16
J parameterübergabe arraylist Java Basics - Anfänger-Themen 9
D args und parameterübergabe Java Basics - Anfänger-Themen 8
D Parameterübergabe mit JSP Java Basics - Anfänger-Themen 2
I Parameterübergabe beim Aufruf in der Kommandozeile Java Basics - Anfänger-Themen 4
B Parameterübergabe und return; Java Basics - Anfänger-Themen 3
F Performanceverlust bei ständiger Parameterübergabe? Java Basics - Anfänger-Themen 4
K Parameterübergabe Java Basics - Anfänger-Themen 5
H Parameterübergabe zwischen einzelnen Funktionen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben