String an eine andere Klasse im anderem package übergeben

Status
Nicht offen für weitere Antworten.

Stiff

Mitglied
Hi
Ich bin gerade an einem größeren Projekt am arbeiten.
Aber mein Arbeitspartner und ich haben nun folgendes Problem.
Wir wollen einen String in eine andere Klasse übergeben.
Das klappt aber irgendwie nicht.
Ich hab jetzt um unser Problem zu schildern und besser darzustellen einen kleinen Rechner, welcher nur addieren kann erstellt.
Dieser hat genau das gleiche Problem.

Hier ist mein Quelltext:

Code:
package gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import rechnen.*;


/**
 *
 * @author Fabian
 */
public class Surface extends JFrame
{
    JMenuBar menubar;
    JMenu datei;
    JMenu bearbeiten;
    
    JTextField eingabe1;
    JTextField eingabe2;
    
    JButton go;
    
    JLabel ergebnisLabel;
    
    double wert1;
    double wert2;
    
    public class actionLauscher implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            
        }
    }
    
    /** Creates a new instance of Surface */
    public Surface() 
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.LIGHT_GRAY);       //set Background Color
        
        setTitle("SmartMath");                                  //set Title
        setSize(450,300);                                       //set Size
        setLocation(300,300);                                   //set Frame-position
        setLayout(new FlowLayout());                            //set Layout
        
        menubar = new JMenuBar();                               //menubar
        datei = new JMenu("Datei");                             //menu: datei
        bearbeiten = new JMenu("Bearbeiten");                   //menu: bearbeiten
        
        eingabe1 = new JTextField(10);                          //eingabe1
        eingabe2 = new JTextField(10);                          //eingabe2
        
        go = new JButton("Go");                                 //go
        
        ergebnisLabel = new JLabel("Ihr Ergenis");              //ergebnisLabel
        
        menubar.add(datei);                                     //add datei menubar
        menubar.add(bearbeiten);                                //add bearbeiten menubar
        setJMenuBar(menubar);                                   //add Menubar
        
        add(eingabe1);
        add(eingabe2);
        add(go);
        add(ergebnisLabel);
        
        go.addActionListener(new actionLauscher()
        {
            public void actionPerformed(ActionEvent e)
            {
                Addieren plus = new Addieren();
                getEingabe1();
                getEingabe2();
                ergebnisLabel.setText(Double.toString(plus.getErgebnis()));
            }
        });
    
    }
    
    public double getEingabe1()
    {
        if(eingabe1.getText() != null)
        {
             wert1 = Double.parseDouble(eingabe1.getText());
        }
        return wert1;
    }
    
    public double getEingabe2()
    {
        if(eingabe2.getText() != null)
        {
            wert2 = Double.parseDouble(eingabe2.getText());
        }
        return wert2;
    }
    
    
   
    
}

Code:
package start;

import gui.*;

/**
 *
 * @author Fabian
 */
public class Launcher 
{
    
    /** Creates a new instance of Launcher */
    public Launcher() 
    {
        //set default constructor
    }
    
    public static void main(String[] args)
    {
        Surface fenster = new Surface();            //a new Instance of Surface
        fenster.show();                             //show the JFrame
    }
    
}

Code:
package rechnen;

import gui.*;

/**
 *
 * @author Fabian
 */
public class Addieren
{
    double add1;
    double add2;
    
    /** Creates a new instance of Addieren */
    public Addieren() 
    {
        //set default constructor
    }
    
    public double getErgebnis()
    {
        Surface sf = new Surface();
        add1 = sf.getEingabe1();
        add2 = sf.getEingabe2();
        return add1 + add2;
    }
    
    
}

Von der Class Surface soll jetzt der String, bzw. double an die Klasse Addieren übergeben werden.
Das klappt aber nicht.
ICh hoffe das ihr mir helfen könnt.
MFG
Fab
 
Dein Problem ist, daß du in der actionPerformed-methode eine neue instanz von addieren erzeugt, diese wiederum eine neue von surface, usw.

Gibt diverse Lösungsmöglichkeiten, Singleton z.B. - am einfachsten wäre es aber die Werte über den Konstruktor an Addieren zu übergeben (und in diesem Objekt KEINE neue Instanz von Surface erzeugen).
 
ihr dürf in addieren kein neues objekt von Surface machen.... das kommt raus...
Ihr müsst in Surface ein Objekt von addieren haben und sobal was eingetragen wurde die setMethoden ovn addieren auf rufen.

kleines Beispiel casten usw. habe ich nicht beachtet nur mal die Logik...

Code:
public class Surface.....
...
private Addieren a;
...

public Surface()
{
    a=new Addieren();

}

actionPerformed(ActionEvent e)
{

    a.setZahl1(textfeld1.getText());  -->hier davor prüfen ob überhaupt eine zahl eingegeben wurde udn casetn
    a.setZahl2(textfeld2.getText());  
    int ergebnis=a.addieren();
}

Code:
public class Addieren
{
    int Zahl1;
    int Zahl2;

...

    public setZahl1(int zahl)
    {
     zahl1=zahl;
    }

    public setZahl2(int zahl)
    {
     zahl2=zahl;
    }

    public int addieren()
    {
    return zahl1+zahl2;

    }



}

für einen taschenrechner würde ich mir mal die Klasse Math anschauen....
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben