Tôi muốn tạo hộp thoại nhập khi bản ghi mới được tạo và lưu đầu vào của người dùng dưới dạng input
vào tệp.Lỗi khi hủy showInputDialog
Đây là mã:
String input = JOptionPane.showInputDialog(null, "Enter name : ", "New Record!", 1); //This to let user input name
try
{
JOptionPane.showMessageDialog(null, "Thanks for playing.", "Thanks", 1); //Show this dialog after user input
HighestScoreFile.HighestScoreFile(input, hours, minutes, seconds, click); //Store the data into a file, the `method` is in another class.
}
catch(IOException ex){}
Khi không có đầu vào người dùng hoặc bất kỳ đầu vào, các OK
nút làm việc tốt, nhưng nếu tôi nhấp vào nút cancel
, nó sẽ trả về các lỗi này:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at HighestScoreFile.HighestScoreFile(HighestScoreFile.java:22)
at MemoryGame$ButtonListener.actionPerformed(MemoryGame.java:329)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Tôi có thể giải quyết nó bằng cách nào?
Cảm ơn. Nó hoạt động tốt. Xin lỗi một lần nữa cho câu hỏi nhỏ của tôi. – Chin
Nó có thể được sử dụng một số đề cập đến rằng không phải tất cả 'JOptionPane.showInputDialog (...)' phương pháp mô tả những gì được trả lại khi đóng hộp thoại nếu nút Cancel được nhấp. Chỉ có phương thức có số tham số lớn nhất yêu cầu trả về 'null' nếu Cancel được nhấp. – Timmos
@Timmos Điểm tốt. Các tài liệu Java có thể là một chút ngớ ngẩn ở lần, và 'giả định' kiến thức mà không rõ ràng cho người dùng (chúng tôi). Tôi gần như có thể nhìn thấy các lập trình viên khi họ đã có mã nguồn mở và được (buộc phải) viết bình luận mã. Đó là 'rõ ràng' đối với họ hơn mỗi phiên bản ngắn hơn, được gọi là phiên bản toán hạng nhiều hơn với 'null' hoặc mặc định chuẩn - vì vậy nó không bao giờ * xảy ra * để họ đề cập đến trong tài liệu .. Tôi khá chắc chắn chúng ta có thể giả định rằng, nhưng nó sẽ là tốt đẹp để thấy rằng một cách rõ ràng tài liệu. Hoặc ít nhất là '@see 'phiên bản này sử dụng để biết thêm chi tiết ..''. –