Hallo,
ich probier gerade Namen aus einer Datenbank auszulesen und bekomme eine NullPointerException.
Aufbau:
- 3-Schichten-Architektur mit DB-Anbindung
Klassen:
- DB_Order
- PD_Order
- GUI_OrderHead mit Button Suchen und Textfeldern für Namen
- GUI_OrderHandler
- GUI_Start
Der Handler wirft immer eine NullPointerException aus. Der Code sieht folgendermaßen aus.
Die Klasse mit dem Handler ...
Aus der folgenden Klasse wird alles vorerst gestartet...
Ich kann mir die folgende Exception nicht erklären, da die Textfelder doch vorhanden sind.
Suchen Button betätigt!
java.lang.NullPointerException
at accounting.ui.GUI_OrderHandler.setCustomerTextfields(GUI_OrderHandler.java:128)
at accounting.ui.GUI_OrderHandler.actionPerformed(GUI_OrderHandler.java:46)
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)
Hat einer eine Idee? Ich sitze schon seit 2 Tage an dem Problem und habe verschiedene Sachen probiert. Die Positionen sollen dann natürlich auch noch aktualisert werden, aber ich brauche unbedingt einen vernünftigen Ansatz.
ich probier gerade Namen aus einer Datenbank auszulesen und bekomme eine NullPointerException.
Aufbau:
- 3-Schichten-Architektur mit DB-Anbindung
Klassen:
- DB_Order
- PD_Order
- GUI_OrderHead mit Button Suchen und Textfeldern für Namen
- GUI_OrderHandler
- GUI_Start
Der Handler wirft immer eine NullPointerException aus. Der Code sieht folgendermaßen aus.
Java:
public class GUI_OrderHead extends JPanel {
JTextField tf_orderNr;
JLabel lb_customerName;
JTextField tf_customerName;
JButton bt_Search;
public GUI_OrderHead()
{
int tf_height = 20;
int lb_height = 15;
int tflb_leftalign = 10;
lb_windowTitle = new JLabel("Kundendaten zu Auftrag :");
lb_windowTitle.setBounds(10,10,150,lb_height);
tf_orderNr = new JTextField();
tf_orderNr.setText("1");
tf_orderNr.setBounds(140, 5, 85, tf_height);
lb_customerName = new JLabel("Nachname");
lb_customerName.setBounds(125, 90, 100, lb_height);
tf_customerName = new JTextField();
tf_customerName.setEditable(false);
tf_customerName.setBounds(125, 105, 100, tf_height);
bt_Search = new JButton("Auswählen");
bt_Search.setBounds(270,100,100,25);
// Ereignisbehandlung
GUI_OrderHandler gui_OrderHandler = new GUI_OrderHandler();
bt_Search.addActionListener(gui_OrderHandler);
JPanel pn_OrderHead = new JPanel();
pn_OrderHead.setLayout(null);
pn_OrderHead.setSize(480, 280);
pn_OrderHead.setVisible(true);
pn_OrderHead.add(lb_windowTitle);
pn_OrderHead.add(tf_orderNr);
pn_OrderHead.add(lb_customerName);
pn_OrderHead.add(tf_customerName);
pn_OrderHead.add(bt_Search);
}
public Component getPanelOrderHead() // Zum aufrufen in der Startklasse oder geht's anders?
{
JPanel pn_OrderHead = new JPanel();
pn_OrderHead.setLayout(null);
pn_OrderHead.setSize(480, 280);
pn_OrderHead.setVisible(true);
pn_OrderHead.add(lb_customerName);
pn_OrderHead.add(tf_customerName);
pn_OrderHead.add(bt_Search);
return pn_OrderHead;
}
}
Die Klasse mit dem Handler ...
Java:
public class GUI_OrderHandler implements WindowListener, ActionListener{
private GUI_OrderHead gui_OrderHead;
private GUI_OrderPosition gui_OrderPosition;
private PD_Order pd_Order;
public GUI_OrderHandler()
{
this.pd_Order = pd_Order;
this.gui_OrderHead = gui_OrderHead;
this.gui_OrderPosition = gui_OrderPosition;
}
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Suchen"))
{
System.out.println("Suchen Button betätigt!");
try
{
setCustomerTextfields(1);
// GUI_OrderPositionTableModel optm = new GUI_OrderPositionTableModel(pd_Order.getAllOrderPositions(2));
// optm.fireTableDataChanged();
// GUI_OrderPosition(pd_Order.getAllOrderPositions(2));
// System.out.println(gui_OrderHead.tf_orderNr.getText());
// setCustomerTextfields(1);
int orderNrInt = Integer.valueOf(gui_OrderHead.tf_orderNr.getText());
setCustomerTextfields(1);
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
}
@Override
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
@Override
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void setCustomerTextfields(int orderNr) throws Exception
{
Customer orderCustomer = pd_Order.getOrderCustomer(orderNr); //Datenbankabfrage funktioniert, abe trotzdem Fehlermeldung wohl hier!
gui_OrderHead.tf_customerName.setText(orderCustomer.getCustomerName());
}
}
Aus der folgenden Klasse wird alles vorerst gestartet...
Java:
public class GUI_Order extends JFrame {
PD_Order pd_Order = new PD_Order();
GUI_OrderHandler gui_orderHandler = new GUI_OrderHandler();
GUI_Order() throws Exception
{
HashMap <Integer, OrderPosition> orderPositions = pd_Order.getAllOrderPositions(1);
addWindowListener(gui_orderHandler);
GUI_OrderHead gui_OrderHead = new GUI_OrderHead();
GUI_OrderPosition gui_OrderPosition = new GUI_OrderPosition();
Container cp = getContentPane();
cp.setLayout(null);
cp.setPreferredSize(new Dimension(800,600));
cp.add(gui_OrderHead.getPanelOrderHead());
cp.add(gui_OrderPosition.getPanelOrderposition());
pack();
}
}
Suchen Button betätigt!
java.lang.NullPointerException
at accounting.ui.GUI_OrderHandler.setCustomerTextfields(GUI_OrderHandler.java:128)
at accounting.ui.GUI_OrderHandler.actionPerformed(GUI_OrderHandler.java:46)
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)
Hat einer eine Idee? Ich sitze schon seit 2 Tage an dem Problem und habe verschiedene Sachen probiert. Die Positionen sollen dann natürlich auch noch aktualisert werden, aber ich brauche unbedingt einen vernünftigen Ansatz.
Zuletzt bearbeitet: