我的回答不能解决问题。它宁愿呼应以前的答案。首先,我没有在 NetBeans 的变量面板中看到 $ 符号。似乎它在当前版本中被替换为上下文菜单。
在“变量格式化程序”对话框中,关于如何引用要调试的变量,我还没有找到实际问题的答案。像“this”或“$1”这样的东西肯定不起作用。此外,该设施似乎不了解 SimpleDateFormatter 等标准 Java JRE 类。
所以在调试 Java JRE 类时,我猜你必须接受他们在公共方法方面提供的内容。
如果您遇到低于版本 8 的 JDK(如我),这里有一个特别用户友好的 Date 类的解决方法。只需通过
在 NetBeans 中创建一个新的变量格式化程序
Tools > Options > Java > Variable Formatters > Add
然后在“类类型”编辑字段中输入:
java.util.Date
在“由代码 sn-p 格式化的值”下使用下一个 sn-ps 之一。
// German format - "dd.MM.yyyy hh:mm"
((getDate() < 10) ? ("0" + getDate()) : getDate()) + "." + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "." + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds())
// US format - "MM/dd/yyyy hh:mm"
((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "/" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + "/" + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds())
// ISO-8601 - "yyyy-MM-dd hh:mm"
(getYear() + 1900) + "-" + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "-" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + " " + ((getHours() < 10) ? ("0" + getHours()) : getHours()) + ":" + ((getMinutes() < 10) ? ("0" + getMinutes()) : getMinutes()) + ":" + ((getSeconds() < 10) ? ("0" + getSeconds()) : getSeconds())
下一个 sn-p 也可以派上用场,当您迷失在 java.util.Calendar 实例的调试输出过度杀伤中时:
// German format - "dd.MM.yyyy hh:mm"
((get(5) < 10) ? ("0" + get(5)) : get(5)) + "." + ((get(2) < 9) ? ("0" + (get(2) + 1)) : (get(2) + 1) ) + "." + (get(1)) + " " + ((get(10) < 10) ? "0" + get(10) : get(10)) + ":" + ((get(12) < 10) ? "0" + get(12) : get(12)) + ":" + ((get(13) < 10) ? "0" + get(13) : get(13))