jcombobox.getSelectedItem - nullpointerexception

JBerry

Mitglied
Seid gegrüsst

Ich habe JTextField gelöscht und wollte stattdessen eine JComboBox einsetzen.
Der Wert der hier zurückgeliefert wird ist ja ein Objekt und muss gemäss meinen Recherchen in einen String konvertiert werden damit ich schliesslich den String "media" verwenden kann.
eclipse bringt mir jedoch immer eine Fehlermeldung auf dieser zeile:
Java:
media = (String) getMedia.getSelectedItem();
Ich krieg immer eine Nullpointerexeption, was mir jedoch nicht ganz klar ist da ich nicht verstehe wieso das objekt noch nicht existieren soll. Dieses wird doch hier erstellt oder etwa nicht?
Java:
JComboBox getMedia = new JComboBox(auswahl);

Java:
import javax.swing.*;

public class MainGUI // implements ActionListener
{
	// int id, year;
	String id, year, title, genre, media, stopper; // Strings
	JButton button;
	private JTextField getID;
	private JTextField getTitle;
	private JTextField getGenre;
	private JTextField getYear;
	private JTextField getFilter;
	private JComboBox getMedia;
	private JTable tableMovies;
	private TableRowSorter<TableModel> movieSorter;
	private String[] auswahl = {"DVD", "BluRay"};


	/**
	 * @wbp.parser.entryPoint
	 */
	public static void main(String[] args) throws InstantiationException,

	IllegalAccessException, SQLException

	{

		MainGUI gui = new MainGUI();
		gui.los();

	}

	public void los() throws InstantiationException, IllegalAccessException,
			SQLException
	{

		JFrame frame = new JFrame("Filmverwaltung");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		frame.setBounds(100, 100, 640, 360);
		
		getID = new JTextField();
		getID.setBounds(100, 66, 114, 20);
		frame.getContentPane().add(getID);
		getID.setColumns(10);
		
		getTitle = new JTextField();
		getTitle.setBounds(100, 98, 114, 20);
		frame.getContentPane().add(getTitle);
		getTitle.setColumns(10);
		
		getGenre = new JTextField();
		getGenre.setBounds(100, 130, 114, 20);
		frame.getContentPane().add(getGenre);
		getGenre.setColumns(10);
		
		getYear = new JTextField();
		getYear.setBounds(100, 162, 114, 20);
		frame.getContentPane().add(getYear);
		getYear.setColumns(10);
		
		JComboBox getMedia = new JComboBox(auswahl);
		getMedia.setMaximumRowCount(2);
		getMedia.setBounds(100, 194, 114, 20);
		frame.getContentPane().add(getMedia);
		
		
		JLabel lblID = new JLabel("Nummer");
		lblID.setBounds(12, 68, 55, 16);
		frame.getContentPane().add(lblID);
		
		JLabel lblTitel = new JLabel("Titel");
		lblTitel.setBounds(12, 100, 55, 16);
		frame.getContentPane().add(lblTitel);
		
		JLabel lblGenre = new JLabel("Genre");
		lblGenre.setBounds(12, 132, 55, 16);
		frame.getContentPane().add(lblGenre);
		
		JLabel lblJahr = new JLabel("Jahr");
		lblJahr.setBounds(12, 164, 55, 16);
		frame.getContentPane().add(lblJahr);
		
		JLabel lblMedium = new JLabel("Medium");
		lblMedium.setBounds(12, 196, 55, 16);
		frame.getContentPane().add(lblMedium);
		
		JButton btnSpeichern = new JButton("speichern");
		btnSpeichern.setBounds(100, 229, 114, 20);
		frame.getContentPane().add(btnSpeichern);
		btnSpeichern.addActionListener(new SpeichernListener());
		
		JButton btnLoeschen = new JButton("l\u00F6schen");
		btnLoeschen.setBounds(100, 261, 114, 20);
		frame.getContentPane().add(btnLoeschen);
		btnLoeschen.addActionListener(new LoeschenListener());
		
		JSeparator separator = new JSeparator();
		separator.setOrientation(SwingConstants.VERTICAL);
		separator.setBackground(Color.BLACK);
		separator.setForeground(Color.BLACK);
		separator.setBounds(226, 49, 15, 241);
		frame.getContentPane().add(separator);
		
		JLabel lblNewLabel = new JLabel("Film: Erfassung & Editierung");
		lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 14));
		lblNewLabel.setBounds(12, 12, 202, 16);
		frame.getContentPane().add(lblNewLabel);
		
		JLabel Aktionen = new JLabel("weitere Aktionen");
		Aktionen.setFont(new Font("Dialog", Font.BOLD, 14));
		Aktionen.setBounds(244, 13, 141, 16);
		frame.getContentPane().add(Aktionen);
		
		JButton btnFilmliste = new JButton("Filmliste - neues Fenster");
		btnFilmliste.setBounds(253, 290, 280, 20);
		frame.getContentPane().add(btnFilmliste);
		
		getFilter = new JTextField();
		getFilter.setBounds(253, 66, 170, 20);
		frame.getContentPane().add(getFilter);
		getFilter.setColumns(10);
		
		JButton btnFilter = new JButton("Filter");
		btnFilter.setBounds(435, 66, 98, 20);
		frame.getContentPane().add(btnFilter);
		btnFilter.addActionListener(new FilterActionListener());
		
		JScrollPane scrollPaneMovies = new JScrollPane();
		scrollPaneMovies.setBounds(253, 98, 280, 180);
		frame.getContentPane().add(scrollPaneMovies);
		
		tableMovies = new JTable();
		TableModel MovieTableModel = new MovieTableModel();
		((ch.haag.Start.MovieTableModel) MovieTableModel).dataselect();
		tableMovies.setModel(MovieTableModel);
		movieSorter = new TableRowSorter<TableModel>(MovieTableModel);
		tableMovies.setRowSorter(movieSorter);
		scrollPaneMovies.setViewportView(tableMovies);
		

		frame.setVisible(true);
		
		btnFilmliste.addActionListener(new FilmlisteListener());
		
		//copy
		//JScrollPane scrollPaneContacts = new JScrollPane();
		//contentPane.add(scrollPaneContacts, BorderLayout.CENTER);
		
		//tableContacts = new JTable();
		//TableModel MovieTableModel = new MovieTableModel();
		//((ch.haag.Start.MovieTableModel) MovieTableModel).dataselect();
		//tableContacts.setModel(MovieTableModel);
		//contactSorter = new TableRowSorter<TableModel>(MovieTableModel);
		//tableContacts.setRowSorter(contactSorter);
		//scrollPaneContacts.setViewportView(tableContacts);
		
		//panelFilter = new JPanel();
		//contentPane.add(panelFilter, BorderLayout.NORTH);
		//panelFilter.setLayout(new MigLayout("", "[][5][grow][]", "[][5]"));
		//copy
	}
		
		class SpeichernListener implements ActionListener
		{
			public void actionPerformed(ActionEvent event)
			{
				Connection con = null;
				try
				{
					Statement stmt;
					Class.forName("com.mysql.jdbc.Driver").newInstance();
					con = DriverManager.getConnection(
							"jdbc:mysql://localhost/movies", "root", "");
					stmt = con.createStatement(); // Generiert ein Object vom
													// Typ
													// Statement

					id = getID.getText();
					title = getTitle.getText();
					genre = getGenre.getText();
					year = getYear.getText();
					media = (String) getMedia.getSelectedItem();


					
					stmt.executeUpdate("INSERT INTO movies(id,title,genre,year,media) VALUES('"
							+ id
							+ "','"
							+ title
							+ "','"
							+ genre
							+ "','"
							+ year
							+ "','" + media + "')");

				} catch (SQLException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InstantiationException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (ClassNotFoundException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally
				{
					try
					{
						if (con != null)
							con.close();
					} catch (SQLException e)
					{
					}
				}



			}
		}

		class LoeschenListener implements ActionListener
		{
			public void actionPerformed(ActionEvent event)
			{
				Connection con = null;
				try
				{
					Statement stmt;
					Class.forName("com.mysql.jdbc.Driver").newInstance();
					con = DriverManager.getConnection(
							"jdbc:mysql://localhost/movies", "root", "");
					stmt = con.createStatement(); // Generiert ein Object vom
													// Typ
													// Statement

					id = getID.getText();
					stmt.executeUpdate("DELETE FROM movies WHERE id = '" + id
							+ "'");

				} catch (SQLException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InstantiationException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (ClassNotFoundException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally
				{
					try
					{
						if (con != null)
							con.close();
					} catch (SQLException e)
					{
					}

				}

			}
		}
		
		class FilmlisteListener implements ActionListener
		{
			public void actionPerformed(ActionEvent event)
			{


				// block new listenansicht
				{
					EventQueue.invokeLater(new Runnable()
					{
						public void run()
						{
							try
							{
								MovieListNewFrame frame = new MovieListNewFrame();
								frame.setVisible(true);
							} catch (Exception e)
							{
								e.printStackTrace();
							}
						}
					});
				}
				// block fertig

			}
		}
		
		class FilterActionListener implements ActionListener {

			@Override
			public void actionPerformed(ActionEvent e)
			{
			
			String filterText = getFilter.getText();	
			if(filterText == null || filterText.length() == 0) {
				movieSorter.setRowFilter(null);
			}
			try {	
			movieSorter.setRowFilter(RowFilter.regexFilter(filterText));
			} catch(PatternSyntaxException ex) {
				getFilter.setText("Falsche Eingabe");
			}
			
			}
			
		}
}
 

Michael...

Top Contributor
Ich krieg immer eine Nullpointerexeption, was mir jedoch nicht ganz klar ist da ich nicht verstehe wieso das objekt noch nicht existieren soll. Dieses wird doch hier erstellt oder etwa nicht?
Hier liegt ein klassischer Anfängerfehler vor. (Vielleicht sollte man mal so eine FAQ für Anfängerfehler machen...)

Deine Klasse besitzt zwei Variablen mit dem Namen
Code:
getMedia
(übrigens ein komischer Name für eine Comboboxvariable)
Einmal eine Instanzvariable (Zeile 13) und eine lokale nur im Konstruktor gültige Variable (Zeile 62). Hier muss eigentlich die Instanzvariable initialisiert werden, stattdessen wird hier eine neue Variable deklariert. Der Listener hat allerdings nur Zugriff auf die (nicht initialisierte) Instanzvariable ==> NPE

Kurz, statt:
Java:
JComboBox getMedia = new JComboBox(auswahl);
einfach:
Java:
getMedia = new JComboBox(auswahl);
Hoffe der Unterschied ist klar.
 

JBerry

Mitglied
das ging ja schnell. Vielen Dank!
Anfängerfehler - kann ich dir nur zustimmen. Hab erst am Montag angefangen Java zu programmieren und habe sonst keine Programmiererfahrung. Bin aber bisher ganz zufrieden mit den erreichten Resultaten.
 

faetzminator

Gesperrter Benutzer
Öhm, du programmierst seit einer Woche und beschäftigst dich mit GUIs und Datenbankanbindungen? Da sieht man wieder mal, was das Resultat ist... Ich will nicht meckern, aber wenn ich dich wär, würde ich mit kleinen konsolenbasierten Programmen beginnen, bis OOP etc. drin ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
M JComboBox ersten Eintrag leerlassen bzw. Platzhalter Java Basics - Anfänger-Themen 1
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
H JComboBox wird nicht angezeigt Java Basics - Anfänger-Themen 3
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
T Einträge in jComboBox aus Liste übernehmen Java Basics - Anfänger-Themen 1
T Auslesen mehrerer jComboBox (-en) Java Basics - Anfänger-Themen 4
H JCombobox Java Basics - Anfänger-Themen 1
D JComboBox duplizieren Java Basics - Anfänger-Themen 2
T jComboBox Java Basics - Anfänger-Themen 9
GadgetSofa jComboBox mit dem Button verbinden. Aber wie?? Java Basics - Anfänger-Themen 4
A GUI Absturz nach 3x benutzen einer JComboBox Java Basics - Anfänger-Themen 11
S Erste Schritte JComboBox Java Basics - Anfänger-Themen 1
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
T Datentypen Jcombobox Array Java Basics - Anfänger-Themen 1
J JComboBox in andere Klasse Java Basics - Anfänger-Themen 2
S Variablen auslesen beim JCombobox Java Basics - Anfänger-Themen 0
K JCombobox Eclipse Java Basics - Anfänger-Themen 7
D JComboBox erzeugen Java Basics - Anfänger-Themen 1
T JComboBox Java Basics - Anfänger-Themen 3
B ArrayLists in JCombobox Java Basics - Anfänger-Themen 10
M JComboBox und ItemListener/ItemEvent Problem Java Basics - Anfänger-Themen 3
M JComboBox Auswahl Java Basics - Anfänger-Themen 10
N Compiler-Fehler JComboBox DefaultListCellRenderer Java Basics - Anfänger-Themen 2
J JComboBox - Auswahl auslesen Java Basics - Anfänger-Themen 2
C JComboBox setSelectedItem(Object) Problem Java Basics - Anfänger-Themen 5
M JComboBox Obergrenzen/Untergrenze festlegen? Java Basics - Anfänger-Themen 5
B JComboBox(editable) Java Basics - Anfänger-Themen 6
K JComboBox hat volle Höhe uber das gesamte JPane, warum? Java Basics - Anfänger-Themen 2
S JComboBox mit ArrayList füllen Java Basics - Anfänger-Themen 7
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
S JComboBox füllen Java Basics - Anfänger-Themen 9
C JComboBox Java Basics - Anfänger-Themen 9
R Auf auswahl in ner JComboBox reagieren Java Basics - Anfänger-Themen 3
T Frage zu JComboBox Java Basics - Anfänger-Themen 6
G JComboBox wird nicht gezeichnet Java Basics - Anfänger-Themen 3
N JComboBox mit Dateinamen befüllen Java Basics - Anfänger-Themen 7
M JComboBox => Item String => Color Java Basics - Anfänger-Themen 2
StrikeTom Editable JComboBox + enter Wie??? Java Basics - Anfänger-Themen 3
J JComboBox Listener Java Basics - Anfänger-Themen 6
F Werte aus JComboBox auslesen und Zahlen zuordnen Java Basics - Anfänger-Themen 5
S JComboBox Platzhalter Java Basics - Anfänger-Themen 7
J jComboBox auf default setzen wie? Java Basics - Anfänger-Themen 3
J daten über jComboBox ausgeben wie? Java Basics - Anfänger-Themen 2
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
E JComboBox Java Basics - Anfänger-Themen 4
J jComboBox.getSelectedIndex() Java Basics - Anfänger-Themen 8
J Funktion Auslösen über JComboBox Java Basics - Anfänger-Themen 2
T JComboBox klappt nur ein- bis zweimal auf Java Basics - Anfänger-Themen 30
S Kein Event bei Click auf JComboBox Java Basics - Anfänger-Themen 4
Developer_X JComboBox getSelectedFilè??? Java Basics - Anfänger-Themen 4
T Daten eines Ordners in JCombobox anzeigen Java Basics - Anfänger-Themen 5
M Einträge in JComboBox farblich hinterlegen? Java Basics - Anfänger-Themen 2
6 Dritte JComboBox in Abhaengigkeit von zwei vorherigen Java Basics - Anfänger-Themen 4
G 2. JComboBox in Abhängigkeit der 1. JCombobox füllen Java Basics - Anfänger-Themen 2
S Problem mit JComboBox Java Basics - Anfänger-Themen 9
H jcombobox mit nur einem Item Java Basics - Anfänger-Themen 7
G Inhalt einer JComboBox wechseln Java Basics - Anfänger-Themen 5
G Problem mit JComboBox Java Basics - Anfänger-Themen 15
G JComboBox Strukturiert anzeigen Java Basics - Anfänger-Themen 6
Schandro Hotkeys bei JComboBox abschalten Java Basics - Anfänger-Themen 3
G JComboBox soll beim Öffnen eine andere JCB öffnen Java Basics - Anfänger-Themen 2
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
G JComboBox - BasicComboPopup Java Basics - Anfänger-Themen 4
S Inhalt der JComboBox vergrößtert die JCB ? Java Basics - Anfänger-Themen 2
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
mwildam JComboBox FocusGained feuert nicht wenn editable Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
S Jcombobox und 2maliges anzeigen wegen ItemStateChanged? Java Basics - Anfänger-Themen 3
W setModel feuert ActionEvent bei JComboBox Java Basics - Anfänger-Themen 2
G Frage zu JComboBox Java Basics - Anfänger-Themen 2
W Actionlistener oder Itemlistener bei JCombobox ? Java Basics - Anfänger-Themen 4
G JComboBox Java Basics - Anfänger-Themen 7
G JComboBox macht Probleme Java Basics - Anfänger-Themen 7
G JComboBox alphabetisch sortieren Java Basics - Anfänger-Themen 2
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
G JComboBox um eine Methode erweitern Java Basics - Anfänger-Themen 2
G jcombobox deaktivieren Java Basics - Anfänger-Themen 4
M Werte aus Jcombobox sollten als int-Werte zurück gegeben . Java Basics - Anfänger-Themen 7
D Items in JComboBox überprüfen Java Basics - Anfänger-Themen 3
G JComboBox zweckentfremden ? Java Basics - Anfänger-Themen 5
N JCombobox Pfeil nach unten bild auf linke seite, geht das? Java Basics - Anfänger-Themen 8
T JComboBox Problem Java Basics - Anfänger-Themen 4
D JComboBox titel Java Basics - Anfänger-Themen 16
M füllen JComboBox funktioniert nicht Java Basics - Anfänger-Themen 11
J JCombobox Item auswählen Java Basics - Anfänger-Themen 13
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
dercheffe 3x jcombobox nacheinander füllen Java Basics - Anfänger-Themen 6
J Inhalt der JComboBox variable Java Basics - Anfänger-Themen 2
O JComboBox Item soll sich als String speichern Java Basics - Anfänger-Themen 5
D JComboBox ohne ItemListener Java Basics - Anfänger-Themen 18
B unvollständige Anzeige von JComboBox Werten Java Basics - Anfänger-Themen 5
G JComboBox gibt SelectedItem immer doppelt aus Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben