![](/img/trans.png)
[英]Trying to Get value from “JTable” and and set it to “Jtextfield”
[英]java get value from JTextField and set it as BigInteger
我的包中有两个类:firstClass和secondClass。
我在firstClass中创建了一个文本字段,假设它是txtStringNumber。
我在firstClass中创建了一个方法来获取txtStringNumber值,如下所示:
public String getStrNumber(){
String strNumber = txtStringNumber.getText();
return strNumber;
}
我必须将它作为String传递给secondClass,并将strNumber作为BigInteger值。
在第二个类中,我创建了一个从firstClass获取txtStringNumber值的方法,例如tis:
public static String theNumbers(){
firstClass f = new firstClass();
return f.getStrNumber();
}
public static String strAllNumbers = theNumbers();
当我在secondClass中打印strAllNumbers时,它会打印正确的值。 然后添加:
public static BigInteger bigAllNumbers = new BigInteger(strAllNumbers);
在我看来,它应该有效。 但实际上,事实并非如此。 发生错误。
所以我检查了错误,那里说:
throw new NumberFormatException("Zero length BigInteger");
我猜BigInteger接受strAllNumbers为空。 但是就像我已经说过的那样,当我直接打印strAllNumbers而不将其设置为BigInteger时,它将返回正确的值。
这里有什么问题,我该如何解决?
您正在创建一个firstClass对象f,并在任何人没有机会在其中输入文本之前从其文本字段获取String。 因此,它为空并不奇怪。
解决方案:不要这样做! 仅在输入有意义的内容后才能获取文本。 我猜想您有两个firstClass对象,一个已显示,并在此方法中创建了第二个,并以魔术般的思维犯了罪,即对显示对象的更改将反映在新创建的对象中,但这不是编程的工作原理。 而是将显示对象的有效引用传递给需要该对象的其他对象。
您正在theNumbers
方法中创建firstClass
的新实例( firstClass f = new firstClass();
),将文本字段的值设置为任何有用的值(尤其是用户设置)的可能性很小
你要么需要提供的一种手段firstClass
从文本字段传递价值secondClass
,很可能是通过某种形式的setter方法(这是典型的生产者-消费者模式 )或设立一个机制firstClass
通知secondClass
当值变化然后让secondClass
检索该值(这是一个类观察器模式 )。
无论如何,您都不应该创建这些类的新实例,而是需要创建它们,然后将这些实例传递给任何将要充当控制器的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.