可以传递JFrame作为参数,我得到了我创建的字段?

时间:2011-05-21 18:52:37

标签: java swing parameters jframe jtextfield

例如,我想从JTextField获取值。在JFrame中,我可以使用简单的txtField.getText()来完成此操作,但是我如何传递JFrame参数?

static boolean validateFields(Webcrawler wc) {
    try {
        //I created the txtUrl in the original JFrame, I can take him there, 
        //but not here.
        //The code is from the JFrame is generated by Netbeans.
        wc.getTxtUrl().getText(); //<-- is something like this I want to do.
        return true;
    } catch (Exception e) {
        return false;
    }
}

3 个答案:

答案 0 :(得分:1)

有几种方法可以做你想做的事。

1)公开您需要验证的文本字段。例如从JFrame中公开公共TextField getUrlTextField()。然后在接受JFrame的validate方法中,您可以提取所有字段的文本。

不要这样做。您正在将验证逻辑与View(JFrame)混合。

相反,您应该使用一个Controller类作为View(JFrame)和验证它的Model之间的中介。特别是,请参阅NetBeans平台如何使用OptionsPanelController执行其选项面板。这个blog post有一个很好的例子。

答案 1 :(得分:0)

您的输入窗口小部件(如JTextFields)的成员变量很可能是私有的,因此无法从外部访问。 要么声明它们是公共的,要么为它们的值写入访问器函数。 (JFrame内部或从JFrame派生的类,如果它是由第三方创建的话):

public String getTxtFieldText () {return txtField.getText ();}

答案 2 :(得分:0)

您总是可以通过方法或(更可能是)构造函数参数将一次对象的引用传递给另一个对象。您还可以通过SwingUtitlies的getWindowAncestor方法获得对顶级窗口(此处为JFrame)的引用。

但正如在答案(+1)中已经评论过的那样,您似乎将程序逻辑与用户界面混合在一起,这可能不是您应该做的事情。