Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Halli Hallo,

ich habe mir ein kleines Programm mit eine JFrame, mehren Textfeldern,Buttons und Checkboxen geschrieben. Auf dem Button hängt nen Actionlistener und wenn dieser gedrückt wird, soll er mir die eingegeben Werte der Textfeldern & Checkboxen in einer anderen Klasse ausgeben. 

Siehe hier:

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class mycontroller implements ActionListener  {
  
  private Frame frame;
 
  public void startgui(){
    Frame frame = new Frame(this);
    frame.setVisible(true);
    
  }
  
  public void actionPerformed (ActionEvent e){
    String command = e.getActionCommand();
    
    if (command.equals("Datei einlesen"))
    {
      //ausgabe tf1
      //ausgabe tf2
      //ausgabe tf3
      //ausgabe cb1
      //ausgabe cb2
    } 
    else if (command.equals("Abbruch"))
    {
      System.out.println("Abbruch");
      
    } 
  }
}

Leider bekomme ich es ums verrecken nicht hin. Hat da jemand ne Idee?

Hier noch meine 2 anderen Klassen

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

public class Frame extends JFrame {
  
  public Frame(ActionListener listener){
    //fenstereigenschaften
    
    setTitle("MonTech HD3000  Shore / Dichte");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,300); 
    setLayout(null);
    setResizable(false);                                 
    setLocationRelativeTo(null);
    
    
    //panel
    
    JPanel p1 = new JPanel(); 
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();
    JPanel p5 = new JPanel();
    JPanel p6 = new JPanel();
    
    
    //fensterinhalt
    
    JLabel titlelabel = new JLabel("XXXXXXXXXXXXXXXXXXXXXXXXXX");
    
    JLabel l1 = new JLabel("XXXXXXXXXXX");
    JTextField tf1 = new JTextField(6); 
    p1.add(l1);
    p1.add(tf1);
    
    
    JLabel l5 = new JLabel("-");
    JTextField tf2 = new JTextField(3); 
    p2.add(l5);
    p2.add(tf2);
    
    
    JLabel l2 = new JLabel("xxxxxxxxxx");
    JTextField tf3 = new JTextField(2); 
    p3.add(l2); 
    p3.add(tf3);
    
    JLabel l3 = new JLabel("XXXXX");
    JCheckBox cb1 = new JCheckBox();
    p4.add(l3);
    p4.add(cb1);
    
    JLabel l4 = new JLabel("XXXXX");
    JCheckBox cb2 = new JCheckBox();
    p5.add(l4);
    p5.add(cb2);
    
    
    
    //Buttons
    
    JPanel buttonpanel = new JPanel ();
    JButton okbutton = new JButton ("Datei einlesen");
    JButton closebutton = new JButton ("Abbruch");
    buttonpanel.add(okbutton);
    buttonpanel.add(closebutton);
    
    // layout  
    
    titlelabel.setBounds(50,0,200,50);
    p1.setBounds(0,50,165,40);
    p2.setBounds(152,50,70,40);
    p3.setBounds(-26,90,185,40);
    p4.setBounds(25,130,100,40);
    p5.setBounds(26,170,100,40);
    buttonpanel.setBounds(0,225,300,200);
    
    
    add(titlelabel);
    add(buttonpanel);
    add(p1);
    add(p2);
    add(p3);
    add(p4);
    add(p5);
    
    // listener
    
    
    okbutton.addActionListener(listener);
    closebutton.addActionListener(listener);
    
    String tag = tf1.getText();
    String auf = tf2.getText();
    String misch = tf3.getText();
    boolean di = cb1.isSelected();
    boolean sh = cb2.isSelected();
  }
}
public class launcher{
  public static void main (String[] args) {
    mycontroller c = new mycontroller();
    c.startgui();  
    }
  }

 

Danke im Voraus :)

Geschrieben

Du erstellst die JTextFields nicht im Konstruktor, sondern in der Klasse als Member. Entweder private und mit Gettern oder public. Dann kannst du im Controller per frame.tf1.getText() bzw. frame.deinGetter().getText() an den Wert herankommen.

 

Geschrieben

Die verschiedenen UI-Klassen sollte höchstens etwas voneinander wissen, wenn ineinander verschachtelt sind.
Für einen Datenaustausch sollte man Datenklassen, Nachrichten oder sonst was nehmen. Wenn du so anfängst, dann macht ggf. jede Anpassung an einem Fenster die halbe Anwendung kaputt.

  • 2 Monate später...
Geschrieben (bearbeitet)
Am 24.6.2016 um 08:46 schrieb etreu:

Die verschiedenen UI-Klassen sollte höchstens etwas voneinander wissen, wenn ineinander verschachtelt sind.
Für einen Datenaustausch sollte man Datenklassen, Nachrichten oder sonst was nehmen. Wenn du so anfängst, dann macht ggf. jede Anpassung an einem Fenster die halbe Anwendung kaputt.

Exakt!

Außerdem gibt es doch anscheinend schon eine Klasse Controller (mycontroller). Benutze die um zwischen den einzelnen Views zu kommunizieren.

Bearbeitet von Gottlike
Geschrieben
Am 24.6.2016 um 08:46 schrieb etreu:

Die verschiedenen UI-Klassen sollte höchstens etwas voneinander wissen, wenn ineinander verschachtelt sind.
Für einen Datenaustausch sollte man Datenklassen, Nachrichten oder sonst was nehmen. Wenn du so anfängst, dann macht ggf. jede Anpassung an einem Fenster die halbe Anwendung kaputt.

Selbst dann nicht mal wirklich. Sie sollten über Interfaces kommunizieren.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...