我目前开始使用Java,最后写了一个程序,创建一个文件并保存。我想使用JFileChooser来使用户选择文件保存目录。
我创建了一个使用JFileChooser的类,并相应地保存文件。
要测试它,我让它在main方法的测试类中运行,并且一切正常。
要在程序中使用它,我将代码放入真实类中(将csvSaver放入saveCsv方法中)。 我从另一个班级(Vermietungen)开课,等级为: csvSaver.saveCsv(args);
现在它不再起作用了……为什么?我不明白...我什至没有得到错误。没事...
这里是第一个类的代码(我在“ Rechnungen”下的开关中称为csvSaver类:
enter code here
import javax.swing.JOptionPane;
public class Vermietungen
{
public enum AccountType {Erfassen, Bearbeiten, Lesen, Löschen, Rechnungen}
public static void vermiet (String[] args)
{
AccountType[] choicesI = {AccountType.Erfassen, AccountType.Bearbeiten, AccountType.Lesen, AccountType.Löschen, AccountType.Rechnungen };
AccountType selectVer = (AccountType) JOptionPane.showInputDialog(null, "Was möchten Sie machen?", "Vermietungenverwaltung", JOptionPane.INFORMATION_MESSAGE, null, choicesI, choicesI[4]);
if (selectVer!=null)
{
switch (selectVer)
{
case Erfassen:
selectVer = null;
VerErfassen.neueVermietung(args);
break;
case Bearbeiten:
selectVer = null;
VerBearbeiten.verChange(args);
break;
case Lesen:
selectVer = null;
VerLesen.verRead(args);
break;
case Löschen:
selectVer = null;
VerLöschen.verDelete(args);
break;
case Rechnungen:
selectVer = null;
csvSaver.saveCsv(args);
break;
default:
selectVer = null;
Hauptmenü.hauptmenü(args);
break;
}
}
else
{
Hauptmenü.hauptmenü(args);
}
}
这是JFileChooser的代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.swing.Box;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class csvSaver
{
public enum AccountType {Monat, Jahr}
public static void saveCsv(String[] args)
{
String dateinameVer = "VermietungVerwaltung.txt";
File verFile = new File(dateinameVer);
boolean tester = false;
try
{ JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Wo möchten Sie die CSV-Datei abspeichern?");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(chooser) == JFileChooser.APPROVE_OPTION)
{
JTextField aField = new JTextField(4);
JTextField bField = new JTextField(2);
JPanel csvPanel = new JPanel();
csvPanel.add(new JLabel("Jahr"));
csvPanel.add(aField);
csvPanel.add(Box.createHorizontalStrut(1)); // a spacer
csvPanel.add(new JLabel("Monat"));
csvPanel.add(bField);
int csvResult = JOptionPane.showConfirmDialog(null, csvPanel,"Von welchem Monat/Jahr möchten Sie die Rechnungsdaten?", JOptionPane.OK_CANCEL_OPTION);
if (csvResult == JOptionPane.OK_OPTION)
{
String csvJahr = aField.getText();
String csvMonat = bField.getText();
File csvFile = new File (csvJahr + "_" + csvMonat + "_Rechnungen.txt");
System.out.println(csvFile);
String verId = "";
String verInId = "";
String verInName = "";
String verKuId = "";
String verKuVorN = "";
String verKuName = "";
String startT = "";
String startM = "";
String startJ = "";
String endT = "";
String endM = "";
String endJ = "";
String preis = "";
String dauer = "";
FileWriter fw = new FileWriter(csvFile, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
Scanner sucher = new Scanner(verFile);
sucher.useDelimiter("[,\n]");
boolean verFinder = false;
//File durchgehen:
while(sucher.hasNext())
{
//Linie auslesen:
verId = sucher.next();
verInId = sucher.next();
verInName = sucher.next();
verKuId = sucher.next();
verKuVorN = sucher.next();
verKuName = sucher.next();
startT = sucher.next();
startM = sucher.next();
startJ = sucher.next();
endT = sucher.next();
endM = sucher.next();
endJ = sucher.next();
preis = sucher.next();
dauer = sucher.next();
//entspricht Linie dem Suchbegriff? wenn nein:
if (startJ.equals(csvJahr))
{
if (startM.equals(csvMonat))
{
//in neue Datei kopieren:
pw.println(verId + "," + verInId + "," + verInName + "," + verKuId + "," + verKuVorN + "," + verKuName + "," + startT + "," + startM + "," + startJ + "," + endT + "," + endM + "," + endJ + "," + preis + "," + dauer);
//JOptionPane.showMessageDialog(null, "Das CSV-File wurde in: " + chooser.getSelectedFile() + " gespeichert.", "Gespeichert!", 1);
}
}
}
sucher.close();
pw.flush();
pw.close();
}
else
{
Hauptmenü.hauptmenü(args);
tester = true;
}
}
else
{
Hauptmenü.hauptmenü(args);
tester = true;
}
}catch (IOException e)
{
e.printStackTrace();
}
if (tester ==false)
{
Hauptmenü.hauptmenü(args);
}
}
}
因此,在JFileChooser中永远不会打开... (如果我将这个确切的代码复制/粘贴到main方法中,它将打开...
谁可以帮助我? 非常感谢。