zwugel Geschrieben 23. Juni 2016 Geschrieben 23. Juni 2016 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 Zitieren
pr0gg3r Geschrieben 23. Juni 2016 Geschrieben 23. Juni 2016 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. Zitieren
etreu Geschrieben 24. Juni 2016 Geschrieben 24. Juni 2016 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. Zitieren
thereisnospace Geschrieben 10. September 2016 Geschrieben 10. September 2016 (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 10. September 2016 von Gottlike Zitieren
Whiz-zarD Geschrieben 10. September 2016 Geschrieben 10. September 2016 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. Zitieren
Empfohlene Beiträge
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.