jTextField.getText()在另一个类中

时间:2013-08-22 15:02:34

标签: java swing csv jtextfield

我正在尝试从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();

}
}

2 个答案:

答案 0 :(得分: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它是ClassB,而且是Class A,所以这段代码。

答案 1 :(得分:-1)

请更详细地解释一下,然后有人/我可以帮助你。

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