Java 将值从jinternalframe1传递到jinternalframe2

Java 将值从jinternalframe1传递到jinternalframe2,java,swing,netbeans,Java,Swing,Netbeans,我已经阅读了很多关于Java中构造函数的内容,并在stackoverflow中搜索了相关问题,但我仍然对我的程序如何从jinternalframe1到jinternalframe2获取字符串值感到困惑 我有一个叫jinternalframe的jinternalframe。这是我的密码 ForgotPassword fp = new ForgotPassword(); JDesktopPane MainDesk = this.getDesktopPane(); Ma

我已经阅读了很多关于Java中构造函数的内容,并在stackoverflow中搜索了相关问题,但我仍然对我的程序如何从jinternalframe1到jinternalframe2获取字符串值感到困惑

我有一个叫jinternalframe的jinternalframe。这是我的密码

ForgotPassword fp = new ForgotPassword();
        JDesktopPane MainDesk = this.getDesktopPane();
        MainDesk.add(fp);
        this.dispose();
        fp.show();
这是我的jinternalframe1

public class ForgotPassword extends javax.swing.JInternalFrame {

    public ForgotPassword(String acType, String uName) {
        initComponents();
        acType = AccountType.getSelectedItem() + "";
        uName = username.getText();

    }
AccountType变量是一个jcombobox,有三个选项:管理员、级别一、级别二。 username变量是一个jTextField。我还有一个叫做Next的jbutton,它叫jinternalframe2

用户需要单击“下一步”按钮,并检查数据库中是否存在用户名。(我已经了解了这一部分),然后隐藏jinternalframe1,如果数据库中存在用户名,则调用jinternalframe2

现在我对这部分感到困惑。。金泰尔纳框架2。我希望帐户类型和用户名值从jinternalframe1到jinternalframe2。。我正在尝试,但没有运气

public class ForgotPassword2 extends ForgotPassword {

    public ForgotPassword2(String acType, String uName) {
        initComponents(); 

        AccountType.getText() = acType;
        username.getText() = uName;
    }
您会注意到jinternalframe2中的变量AccountType是一个jTextField。 jinternalframe2中的AccountType和username jTextField都不可编辑(已禁用)

以下行出现错误:

ForgotPassword fp = new ForgotPassword();


public ForgotPassword2(String acType, String uName)
两行上都有错误消息

类ForgotPassword中的构造函数ForgotPassword无法应用 对给定的类型;必需:字符串,找到字符串:无参数
原因:实际参数列表和正式参数列表长度不同


有人能告诉我如何在我的程序中正确使用构造函数吗?顺便说一下,我正在使用netbeans。提前谢谢你

这与构造函数关系不大,与在不同类的对象之间传递信息关系更大。首先,你不能像你看起来那样,为了这个目的而滥用继承。相反,您使用组合——需要来自另一个类的信息的类需要对另一个类的活动对象的有效引用。然后第一个类可以调用另一个类上的方法

我认为出于您的目的,您最好使用内部选项窗格(如
JOptionPane.showInternalConfirmDialog(…)
)以模式方式获取用户信息。无论何时打开模式对话框,调用代码都会在显示模式对话框的位置停止。一旦模态对话框不再可见,调用代码就会恢复,此时您可以查询显示在选项窗格中的JPanel类以获取它所保存的数据

另请注意:如果您正在询问有关代码的问题,并且您声明您的代码有一个“错误”,您将希望发布完整的错误消息以供所有人查看

此外,这不是有效的Java:

AccountType.getText() = acType;

因为在赋值语句的左侧不能有方法调用。

这些行上发生了什么错误? 这不是一个有效的声明:

public ForgotPassword2(String acType, String uName)
目前还不清楚您的设计意图是什么,但根据您发布的内容,我想您需要创建ForgotPassword2的新实例:

public class ForgotPassword extends javax.swing.JInternalFrame {
    String acType;
    String uName;


    public ForgotPassword(String acType, String uName) {
        this.acType = acType;
        this.uName = uName;
    }

    public void next(){
        ...
        ForgotPassword2 fp2 = new ForgotPassword2(this.acType, this.uName);
        ...
    }
}
此外,这一说法非常可疑:

AccountType.getText() = acType;

此语句不会替换AccountType中对字符串的引用。您需要打电话给setter。

对不起,我忘了提到错误消息。我将编辑我的帖子。@Ashlem:我的观点仍然有效:1)你滥用了继承。2) 使用包含JPanel的JopOptions窗格。谢谢。为了确保正确理解,我应该使用JOptionPane.showInternalConfirmDialog(…)而不是使用jinternalframes,对吗?实际上,我对java还不熟悉。我在这个网站上读到了JOptionPane:我在谷歌上找到的。我可以在JOptionPane中使用jtextfield吗?如果是,如何进行?很抱歉,我对这种东西有点陌生。@ashlem:您可以在JOptionPane中使用任何您想要的组件。就我自己而言,我避免使用JinternalFrame,因为我觉得它们不太令人愉快或有用。我的大多数视图更改都是使用CardLayout完成的。我所有的模态信息都是通过模态JDialogs或JOptionPanes获得的。我正在测试你关于使用JOptionPane而不是JInternalFrame的建议。得到一些错误,但我会尝试从这里找出它。非常感谢你!对不起,我忘了包含错误消息。我已经在上面的帖子中包含了它。我也在尝试你的建议,但是,我在第
ForgotPassword fp=new ForgotPassword()行上遇到了一个错误
当我试图在
public ForgotPassword(String acType,String uName)
上添加变量时,错误消息如下:
类ForgotPassword中的构造函数ForgotPassword无法应用于给定类型;必需:字符串,找到字符串:无参数原因:实际参数列表和正式参数列表长度不同
您无法执行此操作
新建ForgotPassword()如果您提供的唯一构造函数有两个参数。