例如,我想从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;
}
}
答案 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)中已经评论过的那样,您似乎将程序逻辑与用户界面混合在一起,这可能不是您应该做的事情。