java - 按下按钮时如何调用二等舱?

标签 java swing

我正在制作一个简单的程序,用户在其中输入名称和描述。如果用户按“确定”,程序会将结果写入文件。基本上,我有3节课。我想从 class1 调用我的 class2 并实现该方法。我只知道如何在一节课上做到这一点,但我也想知道这种方式。提前致谢。

问题是无法将输入添加到文件中。也许我没有正确调用文件名:

   if (result == JOptionPane.OK_OPTION){

class2 ad = new class2(this);
   }

以下是我的 3 门类(class):

主要

public class mainclass {
    public static void main(String[] args) {
        class1 a = new class1();
    }
}

1级

import javax.swing.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.table.*;
import java.util.*;

public class class1{

final JTextField field1 = new JTextField(10);
final JTextField field2 = new JTextField(10);
JPanel panel = new JPanel();

public  class1() {

        panel.add(new JLabel("Name:"));
        panel.add(field1);
        panel.setLayout(new GridLayout(5,2));
        panel.add(new JLabel("Description:"));
        panel.add(field2);

        int result = JOptionPane.showConfirmDialog(null, panel,"Enter Information", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            class2 ad = new class2 ();
        }
    }
}

2级

import javax.swing.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.table.*;
import java.util.*;

 public class class2 {

    class1 a;

    public class2(class1 a) {

        this.a = a;

        a = new class1();

        BufferedWriter writer = null;

        try {

            writer = new BufferedWriter( new FileWriter("file.txt", true));

            String add1 = a.field1.getText();
            String add2 = a.field2.getText();

            writer.write(add1);
            writer.write("\t");
            writer.write(add2);
            writer.write("\t");

        } catch ( IOException e) {

        } finally {
            try {
            if ( writer != null)
                writer.close( );
            } catch ( IOException e) {
            }
        }       
    }
}

最佳答案

class2 中的 a = new class1() 行创建的实例与 mainclass 中创建的实例不同。相反,将对 class1 的引用传递给 class2 构造函数。

if (result == JOptionPane.OK_OPTION) {
    class2 ad = new class2(this);
}
...
public class2(class1 a) {
    //a = new class1();
    this.a = a;
    ...
}

关于java - 按下按钮时如何调用二等舱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985722/

相关文章:

java - 使用java-6和java-7部分编译gradle项目

java - 如何将 JPopup 移动到 Glasspane

java - 配置 Tomcat 以将 Windows 证书存储用于 SSL

java - 如何在从 Jframe 打开一段时间后关闭 JDialog

java - 如何更改netbeans中jframe的访问组件级别

java - JList 不显示任何对象?

java - 添加更多行时滚动条不更新

java - 如何在eclipse中设置JavaEE First Cup教程?

java - 通过网络写入数据

java - IKVM.NET 对象序列化与 ObjectOutputStream 的区别