将值从jinternalframe 1传递到jinternalframe 2

时间:2014-02-21 21:18:11

标签: java swing netbeans

我一直在阅读Java中的构造函数以及在stackoverflow中搜索相关问题,但我仍然对我的程序如何从jinternalframe1到jinternalframe2获取字符串值感到困惑。

我有一个调用jinternalframe1的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,有三个选项:Administrator,LevelOne,LevelTwo。 username变量是一个jTextField。我还有一个名为Next的jbutton,它调用jinternalframe2。

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

现在我对这部分感到困惑.. jinternalframe2。我想从jinternalframe1到jinternalframe2的帐户类型和用户名值。我正在尝试这个,但没有运气..

public class ForgotPassword2 extends ForgotPassword {

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

        AccountType.getText() = acType;
        username.getText() = uName;
    }

你会注意到jinternalframe2中的变量AccountType是一个jTextField。

此行发生错误:

ForgotPassword fp = new ForgotPassword();


public ForgotPassword2(String acType, String uName)

两行上的错误消息

  无法应用类ForgotPassword中的

构造函数ForgotPassword   给定类型; required:String,找到的字符串:无参数
  原因:实际和正式的参数列表长度不同

有人可以启发我如何在我的程序中使用构造函数吗?我顺便使用netbeans。提前谢谢!

2 个答案:

答案 0 :(得分:0)

这与构造函数关系不大,而与在不同类的对象之间传递信息有关。对于一个你不会因为你正在做的那样误用继承。相反,您使用组合 - 需要来自另一个类的信息的类需要对另一个类的活动对象的有效引用。然后第一个类可以在另一个上调用方法。

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

请注意:如果您询问有关代码的问题,并且说明您的代码有“错误”,则您需要发布完整的错误消息供所有人查看。

此外,这不是有效的Java:

AccountType.getText() = acType;

因为你无法在赋值语句的左侧进行方法调用。

答案 1 :(得分:0)

这些线路上发生了什么错误? 这不是一个有效的陈述:

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中对String的引用。你需要打电话给一个二传手。