2Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
692
692
EMPFEHLEN
-
Ich muß für die Schule ein EMail Programm schreiben und bei dem Übergeben der Werte mit geter Methoden hat dann ein Teil null werte und ich weiß nicht was ich falsch mache kann mir eventuell wer helfen?
Meine Main kurz und knackig:
Code :1 2 3 4 5 6 7 8 9 10 11
package GUI; public class Main_E_Mail { public static void main (String[]args) { Oberflaeche_Main OM = new Oberflaeche_Main(); OM.los(); } }
Das ist die Main Oberfläche die sie Senden initialisiert und mit dem Button startet man dann die Benutzereingabeoberfläche:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
package GUI; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import Programm.Senden; public class Oberflaeche_Main extends JFrame implements ActionListener { private JFrame mainFrame; private JPanel pnlNorth,pnlFrom,pnlTo,pnlBetreff; private JLabel lblFrom,lblTo,lblBetreff; private JTextField txtFFrom,txtFTo,txtFBetreff; private JTextArea txtAEingabe; private JButton btnSenden; Senden senden; public void los() { mainFrame=new JFrame("E-Mail versenden");//Mainframe erzeugen mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pnlNorth=new JPanel(); pnlNorth.setLayout(new BoxLayout(pnlNorth, BoxLayout.Y_AXIS)); pnlFrom=new JPanel(); lblFrom=new JLabel("From: "); pnlFrom.add(lblFrom); txtFFrom=new JTextField(30); pnlFrom.add(txtFFrom); pnlNorth.add(pnlFrom); pnlTo=new JPanel(); lblTo=new JLabel("To: "); pnlTo.add(lblTo); txtFTo= new JTextField(30); pnlTo.add(txtFTo); pnlNorth.add(pnlTo); pnlBetreff=new JPanel(); lblBetreff=new JLabel("Betreff: "); pnlBetreff.add(lblBetreff); txtFBetreff=new JTextField(30); pnlBetreff.add(txtFBetreff); pnlNorth.add(pnlBetreff); mainFrame.getContentPane().add(BorderLayout.NORTH,pnlNorth); txtAEingabe=new JTextArea(20,20); mainFrame.getContentPane().add(BorderLayout.CENTER,txtAEingabe); btnSenden=new JButton("Senden"); btnSenden.addActionListener(this); mainFrame.getContentPane().add(BorderLayout.SOUTH,btnSenden); mainFrame.setSize(600, 350); mainFrame.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== btnSenden) { senden=new Senden(); senden.setsFrom(txtFFrom.getText()); senden.setsTo(txtFTo.getText()); senden.setsSubjekt(txtFBetreff.getText()); senden.setsText(txtAEingabe.getText()); Oberflaeche_Benutzerdaten OberflBenutzerdaten =new Oberflaeche_Benutzerdaten(); OberflBenutzerdaten.los(); } } }
Hier die Benutzereingabe Oberfläche:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
package GUI; import java.awt.BorderLayout; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.WindowConstants; import Programm.Senden; public class Oberflaeche_Benutzerdaten extends JFrame implements ActionListener { private JFrame mainFrame; private JPanel pnlCenter,pnlBenutzer,pnlPasswort,pnlHost,pnlPort; private JLabel lblBenutzer,lblPasswort,lblHost,lblPort; private JTextField txtFBenutzer,txtFPasswort,txtFHost,txtFPort; private JButton btnBestaetigen; Senden senden; public void los() { mainFrame=new JFrame("Benutzerdaten eingeben");//Mainframe erzeugen mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pnlCenter=new JPanel(); pnlCenter.setLayout(new BoxLayout(pnlCenter, BoxLayout.Y_AXIS)); pnlBenutzer=new JPanel(); lblBenutzer=new JLabel("Account Benutzername: "); pnlBenutzer.add(lblBenutzer); txtFBenutzer=new JTextField(15); pnlBenutzer.add(txtFBenutzer); pnlCenter.add(pnlBenutzer); pnlPasswort=new JPanel(); lblPasswort=new JLabel("Account Passwort: "); pnlPasswort.add(lblPasswort); txtFPasswort=new JTextField(15); pnlPasswort.add(txtFPasswort); pnlCenter.add(pnlPasswort); pnlHost =new JPanel(); lblHost=new JLabel("Host z.B. mail.gmx.de : "); pnlHost.add(lblHost); txtFHost=new JTextField(15); pnlHost.add(txtFHost); pnlCenter.add(pnlHost); pnlPort= new JPanel(); lblPort= new JLabel("Port z.B. 25 : "); pnlPort.add(lblPort); txtFPort=new JTextField(15); pnlPort.add(txtFPort); pnlCenter.add(pnlPort); mainFrame.getContentPane().add(BorderLayout.CENTER,pnlCenter); btnBestaetigen=new JButton("Bestätigen"); btnBestaetigen.addActionListener(this); mainFrame.getContentPane().add(BorderLayout.SOUTH,btnBestaetigen); mainFrame.setSize(350, 200); mainFrame.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== btnBestaetigen) { senden =new Senden(); senden.setsUser(txtFBenutzer.getText()); senden.setsPassword(txtFPasswort.getText()); senden.setsHost(txtFHost.getText()); senden.setsPort(txtFPort.getText()); senden.Werteausgeben(); try { senden.MailSenden(); } catch (AddressException e1) { e1.printStackTrace(); } catch (MessagingException e2) { e2.printStackTrace(); } } } }
Und zu guter letzt die Klasse für das versenden die von der Benutzereingabe gestartet wird und die auch die ganzen getter und setter hat:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
package Programm; import java.util.Properties; import javax.mail.Address; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import GUI.Oberflaeche_Main; public class Senden { String sFrom; //von String sTo; //an String sSubjekt; //Betreff String sText; //Text String sUser; //Benutzer String sPassword; //Password String sHost; //Host String sPort; //Port Oberflaeche_Main GUIMain =new Oberflaeche_Main(); public void Werteausgeben() { System.out.println(""+getsFrom()); System.out.println(""+getsTO()); System.out.println(""+getsSubjekt()); System.out.println(""+getsText()); System.out.println(""+getsUser()); System.out.println(""+getsPassword()); System.out.println(""+getsHost()); System.out.println(""+getsPort()); } public void MailSenden() throws AddressException,MessagingException { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", getsHost()); props.put("mail.smtp.port", getsPort()); Session session = Session.getDefaultInstance(props,null); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(getsFrom())); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(getsTO())); msg.setSubject(getsSubjekt()); msg.setText(getsText()); Transport tr=new session.getTransport("smtp"); tr.connect(getsHost(),getsUser(),getsHost()); msg.saveChanges(); tr.sendMessage(getsText(),msg.getAllRecipients()); tr.close(); } public void setsFrom(String p_sfrom) { sFrom=p_sfrom; } public void setsTo(String p_sto) { sTo=p_sto; } public void setsSubjekt(String p_ssubjekt) { sSubjekt=p_ssubjekt; } public void setsText(String p_sText) { sText=p_sText; } public String getsFrom() { return sFrom; } public String getsTO() { return sTo; } public String getsSubjekt() { return sSubjekt; } public String getsText() { return sText; } public void setsUser(String p_sUser) { sUser=p_sUser; } public void setsPassword(String p_sPW) { sPassword=p_sPW; } public void setsHost(String p_sHost) { sHost=p_sHost; } public void setsPort(String p_sPort) { sPort=p_sPort; } public String getsUser() { return sUser; } public String getsPassword() { return sPassword; } public String getsHost() { return sHost; } public String getsPort() { return sPort; } }
Ich bin für jede Hilfe dankbar.
CU Eklaf
-
Und WO übergibst du die Problemwerte?
-
Falls du die Throws meinst die werden in der Benutzeroberfläche aufgefangen sonst weiß ich nicht was du meinst ich programiere erst seit ca 10 monaten
-
Er meint damit folgendes:
Du wirfst uns hier zeilenweise Code an den Kopf, sagst aber nicht welche Zeile Probleme macht bzw. welche Werte null sind, obwohl sie es nicht sein sollten.
-
Oh mist mein Fehler sry
also im letzten Code block sollen die ganzen Strings ja Zwischengespeichert werden und dann am ende auch benutzt werden allerdings die Strings From, To, Subjekt und Text die von der Oberflaeche_Main (2ter Codeblock) übergeben werden sind alle null nur die von der Oberflaeche_Benutzereingabe (3ter Codeblock) werden korrekt übergeben. woran liegt das?
-
Du...
-machst in der Oberfläche_Main ein neues Objekt von Senden
-Weist 4 von 8 benötigten Werten zu
-Startest den Oberfläche_Benutzerdaten-Teil
-Erzeugst wieder ein Objekt von Senden
-Und weist dem die anderen 4 Werte zu
Merkst du was?
Die "Senden" in Oberfläche_Main und Oberfläche_Benutzerdaten sind zwei verschiedene.
Dem ersten weist du die vier einen Werte zu, dem zweiten die 4 anderen.
Weiterverwendet von dir wird das zweite, dem natürlich die Werte vom ersten fehlen.
Im Oberfläche_Benutzerdaten (beim actionperformed) darfst du kein "...=new Senden();" machen, denn ein neues Senden hast du schon im Oberfläche_Main.
Übergib das Senden vom Main einfach in die Benutzerdaten, egal ob im Konstruktor oder im los()
Konstruktor/Los() weist dann den übergebenen Wert der Variable senden zu, dafür kommt das "senden=new Senden();" in den Benutzerdaten weg.
Gruß
-
Das hatte ich mir schon fasst gedacht dass das 2te new zuviel ist

Okay ich hab versucht was dazu zu finden aber ich bin zu d... wie geht das hab ich noch nie gemacht. kannst mir da bitte weiterhelfen?
-
1) Im Oberflaeche_Main, actionPerformed, letzte Codezeile schreibst du statt
das:Code java:1
OberflBenutzerdaten.los();
Code java:1
OberflBenutzerdaten.los(senden);
2) Im Oberflaeche_Benutzerdaten musst du beim los eintragen dass es einen Parameter bekommt.
Außerdem solltest du die Variable senden protected oder private machen.
Im los musst du dann das übergebene Senden der Variable zuweisen, damits auch noch im actionPerformed verfügbar ist.
Also
wird zuCode java:1 2 3 4 5
Senden senden; public void los() { //...
Code java:1 2 3 4 5 6
private Senden senden; public void los(Senden variable) { senden=variable; //...Hier der restliche Code von los, kannst du unverändert stehenlassen
3) Auch im Oberflaeche_Benutzerdaten, bei actionPerformed
kommt die Zeile ersatzlos weg:
Code java:1
senden=new Senden();
Fertig
-
AAAAAAAAAAAAHHHHHHHHHHHHHHHHH geil es geht dank dir vielmals jetzt kann ich wieder ruhig schlafen
danke danke danke
bis zum nächsten mal
-
Neben dem Antworten Button ist ein Haeckchen, um das Thema als erledigt zu markieren
Den darf man ohne Probleme benutzen
Ähnliche Themen
-
TextArray Scrollbar gehen nicht und finde den Fehler nicht
Von Eklaf im Forum JavaAntworten: 4Letzter Beitrag: 31.01.11, 12:00 -
div nicht innerhalb umschließendem div, finde Fehler nicht.
Von minddavid im Forum CSSAntworten: 4Letzter Beitrag: 14.03.10, 17:49 -
Finde denn Fehler im Code nicht kann mich nicht einlogen.
Von deinpapa im Forum PHPAntworten: 6Letzter Beitrag: 06.08.07, 14:03 -
script für Datenbankeintrag/abfrage klappt nicht - finde den Fehler nicht
Von germanius im Forum Relationale DatenbanksystemeAntworten: 10Letzter Beitrag: 06.06.04, 14:49 -
Finde den Fehler nicht :-(
Von HolgerX im Forum C/C++Antworten: 4Letzter Beitrag: 07.05.04, 12:48





Zitieren


Login





