Hi,
ich schreibe seit einiger Zeit an einem Programm und habe mich in den letzten paar Tagen irgendwie total in einen Fehler reingerannt.
Ich schreibe erst den Programmcode rein und werde dann das Problem erläutern.
(ich arbeite mit Eclipse)
Wenn ich mein Programm starte, hängt es sich in der Funktion 'DateiInfoInVariabeln();' auf. Dabei geht es um das abrufen des Textes aus dem Jtextfield 'tfName'.
Es entsteht folgende Fehlermeldung in der Konsole:
Ich weiß nicht wie ich den Fehler beheben kann. Hab schon viel probiert. Ich muss es aber mit einer Funktion machen, da es um mehrere Variablen geht und ich diese mehrmals abspeichern können muss. Die Funktion vereinfacht somit die Sache (wenn sie funktionieren würde).
Schon mal Danke
Nick
ich schreibe seit einiger Zeit an einem Programm und habe mich in den letzten paar Tagen irgendwie total in einen Fehler reingerannt.
Ich schreibe erst den Programmcode rein und werde dann das Problem erläutern.
(ich arbeite mit Eclipse)
Java:
public class V_02_10 extends JFrame {
private String stringDateiInfo[] = new String[4];
private JFrame frmNB;
private CardLayout Cards;
private JPanel panelNeueDateiErstellen;
private JButton btWeiter;
private JTextField tfName;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
V_02_10 frame = new V_02_10();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private V_02_10() {
frmNB = new JFrame(); //hier erstell ich den Frame
frmNB.setSize(screenSize.width, screenSize.height);
frmNB.setExtendedState(JFrame.MAXIMIZED_BOTH);
frmNB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmNB.setResizable(false);
frmNB.getContentPane().setLayout(new BorderLayout(0, 0));
initializeNeueDateiErstellen(); //hier initiiere ich das erste Panel, habe die anderen weggelassen zum vereinfachen
frmNB.setVisible(true);
cards.show(cardPanel, "panelMenue");
}
public void initializeNeueDateiErstellen(){
cards = new CardLayout(); //hier wird ein CardLayout erstellt in dem die Panels aufgerufen werden
cardPanel = new JPanel(); //hier erstell ich dann das Panel und füg es 'cards' hinzu
frmNB.getContentPane().add(cardPanel, BorderLayout.CENTER);
cardPanel.setLayout(cards);
JPanel panelNeueDateiErstellen = new JPanel(); //hier erstell ich das Panel
cardPanel.add(panelNeueDateiErstellen, "panelNeueDateiErstellen");
panelNeueDateiErstellen.setLayout(null);
JTextField tfName = new JTextField(); //hier erstell ich das Jtextfield und definiere es
tfName.setDocument(createBuchstabenDocumentWithMaxLength(14));
tfName.setBorder(new LineBorder(new Color(0, 0, 0)));
tfName.setBounds((screenSize.width/2)+25, (screenSize.height/2)-60, 200, 60);
tframe.setFont(new Font("Arial", Font.PLAIN, 16));
tfName.setHorizontalAlignment(SwingConstants.CENTER);
panelNeueDateiErstellen.add(tfName);
JButton btWeiter = new JButton("Weiter"); //hier erstellt ich einen Button mit dem man ins nächste Fenster kommen würde
btWeiter.setBounds((screenSize.width/2)+125, (screenSize.height/2)+340, 140, 40);
btWeiter.setFont(new Font("Arial", Font.PLAIN, 15));
btWeiter.setHorizontalAlignment(SwingConstants.CENTER);
panelNeueDateiErstellen.add(btWeiter);
btWeiter.addActionListener(new ActionListener() {
if(true){//hier werden normaler weise Sachen abgefrage, zur Vereinfachung nur 'true'
DateiInfoInVariablen(); //hier ruf ich die Funktion auf
tfName.setText(null); //danach soll das Textfeld wieder leer werden
}
}
});
}
private void DateiInfoInVariablen(){
//die Funktion soll Texte aus verschiedenen Textfelder in
//Variablen abspeichern, ich habe jetzt hier mal nur eine reingetan
stringDateiInfo[0] = tfName.getText();
}
private Document createBuchstabenDocumentWithMaxLength(final int maxLength){
//durch die Funktion kann man nur Buchstaben und eine bestimmte Anzahl davon
//ins Textfeld reinschreiben
Document doc = new PlainDocument(){
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if(getLength() + str.length() > maxLength)
return;
if(!str.matches("\\p{Alpha}"))
return;
super.insertString(offs, str, a);
}
};
return doc;
}
}
Wenn ich mein Programm starte, hängt es sich in der Funktion 'DateiInfoInVariabeln();' auf. Dabei geht es um das abrufen des Textes aus dem Jtextfield 'tfName'.
Es entsteht folgende Fehlermeldung in der Konsole:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at version_02.V_02_10.DateiInfoInVariablen(V_02_10.java:2253)
// die Zeile stimmt nicht mit oben überein,
// es ist die Zeile mit folgendem Code: 'stringDateiInfo[0] = tfName.getText();'
Ich weiß nicht wie ich den Fehler beheben kann. Hab schon viel probiert. Ich muss es aber mit einer Funktion machen, da es um mehrere Variablen geht und ich diese mehrmals abspeichern können muss. Die Funktion vereinfacht somit die Sache (wenn sie funktionieren würde).
Schon mal Danke
Nick