getter & setter

KPKMP

Mitglied
Hallo,
habe ein Problem mit get und set.
Ich versuche aus der Klasse Test5 einen Rückgabewert returnString über die Methode getretString() an die Klasse Test1 zurückzugeben, nachdem ich den Button Übergabe gedrückt habe.
Klappt leider nicht! Wo liegt mein Fehler?

Java:
public class Test1 {
   public static void main(String[] args) {
        // TODO Auto-generated method stub
        //Test5 keyTest = new Test5();
        Test5 keyTest = new Test5();
        keyTest.setVisible(true);
        
        String str = keyTest.getretString();
        
        System.out.println(str);
    }
}

Java:
import java.awt.event.*;
import javax.swing.*;
 
public class Test5 extends JFrame implements KeyListener, MouseListener{
    private JTextField tf;
    private JButton jbUebertrag;
    private JButton jbNeu;
 
    private String Ausgabetext;
    private String returnString;
    //private String returnString;
    
    private boolean blRunning = false;
    private long startTime;
    private long lastKeyUp;
    private long releaseKey;
    private long pressKey;
  
    public Test5() {
       
        this.setLayout(null);
        
        tf = new JTextField();
        tf.setBounds(10,10,310, 30);
        tf.setEditable(false);
        tf.setFocusable(true);
        Ausgabetext = new String();
        this.add(tf);
        
        //Buttons
        jbUebertrag = new JButton("Übertrag");
        jbUebertrag.setBounds(10, 50, 100, 30);
        jbUebertrag.addActionListener(new ActionListenerUebertrag());
        this.add(jbUebertrag);
        
        jbNeu = new JButton("Neu");
        jbNeu.setBounds(120, 50, 100, 30);
        jbNeu.addActionListener(new ActionListenerNeu());
        this.add(jbNeu);
        
        //Listener
        tf.addKeyListener(this);
        tf.addMouseListener(this);    
        
        this.setSize(350, 150);        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);        
        this.setVisible(true);
        }
    
    class ActionListenerUebertrag implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            returnString = tf.getText().toString();
            System.out.println("Uebergabe:" + returnString);
            setRetString(returnString);
        }        
    }
    
    class ActionListenerNeu implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            String buttonText = e.getActionCommand();
            if (buttonText.equals("Neu")) {
                //Alles zurücksetzen
                System.out.println("alles neu macht der mai");
                Ausgabetext = "";
                blRunning = false;
                tf.setText(Ausgabetext);
            }
        }
    }

    protected void setRetString (String returnString) {
        this.returnString = returnString;
        System.out.println("ue" + returnString);
    }
    public String getretString() {
        //String retStr = returnString;
        
        return returnString;
    }
    @Override
    public void keyPressed(KeyEvent e) {
        pressKey = System.currentTimeMillis();
        
        if (!blRunning) {
            try {
                long relDur = pressKey-releaseKey; 
                interpretDur(relDur);
                
                startTime = System.currentTimeMillis(); 
                blRunning = true;                  
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
        }          
    }
    
    @Override
    public void keyReleased(KeyEvent e) {        
        
        lastKeyUp = System.currentTimeMillis();
            
        try {
            releaseKey = System.currentTimeMillis();
            long lDuration = lastKeyUp - startTime; 
            blRunning=false;
            interpretTone(lDuration);   
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        //tf.setText(text);
    }
    @Override
    public void mousePressed(MouseEvent e) { 
        pressKey = System.currentTimeMillis();
        if (!blRunning) {            
              try {
                  
                  long relDur = pressKey-releaseKey; 
                  interpretDur(relDur);
                  startTime = System.currentTimeMillis(); 
                  blRunning = true;  
              } catch (Exception ex) {
              ex.printStackTrace();
              }
        } 
     }

     @Override
    public void mouseReleased(MouseEvent e) {       
          lastKeyUp = System.currentTimeMillis();
          
          try {
              releaseKey = System.currentTimeMillis();
              long ltDuration = lastKeyUp - startTime;               
              interpretTone(ltDuration);   
              blRunning=false;              
          } catch (Exception ex) {
              ex.printStackTrace();
          }  
          //tf.setText(text);
     }
     
     private void interpretDur(long relDur) {
         // TODO Auto-generated method stub
         if (relDur > 1200) {
             Ausgabetext+= " ";
             tf.setText(Ausgabetext);
         }
     }
     
     private void interpretTone(long duration){
          System.out.println(duration);
         if (duration < 500 ) {
             // Punkt einfügen
             Ausgabetext += ".";
             tf.setText(Ausgabetext);
             System.out.println(Ausgabetext);
         } else if (duration > 500){
             // Strich einfügen
             Ausgabetext += "-";
             tf.setText(Ausgabetext);
             System.out.println(Ausgabetext);
         } else {
             System.out.println("nix");
         }

     }
     
     //KeyListener unbenutzt
     @Override
     public void keyTyped(KeyEvent e) {
      // TODO Auto-generated method stub 
     }     
     //MouseListener unbenutzt
     @Override
     public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub        
     }
     @Override
     public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub        
     }
     @Override
     public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub        
     }   
}
 
Was passiert denn stattdessen? Fliegt eine Exception oder was passiert?

Womöglich liegt es daran, dass du den returnString nicht definiert hast.
 
Du musst z.B. sowas machen wie:

Java:
public Test5(Test1 test1)

// actionPerformed ...
test1.printReturnString(String s);
//....

Dein Ablauf sieht folgendermaßen aus:
- Erstelle eine GUI
- Mache die GUI sichtbar
- Gibt den Text der GUI aus
- Dann wartet die Applikation auf den viel zu langsamen User ....
- Sie wartet noch immer ...
- Jetzt tippt der User etwas in das Textfeld ein
- Passiert wieder nichts ...
- User schließt das Fenster
 
Schaut doch mal in die Main: Natürlich printed er null aus. Wenn die GUI erstellt und sichtbar ist, wartet er nicht auf den Nutzer, sondern gibt sofort die Variable aus.
Der richtige Wert ist es, auf den Klick des Nutzers zu reagieren und dann den gewünschten Code auszuführen.
 

Zurück
Oben