【问题标题】:jTextField.getText() in a different classjTextField.getText() 在不同的类中
【发布时间】:2013-08-22 15:02:34
【问题描述】:

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

}
}

【问题讨论】:

  • 您的代码甚至可以编译,尝试发布SSCCE 以获得更好的帮助。
  • 我没有看到你的代码正在编译。尤其是 A 类。
  • 这个问题似乎离题了,因为它是关于一个需要快速帮助的问题。由于它特定于特定时间,因此更广泛的受众并不感兴趣,因此与 SO 无关。
  • 如果我理解正确,问题不在于它“不起作用”。问题是您甚至无法编译代码。如果是这样,请先阅读、尝试理解、再试一次,然后在谷歌上搜索您从编译器获得的确切错误消息。然后,如果您仍然卡住,请在您的问题中发布编译器错误消息,因为该消息旨在被阅读,并准确说明错误是什么以及它在哪里。忽略错误消息不会带你到任何地方。
  • 代码实际上可以工作(除了这个JTextField),只是我修改了它,所以它不会是一整页的代码。我在为这个网站修剪它时犯了错误。我现在修复了它(所以它至少符合并做了一些事情)。

标签: java swing csv jtextfield


【解决方案1】:

您永远不会将您的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,所以这个代码。

【讨论】:

  • 您必须将文本字段添加到某些 Container :S ,否则您将永远无法向其发送文本。您的继承根本没有意义。为什么文本字段是静态的?我会重新设计你的对象模型..
  • 我正在尝试一些方法,这就是为什么它是静态的。它最初不是静态的,这是因为我的代码出于某种原因拒绝写出在 jTextField1 中找到的文本。我可以在该字段中输入 2000 个字符,并且在保存到 CSV 文件时它不会读取 jTextField1 中的内容,只会输出任何内容。
  • 如果不是静态的,那么 jextfield1 是您正在修改的另一个...跨度>
  • 我这样做是为了让 B 类可以访问 A 类中的所有变量,只要它们受到保护。
【解决方案2】:

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

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

【讨论】:

  • 不要发布 cmets 作为答案。
  • 抱歉,我会根据他提供给我们的少量信息来尝试解决这个烂摊子。将很快在编辑中添加代码。
  • 假设 jTextField1 中有一些文本。我想保存它。完成文件 > 保存 > 保存文件的过程。但是什么都没有出来。
  • 那么 FileChooser 是您保存文件所需的工具。但首先您需要理清代码中的错误。您想将文本字段的文本放入一个字符串中,比答案中的 dd 怎么做。
  • 顺便试了一下,还是不行。前段时间看到这个的时候忘记提了。
猜你喜欢
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2010-11-06
相关资源
最近更新 更多