2014-10-27 155 views
0

目前有我的领域,如认为:如何将JTextField转换为String/Long?

final JTextField PID = new JTextField("Product ID", 7); 
frame.getContentPane().add(PID); 

我的方法:

public StockItem(Long id, String name, String desc, double price) { 
    this.id = id; 
    this.name = name; 
    this.description = desc; 
    this.price = price; 
} 

尝试使用此方法与价值观从我JTextField S,但它不允许用在我的龙JTextField小号/ String/double地方。 有什么办法可以将我的JTextField转换成所需的东西,而无需编辑我的方法。

+2

'JTextField'将始终包含文本(字符串)。你可以用它来解析,转换,做任何你想做的事情。如果你想要一个UI控件,只允许使用数字,那么你可以使用'JSpinner'。 – 2014-10-27 12:16:06

+0

请参阅[本答案](http://stackoverflow.com/a/13424140/1076463)使用'JFormattedTextField'示例 – Robin 2014-10-27 12:57:34

回答

1

您应该使用文本字段文本并解析它。

long l = Long.parseLong(PID.getText()); 
double d = Double.parseDouble(PID.getText()); 
+0

请注意,您必须尝试捕获解析,因为textfild可能包含一些不是很长的东西或双倍。检查这篇文章:http://alvinalexander.com/java/edu/qanda/pjqa00011.shtml – cholewa1992 2014-10-27 12:34:10

+0

我可以做任何类似的东西与字符串? – OFFLlNE 2014-10-27 15:05:00

+0

String s = PID.getText(); – cholewa1992 2014-10-27 15:08:17

0

是的,你可以使用PID.getText()来获取文本,然后你就可以将其转换成任何你想要的,就像这样:

try{ 
    long id = Long.parseLong(PID.getText()); 
    String name = PNAME.getText(); 
    String description = PDESC.getText(); 
    double price = Double.parseDouble(PPRICE.getText()); 
}catch(Exception e){} 

我已经使用了试图捕获块,因为如果用户在PID中输入了其他内容而不是很长的话,那么它将捕获异常。

相关问题