【问题标题】:How to make JTextField into String/Long?如何将 JTextField 变成 String/Long?
【发布时间】:2014-10-27 12:10:52
【问题描述】:

目前我的字段是这样的:

 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;
}   

尝试将此方法与我的 JTextFields 中的值一起使用,但它不允许在我的 Long/String/double 位置下使用 JTextFields。 有什么方法可以在不编辑我的方法的情况下将我的JTextFields 转换为所需的东西。

【问题讨论】:

  • A JTextField 将始终包含文本(字符串)。你可以解析,转换,做任何你想做的事情。如果你想要一个 UI 控件,它只允许数字,那么你可以使用 JSpinner 例如。
  • 查看this answer 以获取使用JFormattedTextField 的示例

标签: java swing parsing methods jtextfield


【解决方案1】:

您应该使用文本字段文本并对其进行解析。

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

【讨论】:

  • 请注意,您必须尝试捕获解析,因为 textfild 可能包含一些不是 long 或 double 的内容。查看这篇文章:alvinalexander.com/java/edu/qanda/pjqa00011.shtml
  • 我也可以用字符串做类似的事情吗?
  • String s = PID.getText();
【解决方案2】:

是的,您可以使用 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){}

我使用了 try-catch 块,因为如果用户在 PID 中输入其他内容而不是 long,那么它将捕获异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 2021-10-24
    • 2013-10-31
    • 2011-12-03
    相关资源
    最近更新 更多