Einen schönen Abend wünsche ich,
der Titel spiegelt schon ziemlich genau mein Problem wieder. In meinem folgenden Programm steckt ein Fehler, den ich aber nicht erkenne. Ich hoffe ihr könnt mir helfen.
Ich hoffe, dass man versteht was ich machen will. Da, wo er die Exception ausspuckt (ButtonFrame:32) möchte ich zuerst Dateinamen(in einem FileArray) einlesen und dann als Titel für die Button festlegen.
Exception
"Hauptklasse:"
"ButtonFrame :"
"AccountVerwaltung :"
"DateiVerwaltung:"
Vielen Dank im Vorraus!
der Titel spiegelt schon ziemlich genau mein Problem wieder. In meinem folgenden Programm steckt ein Fehler, den ich aber nicht erkenne. Ich hoffe ihr könnt mir helfen.
Ich hoffe, dass man versteht was ich machen will. Da, wo er die Exception ausspuckt (ButtonFrame:32) möchte ich zuerst Dateinamen(in einem FileArray) einlesen und dann als Titel für die Button festlegen.
Exception
Code:
Exception in thread "main" java.lang.NullPointerException
Code:
at ButtonFrame.<init>(ButtonFrame.java:37)
Code:
at iAccountManager.main(iAccountManager.java:10)
"Hauptklasse:"
Java:
public class iAccountManager {
public static void main(String[] args) {
//Test, ob Programm startet
//JOptionPane.showConfirmDialog(null, "Programmstart!", "Warning", JOptionPane.WARNING_MESSAGE);
ButtonFrame bf = new ButtonFrame("iAccount");
bf.setVisible(true);
bf.setSize(245, 238);
bf.setLocationRelativeTo(null);
}
}
"ButtonFrame :"
Java:
public class ButtonFrame extends JFrame implements ActionListener {
//Account-Strings
String bn_acc1;
String pw_acc1;
String bn_acc2;
String pw_acc2;
String bn_acc3;
String pw_acc3;
String bn_acc4;
String pw_acc4;
String bn_acc5;
String pw_acc5;
//Objekte
JButton b_acc1;
JButton b_acc2;
JButton b_acc3;
JButton b_acc4;
JButton b_acc5;
ButtonFrame(String titel) {
super(titel);
//Benutzernamen-Auslesen
System.out.println("Benutzernamen auslesen!");
AccountVerwaltung av = new AccountVerwaltung();
File[] accountNamen = av.accountSpeichern();
//bis hier hin erfolgreich
for(int i = 0; i < accountNamen.length; i++) {
System.out.println(accountNamen[i].getName());
}
//Benutzernamen-Zuweisen
System.out.println("Benutzernamen zuweisen!");
if(accountNamen.length >= 1) {
bn_acc1 = accountNamen[0].getName().replace(".txt", "");
} else {
bn_acc1 = "nicht vergeben";
}
if(accountNamen.length >= 2) {
bn_acc2 = accountNamen[1].getName().replace(".txt", "");
} else {
bn_acc2 = "nicht vergeben";
}
if(accountNamen.length >= 3) {
bn_acc3 = accountNamen[2].getName().replace(".txt", "");
} else {
bn_acc3 = "nicht vergeben";
}
if(accountNamen.length >= 4) {
bn_acc4 = accountNamen[3].getName().replace(".txt", "");
} else {
bn_acc4 = "nicht vergeben";
}
if(accountNamen.length >= 5) {
bn_acc5 = accountNamen[4].getName().replace(".txt", "");
} else {
bn_acc5 = "nicht vergeben";
}
//Passwörter
pw_acc1 = "";
pw_acc2 = "";
pw_acc3 = "";
pw_acc4 = "";
pw_acc5 = "";
//Layout-Manager
//setLayout(new FlowLayout());
setLayout(null);
//***********************************************
//Objekte
//Button-Account 1
b_acc1 = new JButton(bn_acc1);
b_acc1.setActionCommand("Button1");
b_acc1.addActionListener(this);
//Button-Account 2
b_acc2 = new JButton(bn_acc2);
b_acc2.setActionCommand("Button2");
b_acc2.addActionListener(this);
//Button-Account 3
b_acc3 = new JButton(bn_acc3);
b_acc3.setActionCommand("Button3");
b_acc3.addActionListener(this);
//Button-Account 2
b_acc4 = new JButton(bn_acc4);
b_acc4.setActionCommand("Button4");
b_acc4.addActionListener(this);
//Button-Account 2
b_acc5 = new JButton(bn_acc5);
b_acc5.setActionCommand("Button5");
b_acc5.addActionListener(this);
//***********************************************
//Objekte platzieren
b_acc1.setBounds(10, 10, 210, 28);
b_acc2.setBounds(10, 48, 210, 28);
b_acc3.setBounds(10, 86, 210, 28);
b_acc4.setBounds(10, 124, 210, 28);
b_acc5.setBounds(10, 162, 210, 28);
//Objekte hinzufügen
add(b_acc1);
add(b_acc2);
add(b_acc3);
add(b_acc4);
add(b_acc5);
//Anwendung schließen, wennFenster geschlossen wird
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
//ActionListener
public void actionPerformed(ActionEvent e) {
String quelle = e.getActionCommand();
System.out.println("Button: '" + quelle + "'");
if(quelle.equals("Button1")) {
AccountVerwaltung av = new AccountVerwaltung();
String benutzername = av.buttonAction(bn_acc1, pw_acc1);
if(bn_acc1.equals("nicht vergeben")) {
b_acc1.setText(benutzername);
int neustart = JOptionPane.showConfirmDialog(null, "Programm muss neu gestartet werden", "Warning", JOptionPane.WARNING_MESSAGE);
switch(neustart) {
case JOptionPane.OK_OPTION: System.out.println("Programm wird beendet"); System.exit(0); break;
case JOptionPane.CANCEL_OPTION: break;
default: break;
}
}
} else if(quelle.equals("Button2")) {
AccountVerwaltung av = new AccountVerwaltung();
String benutzername = av.buttonAction(bn_acc2, pw_acc2);
if(bn_acc2.equals("nicht vergeben")) {
b_acc2.setText(benutzername);
int neustart = JOptionPane.showConfirmDialog(null, "Programm muss neu gestartet werden", "Warning", JOptionPane.WARNING_MESSAGE);
switch(neustart) {
case JOptionPane.OK_OPTION: System.out.println("Programm wird beendet"); System.exit(0); break;
case JOptionPane.CANCEL_OPTION: break;
default: break;
}
}
} else if(quelle.equals("Button3")) {
AccountVerwaltung av = new AccountVerwaltung();
String benutzername = av.buttonAction(bn_acc3, pw_acc3);
if(bn_acc3.equals("nicht vergeben")) {
b_acc3.setText(benutzername);
int neustart = JOptionPane.showConfirmDialog(null, "Programm muss neu gestartet werden", "Warning", JOptionPane.WARNING_MESSAGE);
switch(neustart) {
case JOptionPane.OK_OPTION: System.out.println("Programm wird beendet"); System.exit(0); break;
case JOptionPane.CANCEL_OPTION: break;
default: break;
}
}
} else if(quelle.equals("Button4")) {
AccountVerwaltung av = new AccountVerwaltung();
String benutzername = av.buttonAction(bn_acc4, pw_acc4);
if(bn_acc4.equals("nicht vergeben")) {
b_acc4.setText(benutzername);
int neustart = JOptionPane.showConfirmDialog(null, "Programm muss neu gestartet werden", "Warning", JOptionPane.WARNING_MESSAGE);
switch(neustart) {
case JOptionPane.OK_OPTION: System.out.println("Programm wird beendet"); System.exit(0); break;
case JOptionPane.CANCEL_OPTION: break;
default: break;
}
}
}else if(quelle.equals("Button5")) {
AccountVerwaltung av = new AccountVerwaltung();
String benutzername = av.buttonAction(bn_acc5, pw_acc5);
if(bn_acc5.equals("nicht vergeben")) {
b_acc5.setText(benutzername);
int neustart = JOptionPane.showConfirmDialog(null, "Programm muss neu gestartet werden", "Warning", JOptionPane.WARNING_MESSAGE);
switch(neustart) {
case JOptionPane.OK_OPTION: System.out.println("Programm wird beendet"); System.exit(0); break;
case JOptionPane.CANCEL_OPTION: break;
default: break;
}
}
}
}
}
"AccountVerwaltung :"
Java:
public class AccountVerwaltung {
String working_dir = System.getProperty("user.dir");
DateiVerwaltung dv = new DateiVerwaltung();
String buttonAction(String benutzername, String passwort) {
if(benutzername.equals("nicht vergeben")) {
System.out.println("Neuen Benutzernamen einlesen");
benutzername = JOptionPane.showInputDialog("Geben Sie Ihren Benutzernamen ein:");
passwort = JOptionPane.showInputDialog("Geben Sie Ihr Passwort ein:");
JOptionPane.showMessageDialog(null, "Benutzername: " +benutzername + "\nPasswort: " + passwort);
System.out.println("Benutzername: " +benutzername + "\nPasswort: " + passwort);
DateiVerwaltung dv = new DateiVerwaltung();
dv.dateiAusgabe(benutzername, passwort);
return benutzername;
}
//Benutzername in Zwischenablage
StringSelection strSelec = new StringSelection(benutzername);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(strSelec, null);
System.out.println("'" + benutzername + "' in Zwischenablage kopiert");
return null;
}
File[] accountSpeichern() {
File dateiPfad = new File(working_dir + "//data");
System.out.println("Dateipfad:__" + dateiPfad);
File[] accountNamen = dv.listDir(dateiPfad);
System.out.println("Return AccountNamen:");
return accountNamen;
}
}
"DateiVerwaltung:"
Java:
public class DateiVerwaltung {
String working_dir = System.getProperty("user.dir");
void dateiAusgabe(String benutzername, String passwort) {
PrintWriter ausgabe;
try {
System.out.println(working_dir);
//In Datei schreiben
ausgabe = new PrintWriter(working_dir + "//data//" + benutzername + ".txt");
ausgabe.println(benutzername + " " + passwort);
ausgabe.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
String dateiEinlesen (String dateiPfad) {
Scanner dateiEinlesenScanner = new Scanner(dateiPfad);
String dateiInhalt = dateiEinlesenScanner.nextLine();
dateiEinlesenScanner.close();
return dateiInhalt;
}
String pfadAuswaehlen() {
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int state = fc.showOpenDialog(null);
String ordnerPfad = null;
if(state == JFileChooser.APPROVE_OPTION) {
File datei = fc.getSelectedFile();
ordnerPfad = datei.getAbsolutePath();
System.out.println(ordnerPfad);
}
return ordnerPfad;
}
public File[] listDir(File dir) {
File[] files = dir.listFiles();
if (files != null) { // Erforderliche Berechtigungen etc. sind vorhanden
for (int i = 0; i < files.length; i++) {
System.out.print(files[i].getAbsolutePath());
if (files[i].isDirectory()) {
System.out.println(" (Ordner)");
}
else {
System.out.println(" (Datei)");
}
}
}
return files;
}
boolean checkOrdner(String ordnerName)
{
File stats = new File(ordnerName);
if (stats.exists()) { // Überprüfen, ob es den Ordner gibt
return true;
} else {
if (stats.mkdir()) { // Erstellen des Ordners
return true;
} else {
return false;
}
}
}
}
Vielen Dank im Vorraus!