Hi,
ich bin neu im Forum, weshalb ich mich kurz vorstelle: Ich habe neben meinem Job damit begonnen, Java zu lernen. Nach einigen Tutorials arbeite ich an meinem ersten Projekt.
Entwicklungsumgebung: Eclipse 3.3.2
Betriebssystem Win XP
SDK jdk1.6.0_01
Projekt
Ich verwende drei Klassen: Resource, Gui, b2b, in letzterer befindet sich die main() Methode. Für das Event Handling besitzt die Klasse Gui eine innere Klasse HandlerClass.
Beim Starten wird im Gui eine Instanz der Klasse Resource erzeugt, deren Felder abhängig der Eingaben in der Gui geändert werden sollen, wenn ein Button "Save-holtitel" geklickt wird.
Problem
Klick auf den Button liefert eine NullPointerException.
Lösungsversuch
Instantiieren des Resourcenobjekts innerhalb der Handlerklasse funktioniert ohne Exception, allerdings will ich nicht jedes Mal ein neues Objekt erzeugen, sondern _eine_ Instanz bearbeiten ;-)
Ich würde mich über freuen, wenn mir ein Forist meinen Fehler und die Lösung sagt.
ich bin neu im Forum, weshalb ich mich kurz vorstelle: Ich habe neben meinem Job damit begonnen, Java zu lernen. Nach einigen Tutorials arbeite ich an meinem ersten Projekt.
Entwicklungsumgebung: Eclipse 3.3.2
Betriebssystem Win XP
SDK jdk1.6.0_01
Projekt
Ich verwende drei Klassen: Resource, Gui, b2b, in letzterer befindet sich die main() Methode. Für das Event Handling besitzt die Klasse Gui eine innere Klasse HandlerClass.
Beim Starten wird im Gui eine Instanz der Klasse Resource erzeugt, deren Felder abhängig der Eingaben in der Gui geändert werden sollen, wenn ein Button "Save-holtitel" geklickt wird.
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.Insets;
import javax.swing.*;
import javax.swing.event.*;
import java.util.Date;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
public class Gui extends JFrame{
private JTextField title;
private JTextArea description;
private JTextField keywords;
private JTextField creator;
private JComboBox typeBox;
private JList domain;
private JButton savebutton;
private JButton appendbutton;
private JButton exitbutton;
private JLabel Title;
private JLabel Description;
private JLabel TheDate;
private JLabel TheType;
private JLabel Creator;
private JLabel Type;
private JLabel Subjects;
private JLabel Format;
private Color colr;
private String date;
private String[] types;
public Resource res;
public Gui(){
super("brain2brain");
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.insets = new Insets(10,10,10,10);
//colr = new Color(20,150,250,100);
colr = new Color(255,255,255,255);
getContentPane().setBackground(colr);
// MenuBar
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("first one");
menuBar.add(menu1);
JMenuItem menuItem1 = new JMenuItem("1st item");
menu1.add(menuItem1);
JMenuItem menuItem2 = new JMenuItem("2nd item");
menu1.add(menuItem2);
JMenu menu2 = new JMenu("second one");
menuBar.add(menu2);
JMenuItem menuItem3 = new JMenuItem("1st item, 2nd menu");
menu2.add(menuItem3);
this.setJMenuBar(menuBar);
// GUI Elements
TheDate = new JLabel("Date");
c.gridx = 0;
c.gridy = 0;
add(TheDate,c);
Date stamp = new Date();
date = stamp.toString();
TheDate = new JLabel(date);
c.gridx = 1;
c.gridy = 0;
add(TheDate,c);
TheType = new JLabel("Type");
c.gridx = 0;
c.gridy = 1;
add(TheType,c);
String[] types = {"Idea", "Problem", "Resource"};
typeBox = new JComboBox(types);
typeBox.setSelectedIndex(1);
c.gridx = 1;
c.gridy = 1;
add(typeBox,c);
Creator = new JLabel("Creator");
c.gridx = 0;
c.gridy = 4;
add(Creator,c);
creator = new JTextField(20);
c.gridx = 1;
c.gridy = 4;
add(creator,c);
Title = new JLabel("Title");
c.gridx = 0;
c.gridy = 2;
add(Title,c);
title = new JTextField(20);
c.gridx = 1;
c.gridy = 2;
add(title,c);
Description = new JLabel("Description");
description = new JTextArea("Please put your description here",5,20);
JScrollPane scrollPane = new JScrollPane(description);
c.gridx = 0;
c.gridy = 3;
add(Description,c);
c.gridx = 1;
c.gridy = 3;
add(scrollPane,c);
appendbutton = new JButton("Append");
c.gridx = 0;
c.gridy = 5;
add(appendbutton,c);
savebutton = new JButton("Save - holtitel");
c.gridx = 1;
c.gridy = 5;
add(savebutton,c);
exitbutton = new JButton("Exit");
c.gridx = 2;
c.gridy = 5;
add(exitbutton,c);
// Action Listener für die GUI-Elemente
HandlerClass handler = new HandlerClass();
title.addActionListener(handler);
typeBox.addItemListener(handler);
savebutton.addActionListener(handler);
appendbutton.addActionListener(handler);
exitbutton.addActionListener(handler);
Resource res = new Resource("initial_title", "initial_description", "initial_type", "initial_keyword", "initial_domain");
}
public class HandlerClass implements ActionListener, ItemListener{
public void actionPerformed(ActionEvent evt){
System.out.println(date);
String typeName = (String)typeBox.getSelectedItem();
String titletext = title.getText();
String desctext = description.getText();
String creatext = creator.getText();
if(evt.getSource() == savebutton){
//Resource res = new Resource("initial_title", "initial_description", "initial_type", "initial_keyword", "initial_domain");
System.out.println(res);
String titext = title.getText();
res.setDescription(titletext);
String restitle = res.getTitle();
System.out.println("restitle " + restitle);
System.out.println("type " + typeName);
}
else if (evt.getSource() == appendbutton){
System.out.println("Append Button geklickt");
}
else if (evt.getSource() == exitbutton){
System.out.println("Exit Button geklickt");
}
}
public void itemStateChanged(ItemEvent ievt){
System.out.println(ItemEvent.SELECTED);
}
}
}
Problem
Klick auf den Button liefert eine NullPointerException.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
null
at Gui$HandlerClass.actionPerformed(Gui.java:193)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Lösungsversuch
Instantiieren des Resourcenobjekts innerhalb der Handlerklasse funktioniert ohne Exception, allerdings will ich nicht jedes Mal ein neues Objekt erzeugen, sondern _eine_ Instanz bearbeiten ;-)
Ich würde mich über freuen, wenn mir ein Forist meinen Fehler und die Lösung sagt.