-2

我正在尝试从 B 类编写一个 CSV 文件。但是,jTextField(在 A 类中)只是没有输出到创建的 CSV 文件。我需要这方面的帮助/步骤/提示。

编辑:这现在符合。

A级

public class ClassA extends javax.swing.JFrame {
public ClassA() {
   initComponents();
}
private void initComponents() {
    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);
    jTextField1 = new JTextField();
    JMenu aFile = new JMenu("File");
    JMenuItem saveFile = new JMenuItem ("Save...");
    menuBar.add(aFile);
    aFile.add(saveFile);
    saveFile.addActionListener(new java.awt.event.ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        ClassB ss = new ClassB(); 
        try {
            ss.saveAsTable();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }   
    });
}
 public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {
        new ClassA().setVisible(true);
    }
   });
}
protected static javax.swing.JTextField jTextField1;
}

B类

public class ClassB extends ClassA{
    /**
     * 
     */

    public ClassB() {}

    public void saveAsTable() throws IOException {
    JFileChooser sat = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "CSV files (*csv)", "csv");
    sat.setFileFilter(filter);
    int ret = sat.showSaveDialog(null);
    if (ret == JFileChooser.APPROVE_OPTION) {
    File f = sat.getSelectedFile();
    FileWriter out = new FileWriter(f);
    out.write(jTextField1.getText() + ",");//This doesn't work...
    out.close();

}
}
4

2 回答 2

2

你永远不会将你添加jtextfield1 到你的框架中,顺便说一下你的继承是非常危险的。

在 ClassA 构造函数的某些部分添加此行。

this.add(jtextField1);    

你在actionPerformed另一个地方创造ClassA

saveFile.addActionListener(new java.awt.event.ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        ClassB ss = new ClassB(); 
        try {
            ss.saveAsTable();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }   
    });

发生这种情况是因为 ss它是 aClassB并且因为它是 a Class A,所以这段代码。

于 2013-08-22T15:51:55.927 回答
-1

请更详细地解释这一点,然后有人/我可能会帮助你。

编辑:很难看出您到底想做什么,但是,如果您需要保存打开的文件,请查看JFileChooserhttp://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html) Edit2:将文本从 texfield 放入字符串:String yourtext = JTextField1.getText();

于 2013-08-22T15:25:52.903 回答