Hallo,
hab ne GUI Klasse in der ich zwei Buttons implementiert habe. mit dem Button prüfung abschließen möchte ich meine Variablen Inhalte in eine Access Datenbank laden.
aber irgendwie funktioniert das nicht!
nach dem ich auf den Button prüfung abschließen geklickt hab, bringt mir der Compiler folgende Fehlermeldungen:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at getATR.GUI_ATR$2.actionPerformed(GUI_ATR.java:156)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
blick da irgendwie nicht mehr durch
ach ja, hier noch mein Code:
gruß
hab ne GUI Klasse in der ich zwei Buttons implementiert habe. mit dem Button prüfung abschließen möchte ich meine Variablen Inhalte in eine Access Datenbank laden.
aber irgendwie funktioniert das nicht!
nach dem ich auf den Button prüfung abschließen geklickt hab, bringt mir der Compiler folgende Fehlermeldungen:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at getATR.GUI_ATR$2.actionPerformed(GUI_ATR.java:156)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
blick da irgendwie nicht mehr durch
ach ja, hier noch mein Code:
Java:
package getATR;
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MainKlasse {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI_ATR frame = new GUI_ATR();
frame.setVisible(true);
// -------- Datenanbindung --------- //
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager
.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)}"
+ ";DBQ=C:/Dokumente und Einstellungen/xyz/Desktop/"
+ "Datenbank_Test.mdb");
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Java:
package getATR;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.smartcardio.CardException;
import javax.swing.*;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class GUI_ATR extends JFrame{
// Meine Button
public static JButton daten_pruefen = new JButton("<html>Daten<br>pruefen</html>");
public static JButton pruefung_abschließen = new JButton("<html>Pruefung<br>abschliessen</html>");
public static JLabel lblKartennr = new JLabel("* Karten-Nr.:");
public static JFormattedTextField txtFKartennr = new JFormattedTextField();
// das hier ist neu:
public static String blabla = null;
public static String b = "346";
public static String c = "456";
private Connection con;
public static JTextArea textArea = new JTextArea();
private final JScrollPane scrollPane = new JScrollPane();
static File f;
static String path_f;
static int returnVal;
public GUI_ATR() {
setTitle("TEST");
this.setVisible(true);
setSize(1010, 532);
setLocation(150, 100);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
// Daten prüfen Button
panel.add(daten_pruefen);
daten_pruefen.setSize(70, 35);
daten_pruefen.setLocation(5, 5);
// Prüfung abschließen Button
panel.add(pruefung_abschließen);
pruefung_abschließen.setSize(95, 35);
pruefung_abschließen.setLocation(350, 5);
// Karten-Nr.:
lblKartennr.setBounds(458, 259, 81, 14);
panel.add(lblKartennr);
lblKartennr.setVisible(false);
txtFKartennr.setBounds(579, 256, 100, 20);
panel.add(txtFKartennr);
txtFKartennr.setDocument(new FixedSizeDocument(6));
txtFKartennr.setVisible(false);
// Text Area
scrollPane.setBounds(5, 45, 440, 455);
panel.add(scrollPane);
scrollPane.setViewportView(textArea);
addWindowListener(new meinWindowListener());
/////////////////////////////////////////////////
// Daten prüfen Button
/////////////////////////////////////////////////
daten_pruefen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
open_terminal();
karteninhalt_auslesen.init_log_command_list();
if (e.getSource() == daten_pruefen) {
gui_leeren();
open_terminal();
if (Connect_Terminal.isTerminal_present() == true) {
open_card();
if (Connect_Card.isCard_present() == true) {
lblKartennr.setVisible(true);
txtFKartennr.setVisible(true);
String inhalt = txtFKartennr.getText();
System.out.println(inhalt);
init_osVersion();
try {
//Karteninhalt ausgeben
karteninhalt_auslesen.ausgabe_auswahl();
} catch (CardException e1) {
e1.printStackTrace();
}
} else {
GUI_ATR.textArea.append("Keine Karte vorhanden");
}
} else {
GUI_ATR.textArea.append("Chipkartenleser ist nicht eingesteckt");
}
}
}
});
/////////////////////////////////////////////////
// Prüfung abschließen Button
/////////////////////////////////////////////////
pruefung_abschließen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if (e.getSource() == pruefung_abschließen) {
open_terminal();
blabla = txtFKartennr.getText();
System.out.println("Hier der Inhalt: " +blabla );
gui_leeren();
GUI_ATR.textArea.append("...Formular geleert!");
try {
con.createStatement().executeUpdate("INSERT INTO Tabelle1 (ATC,Chipkartennummer,Kurz_BLZ) VALUES ('" + blabla + "','" + b + "','" + c + "') ");
con.close();
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}
});
}
public void gui_leeren(){
// um mein Textfeld zu leeren
textArea.setText("");
lblKartennr.setVisible(false);
txtFKartennr.setVisible(false);
txtFKartennr.setText("");
}
public static void init_osVersion() {
Inhalt_ATR.init_ATR();
Inhalt_ATR.convert_atr();
Inhalt_ATR.init_all_Maps();
Inhalt_ATR.set_all_Variables();
}
public static void open_terminal() {
Connect_Terminal.create_factory();
try {
Connect_Terminal.create_terminals(0);
} catch (CardException e2) {
textArea.append(e2.toString());
} catch (Exception e2) {
textArea.append(e2.toString());
}
}
public static void open_card() {
try {
Connect_Card.newCard();
} catch (CardException e1) {
GUI_ATR.textArea.append(e1.toString());
}
}
public static void File_chooser() throws IOException {
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
returnVal = fc.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
setF(fc.getSelectedFile());
setPath_f(f.getPath());
}
}
public static File getF() {
return f;
}
public static void setF(File f) {
GUI_ATR.f = f;
}
public static String getPath_f() {
return path_f;
}
public static void setPath_f(String path_f) {
GUI_ATR.path_f = path_f;
}
public class meinWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent a) {
System.exit(0);
}
}
}
/*
* extra Klasse, um in den Eingabefelder in der Manuellen Eingabe die Länge zu kontrollieren
* Bsp.: im Feld Kartennummer sollen nur die ersten sechs Ziffern eingegeben werden
*/
class FixedSizeDocument extends PlainDocument {
private int max = 6;
public FixedSizeDocument(int max) {
this.max = max;
}
public void insertString(int offs, String str, AttributeSet attr)
throws BadLocationException {
if (str != null) {
if (isInt(str) == true) {
if (getLength() + str.length() > max) {
str = str.substring(0, max - getLength());
}
super.insertString(offs, str, attr);
}
}
}
public boolean isInt(String s) {
try {
Integer.parseInt(s);
return true;
} catch (Exception e) {
return false;
}
}
}
gruß
Zuletzt bearbeitet: