JFileChooser在主要方法之外无法使用

时间:2018-08-28 12:36:22

标签: java jfilechooser

我目前开始使用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方法中,它将打开...

谁可以帮助我? 非常感谢。

0 个答案:

没有答案