MrSvennie93
Gebruiker
- Lid geworden
- 23 sep 2011
- Berichten
- 101
Hallo,
Ik heb een arraylist van topics weggeschreven naar een object-file.
In dit overzicht vraag ik alle bedrijfsnamen op. Vervolgens wil ik de gegevens opvragen die bij dat bedrijf horen.
Dit gebeurt wanneer de actionlistener van comboBedrijf wordt geactiveerd.
De methode getPlaats() klopt, maar hij geeft een NullPointerException.
Iemand enig idee?
Ik heb een arraylist van topics weggeschreven naar een object-file.
In dit overzicht vraag ik alle bedrijfsnamen op. Vervolgens wil ik de gegevens opvragen die bij dat bedrijf horen.
Dit gebeurt wanneer de actionlistener van comboBedrijf wordt geactiveerd.
De methode getPlaats() klopt, maar hij geeft een NullPointerException.
Iemand enig idee?
Code:
package modelbouw;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
@SuppressWarnings({ "unchecked", "rawtypes" })
/* Copyright Sven van Walderveen, 6 jun. 2013 */
public class TopicOverzichtFrame extends JFrame {
private static final long serialVersionUID = 1L;
ActionListener a1 = new MyActionListener();
private JLabel bedrijfLabel, plaatsLabel;
private JComboBox comboBedrijf;
private JTextField txtPlaats;
private JPanel titelPanel, dataPanel, linksPanel, rechtsPanel, buttonPanel;
private JLabel titelLabel;
private JButton cmdHoofdmenu;
public TopicOverzichtFrame() {
setLayout(new BorderLayout());
Dimension buttonDimension = new Dimension(200, 50);
Dimension comboDimension = new Dimension(160,25);
Dimension dataDimension = new Dimension(330, 400);
Dimension rechtsPanelDimension = new Dimension(200, 400);
Dimension titelDimension = new Dimension(100,50);
Dimension tekstveldDimension = new Dimension(160,25);
Dimension windowDimension = new Dimension(800,500);
EmptyBorder dataBorder = new EmptyBorder(20, 20, 20, 20);
Font titelFont = new Font("Courier New", Font.PLAIN, 30);
Color panelColor = Color.LIGHT_GRAY;
//Titelpanel
titelPanel = new JPanel();
titelPanel.setBackground(panelColor);
titelPanel.setPreferredSize(titelDimension);
add(titelPanel, BorderLayout.NORTH);
titelLabel = new JLabel("Topic overzicht");
titelLabel.setFont(titelFont);
titelPanel.add(titelLabel);
//Datapanel
dataPanel = new JPanel();
dataPanel.setLayout(new BorderLayout());
dataPanel.setBorder(dataBorder);
add(dataPanel,BorderLayout.CENTER);
//Datapanel 1
linksPanel = new JPanel();
linksPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
linksPanel.setPreferredSize(dataDimension);
dataPanel.add(linksPanel, BorderLayout.WEST);
BufferedImage imgDataPart1 = null;
try {
imgDataPart1 = ImageIO.read(new File("afbeeldingen/logo-agterberg.gif"));
} catch (IOException e) {
e.printStackTrace();
}
JLabel imgDataPart1Label = new JLabel(new ImageIcon(imgDataPart1));
linksPanel.add(imgDataPart1Label);
rechtsPanel = new JPanel();
rechtsPanel.setBackground(Color.YELLOW);
rechtsPanel.setPreferredSize(rechtsPanelDimension);
dataPanel.add(rechtsPanel, BorderLayout.EAST);
bedrijfLabel = new JLabel("Bedrijf");
comboBedrijf = new JComboBox();
comboBedrijf.setPreferredSize(comboDimension);
comboBedrijf.addActionListener(a1);
File f = new File("topics.obj");
if(f.exists()) {
ArrayList<Topic> alleTopics = new ArrayList<Topic>();
try {
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
alleTopics = (ArrayList<Topic>) ois.readObject();
for(Topic t : alleTopics) {
comboBedrijf.addItem(t.getBedrijf());
}
ois.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
else {
comboBedrijf.removeAllItems();
comboBedrijf.addItem("Geen topics aanwezig");
}
plaatsLabel = new JLabel("Plaats");
txtPlaats = new JTextField();
txtPlaats.setPreferredSize(tekstveldDimension);
txtPlaats.setEditable(false);
rechtsPanel.add(bedrijfLabel);
rechtsPanel.add(comboBedrijf);
rechtsPanel.add(plaatsLabel);
rechtsPanel.add(txtPlaats);
buttonPanel = new JPanel();
buttonPanel.setLayout(new BorderLayout());
buttonPanel.setPreferredSize(titelDimension);
buttonPanel.setBackground(panelColor);
add(buttonPanel, BorderLayout.SOUTH);
cmdHoofdmenu = new JButton("Hoofdmenu");
cmdHoofdmenu.setPreferredSize(buttonDimension);
buttonPanel.add(cmdHoofdmenu, BorderLayout.WEST);
cmdHoofdmenu.addActionListener(a1);
setSize(windowDimension);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] arg){
@SuppressWarnings("unused")
TopicOverzichtFrame tof = new TopicOverzichtFrame();
}
class MyActionListener implements ActionListener {
@SuppressWarnings("unused")
public void actionPerformed(ActionEvent e) {
if(e.getSource() == comboBedrijf) {
//Geselecteerde bedrijf ophalen
String iBedrijf = comboBedrijf.getSelectedItem().toString();
//Andere gegevens ophalen
if(!iBedrijf.equals("Geen bedrijven aanwezig")) {
ArrayList<Topic> alleTopics = new ArrayList<Topic>();
File f = new File("topics.obj");
try {
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
alleTopics = (ArrayList<Topic>) ois.readObject();
ois.close();
if(alleTopics != null) {
for(Topic t : alleTopics) {
if(t.getBedrijf().equals(iBedrijf)) {
System.out.println("Bedrijf gevonden");
txtPlaats.setText(t.getPlaats()); //Hier geeft hij de error
break;
}
}
}
}
catch(Exception ioe) {
ioe.printStackTrace();
}
}
}
if(e.getSource() == cmdHoofdmenu) {
HoofdFrame hf = new HoofdFrame();
dispose();
}
}
}
}