在另一个类中访问JTextField并将其添加到String中

时间:2014-04-06 19:14:57

标签: java string swing jtextfield

我用Java编写程序,我遇到了一个问题,即我想在一个类中编写一个文件。在另一个类中,我想覆盖此文件,如果该文件的名称已经存在。 但是,第一个类使用JTextField,您可以在其中输入数字。该数字将添加到文件名中。这很完美,但在第二节课中它不会成功。我使用了一个关联,但它给了我一个nullpointer异常。有人可以帮忙吗?

    public void actionPerformed(ActionEvent e) {
        //make file
        String fileName = "Week " + tf1.getText();
        File planning = new File(fileName + ".txt");

        // save file
        if (e.getSource() == b2) {
// file does't exists yet and all field are filled out
            if (!planning.exists() && allesGevuld()) {
                FileWriter fw;
                try {
                    fw = new FileWriter(planning, false);
                    BufferedWriter bw = new BufferedWriter(fw);
                    bw.write(toString());
                    bw.close();
                    fw.close();
                    JOptionPane.showMessageDialog(null,
                            "De weekplanning is opgeslagen!", "Succes",
                            JOptionPane.PLAIN_MESSAGE);
                    dispose();

                } catch (IOException e1) {
                    System.out.println("Exception ");
                }
                // no everything is filled in
            } else if (!allesGevuld()) {
                JOptionPane.showMessageDialog(null,
                        "Niet alle velden zijn ingevuld!", "Mislukt",
                        JOptionPane.PLAIN_MESSAGE);
            }
            // to overwriting frame
            else if (planning.exists() && allesGevuld()) {
                OverschrijvenFrame ov = new OverschrijvenFrame(planningFrame);
                ov.setVisible(true);

            }
        }
    }

第二课:

if (e.getSource() == overschrijf) {
            // overschrijven van file
            String fileName = "Week"+ ;//this is where the number should be overwritten
            File planning = new File(fileName + ".txt");

            // delete the file which will be overwritten
            planning.delete();

            // new file
            File nieuw = new File(fileName + ".txt");

            FileWriter fw;
            try {
                fw = new FileWriter(nieuw);
                BufferedWriter bw = new BufferedWriter(fw);
                bw.write(planningFrame.toString());
                bw.close();
                fw.close();
                dispose();

            } catch (IOException e1) {
                System.out.println("Exception ");
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

使用Java IO

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#exists%28%29

import java.io.*;
//...
new File("pathToFile").exists()

或使用Java NIO

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

import java.nio.file.*;
//...
Files.exists(Paths.get("pathToFile"))

答案 1 :(得分:0)

你的问题是什么?

如果你不能从第二个类调用tf1.getText(),因为tf1在第一个类中是私有的 - >使其公开或添加公共静态变量来保存可以从第二类引用的文件名。