Problem mit NullPointerException



  • Hallo
    ich habe das folgende Programm

    import javax.swing.*;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    
    import java.awt.GridLayout;
    import java.awt.FlowLayout;
    public class BriefSchreiben implements ActionListener,KeyListener {
    	JFrame frame1=new JFrame("Brieferstellung mit Enums");
    	JComboBox comboAnrede=new JComboBox();
    	JComboBox combobegruessung=new JComboBox();
    	JComboBox comboschluss=new JComboBox();
    	JComboBox comboredenSorten=new JComboBox();
    	JTextField name=new JTextField("Name");
    	JTextField inhalt=new JTextField("Der Inhalt");
    	JTextField anzeigen=new JTextField("Hier würde das Text  gezeigt");
    	JButton texterstellen=new JButton("Text erstelln");
    	JPanel panel1=new JPanel();
    	JPanel panel2=new JPanel();
    	JPanel panel3=new JPanel();
    	JPanel panel4=new JPanel();
    	DefaultComboBoxModel comboModelFreundlichAnreden;
    	DefaultComboBoxModel comboModelFreundlichBegruessung;
    	DefaultComboBoxModel comboModelFreundlichSchluss;
    	DefaultComboBoxModel comboModelOffiziellAnreden;
    	DefaultComboBoxModel comboModelOffiziellBegruessung;
    	DefaultComboBoxModel comboModelOffiziellSchluss;
    	DefaultComboBoxModel comboModelAlltäglichBegruessung;
    	DefaultComboBoxModel comboModelAlltäglichAnreden;
    	DefaultComboBoxModel comboModelAlltäglichSchluss;
    	String inhaltText;
    	StringBuilder ausgabeText;
    
    	//redenSorten
    	enum RedeSorten {Offiziell,Freundlich,Alltäglich};
    	//Begrüßungen
    	enum BegreussungenOffiziell {Sehrgeehrter,Gruss};
    	enum BegreussungenFreundlich{Hallo,SchönenTag};
    	enum BegreussungenAlltäglich {Hey,Holla,Allesklar};
    	//anreden
    	enum AnredenOffiziell {Herr,Frau};
    	enum AnredenFreundlich{Herr,Frau};
    	enum AnredenAlltäglich {Schatz,Bruder,Alter};
    	//schlussphrase
    	enum SchlussOffiziell {Danke,VielenDank,Gruss,MitFreundlichenGrüßen};
    	enum SchlussFreundlich{Tschüss,Danke,Bisdann,MitFreundlichenGrüßen};
    	enum SchlussAlltäglich {Ciao,Baye,Kuss};
    	BriefSchreiben(){
    		frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		this.comboredenSorten=new JComboBox(RedeSorten.values());
    		this.comboredenSorten.setSelectedIndex(0);
    		this.comboAnrede= new JComboBox(AnredenOffiziell.values());
    		this.combobegruessung=new JComboBox(BegreussungenOffiziell.values());
    		this.comboschluss= new JComboBox(SchlussOffiziell.values());
    		this.comboredenSorten.addActionListener(this);
    		this.combobegruessung.addActionListener(this);
    		this.comboAnrede.addActionListener(this);
    		this.comboschluss.addActionListener(this);
    		this.comboAnrede.setEditable(true);
    		this.combobegruessung.setEditable(true);
    		this.comboschluss.setEditable(true);
    		comboModelFreundlichAnreden = new DefaultComboBoxModel(AnredenFreundlich.values());
    		comboModelFreundlichBegruessung = new DefaultComboBoxModel(BegreussungenFreundlich.values());
    		comboModelFreundlichSchluss = new DefaultComboBoxModel(SchlussFreundlich.values());
    		comboModelOffiziellAnreden = new DefaultComboBoxModel(AnredenOffiziell.values());
    		comboModelOffiziellBegruessung = new DefaultComboBoxModel(BegreussungenOffiziell.values());
    		comboModelOffiziellSchluss = new DefaultComboBoxModel(SchlussOffiziell.values());
    		comboModelAlltäglichAnreden= new DefaultComboBoxModel(AnredenAlltäglich.values());
    		comboModelAlltäglichBegruessung= new DefaultComboBoxModel(BegreussungenAlltäglich.values());
    		comboModelAlltäglichSchluss= new DefaultComboBoxModel(SchlussAlltäglich.values());
    
    		//Componente Addieren
    		frame1.setLayout(new GridLayout(4,1));
    		panel1.setLayout(new FlowLayout());
    		panel2.setLayout(new GridLayout(2,1));
    		panel3.setLayout(new FlowLayout());
    		panel4.setLayout(new FlowLayout());
    		frame1.getContentPane().add(panel1);
    		frame1.getContentPane().add(panel2);
    		frame1.getContentPane().add(panel3);
    		frame1.getContentPane().add(panel4);
    		panel1.add(comboAnrede);
    		panel1.add(combobegruessung);
    		panel1.add(comboschluss);
    		panel1.add(comboredenSorten);
    		panel2.add(name);
    		panel2.add(inhalt);
    		panel3.add(texterstellen);
    		panel4.add(anzeigen);
    		///////////////////
    		this.texterstellen.addActionListener(this);
    		this.frame1.pack();
    		this.frame1.setVisible(true);	
    	}
    	public void actionPerformed(ActionEvent e) {
    
    		if(e.getSource()==this.comboredenSorten){
        	   String anredeAuswahl=(String)this.comboredenSorten.getSelectedItem();
        	   if(anredeAuswahl=="Offiziell"){
        			this.combobegruessung.setModel(comboModelOffiziellBegruessung);
        			this.comboschluss.setModel(comboModelOffiziellAnreden);
        			this.comboAnrede.setModel(comboModelOffiziellSchluss);
        			System.out.println("Offiziell");
        		}
        		else{
        			if(anredeAuswahl=="Alltäglich"){
        				this.combobegruessung.setModel(comboModelAlltäglichBegruessung);
        				this.comboschluss.setModel(comboModelAlltäglichSchluss);
        				this.comboAnrede.setModel(comboModelAlltäglichAnreden);
        				System.out.println("Alltäglich");
    
        			}
        			else{
        					this.combobegruessung.setModel(comboModelFreundlichBegruessung);
        					this.comboschluss.setModel(comboModelFreundlichSchluss);
        					this.comboAnrede.setModel(comboModelFreundlichAnreden);
        					System.out.println("Freundlich");	
        			}
        		}
           }
    		if(e.getSource()==this.texterstellen){
    			String comboboxBegruessung= this.combobegruessung.getSelectedItem().toString();
    			String comboboxAnrede=this.comboAnrede.getSelectedItem().toString();
    			String comboboxSchluss=this.comboschluss.getSelectedItem().toString();
    
    			System.out.println(comboboxBegruessung);
    			this.ausgabeText.append(comboboxBegruessung);
    			this.ausgabeText.append("   "+comboboxAnrede);
    			this.ausgabeText.append(this.name+",");
    			this.ausgabeText.append("\n\n\n");
    			this.ausgabeText.append(this.inhaltText);
    			this.ausgabeText.append("\n\n");
    			this.ausgabeText.append(comboboxSchluss);
    			this.anzeigen.setText(this.ausgabeText.toString());
    		}
        }
    	public void keyPressed(KeyEvent e)
    	{
    
    	} 
    	public void keyReleased(KeyEvent e)
    	{
    		if(e.getSource()==this.inhalt){
    			inhaltText=this.inhalt.getText();
    		}
    
    	} 
    	public void keyTyped(KeyEvent e)
    	{
    
    	} 
    	String getText(){
    		return this.inhaltText;
    	}
    	public static void main(String[] args) {
    
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				BriefSchreiben test=new BriefSchreiben();
    			}
    			});
    	}
    }
    

    Ein Problem liegt in der Zeile 133,da kriege ich den fehler NullPointerException aber ich weiß nicht wieso,eine Zeile Bevor habe ich System.out.println(comboboxBegruessung) geschrieben um zu prüfen ob dieser Strign leer oder nicht ist! und es wird ausgegeben aber eine zeile nachher dasselber String steht als null
    hat jemand eine idee??:(
    das Programms aufgabe ist einen formatierete brief auszugeben:)
    vielen dank für hilfen



  • *kurz den Code überblickt*
    comboboxBegruessung ist in Ordnung, this.ausgabeText wurde nicht initialisiert - und letzteres dürfte den Fehler verursachen



  • CStoll schrieb:

    *kurz den Code überblickt*
    comboboxBegruessung ist in Ordnung, this.ausgabeText wurde nicht initialisiert - und letzteres dürfte den Fehler verursachen

    danke:)
    also soll ich es mit this.ausgabeText=null;???? oder?



  • bafla13 schrieb:

    also soll ich es mit this.ausgabeText=null;???? oder?

    Mit NULL vorbelegt ist es doch schon - deswegen fliegt dir der Code ja um die Ohren. Wenn, dann solltest du es mit einem gültigen Objekt vorbelegen

    this.ausgabeText = new StringBuilder;
    

    PS: Hat es eigentlich einen Grund, warum du den StringBuilder in deiner Klasse unterbringst, obwohl er nur in der einen Funktion verwendet wird?



  • CStoll schrieb:

    bafla13 schrieb:

    also soll ich es mit this.ausgabeText=null;???? oder?

    Mit NULL vorbelegt ist es doch schon - deswegen fliegt dir der Code ja um die Ohren. Wenn, dann solltest du es mit einem gültigen Objekt vorbelegen

    this.ausgabeText = new StringBuilder;
    

    PS: Hat es eigentlich einen Grund, warum du den StringBuilder in deiner Klasse unterbringst, obwohl er nur in der einen Funktion verwendet wird?

    hehehe eigentlich schon;)dasselbe auch warum ich enums benutzt habe,weil das die aufgabe war:) mit enums und stringbuilder
    Vielen dank



  • bafla13 schrieb:

    ...
    hehehe eigentlich schon;)dasselbe auch warum ich enums benutzt habe,weil das die aufgabe war:) mit enums und stringbuilder
    Vielen dank

    schön, das jemand mal wieder seine Hausaufgaben nicht selbst lösen musste.

    Selbst Probleme lösen gefährdet die Dummheit, und Dummheit ist ja heutzutage cool. 🙄


Log in to reply