-2

クラス B から CSV ファイルを書き込もうとしています。ただし、(クラス A にある) jTextField は、作成された 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しています。ClassBClass A

于 2013-08-22T15:51:55.927 に答える