[英]Retrieve JTextField text value
我正在尝试从JTextField检索文本值,但首先我需要将组件对象(java.awt.Component)强制转换为JTextFiel ...
mi代码是这样的
Component[] x = this.getComponents();
for(int i = 0; i < x.length; i++)
{
if (x[i] instanceof JTextComponent)
{
//retrieve text...something like
//(JTextField)x[i].getText();
}
}
我这样做是因为我知道mi页面的所有控件都在“ x”中(JLabels和JTextField),但是它们是Components,所以这就是我要强制转换为JTextField的原因。
我真的在这里迷路了,我不知道这是否是正确的方法。 谢谢你的时间!
我真的在这里迷路了,我不知道这是否是正确的方法。 谢谢你的时间!
您永远不会被迫在一行上编写所有代码。 因此,为了简化您的问题,请简化代码。 就像是:
Component component = x[i];
JTextField textField = (JTextField)component;
String text = textField.getText();
这样,如果您遇到编译错误或其他错误,编译器将指出确切的行。
我认为您需要重新考虑您的设计。 为什么不在包含JTextField
的类中公开getText()
方法。 该方法可以删除JTextField
的getText()
方法,并避免使用该糟糕的instanceof
。
((JTextComponent) x[i]).getText();
应该管用。
(因为x[i]
是JTextComponent
的实例,但这并不意味着它必然是JTextField
。)但是JTextComponent
具有.getText()
因此可以将其转换为JTextComponent
。
通过反射API。 只是为了扩大视野=)
import java.lang.reflect.Method;
...
for ( Component component : this.getComponents() ) {
try {
Method getText = component.getClass()
.getDeclaredMethod("getText");
String text = (String)getText.invoke();
//Do something with text
} catch ( Exception exc ) {} // no such method
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.