Java 按下按钮时如何呼叫二等舱?

Java 按下按钮时如何呼叫二等舱?,java,swing,Java,Swing,我正在制作一个简单的程序,用户在其中输入名称和描述。如果用户按OK,程序将把结果写入文件。基本上,我有三节课。我想从class1调用class2并实现该方法。我只知道如何在一节课上做到这一点,但我也想知道这一点。提前谢谢 问题是无法将输入添加到文件中。可能我没有正确调用文件名: if (result == JOptionPane.OK_OPTION){ class2 ad = new class2(this); } 以下是我的三门课: 主要 第一类 import javax.sw

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

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

   if (result == JOptionPane.OK_OPTION){

class2 ad = new class2(this);
   }
以下是我的三门课:

主要

第一类

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;
    ...
}
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;
    ...
}
这是一个问题

class1的构造函数在此处创建class2的实例:

调用类2的构造函数

这将在此处创建class1的实例:

调用class1的构造函数

这会再次提示您

因此,如果取消,则只能在第二次提示后访问class2的其余构造函数。

这是一个问题

class1的构造函数在此处创建class2的实例:

调用类2的构造函数

这将在此处创建class1的实例:

调用class1的构造函数

这会再次提示您



因此,如果取消,您只能在第二次提示后访问class2的其余构造函数。

请标记您的问题。问题-问题是什么?有什么错误信息吗?是的。无法将输入添加到文件中。stacktrace是否捕获blocksBingo什么是stacktrace?请标记您的问题。问题-问题是什么?有什么错误信息吗?是的。无法将输入添加到文件中。stacktrace是否捕获blocksBingo什么是stacktrace?我这样做了,但没有添加到文件中。当我再次尝试时,它对我有效。事实上,我看到了上一次失败运行中额外的制表符。您可能想编辑您的问题以显示您当前的方法。您忘记注释掉a=new class1。我这样做了,但没有添加到文件中。当我再次尝试时,它对我有效。事实上,我看到了上一次失败运行中额外的制表符。你可能想编辑你的问题以显示你当前的方法。你忘了注释掉a=new class1。那么你能告诉我调用第二个类的正确方法吗?@DamBokser为什么它甚至在一个类中,为什么不只是在class1中创建一个方法呢?因为我知道如何在同一个类中实现它。我想学习调用其他类的方法。那么你能告诉我调用第二个类的正确方法吗?@DamBokser为什么它甚至在一个类中,为什么不在类1中创建一个方法呢?因为我知道如何在同一个类中实现它。我想学习调用其他类的方法。
class2 ad = new class2();
a = new class1();