所以,我正在寫一個自動點擊器。我需要檢查用戶是否輸入了游標坐標。為此,我使用文本框。為了檢查,我檢查文本。如果有文本,則觸發條件 1。如果沒有文本,則條件 1 不起作用,但條件 2 也不起作用。
//Condition 1
if(!Window.x.getText().trim().equals(null) && !Window.y.getText().trim().equals(null)) {
x = Integer.parseInt(Window.x.getText().trim());
System.out.println("X - OK");
y = Integer.parseInt(Window.y.getText().trim());
System.out.println("Y - OK");
//Condition 2
}else if(Window.x.getText().trim().equals(null) || Window.y.getText().trim().equals(null)) {
JOptionPane.showMessageDialog(null, "Please specify cursor coordinates(X, Y)", "ERROR", JOptionPane.ERROR_MESSAGE);
return;
}
錯誤:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at com.npesoftware.nautoclicker.Clicker.check(Clicker.java:29)
at com.npesoftware.nautoclicker.Window$1.actionPerformed(Window.java:93)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6379)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
uj5u.com熱心網友回復:
null.equals(null)沒有意義。條件最好表述為null == Window.x.getText(),但假設您使用的是 a JTextField,則保證不會獲得null值。
相反,您應該String#isEmpty在這種情況下使用 orString#isBlank
但是,這并不意味著您獲得的文本可以轉換為int. 在這種情況下,您可以利用JFormattedTextField或JSpinner限制用戶的輸入。
try-catch但是,無論如何,你可能仍然會更安全地將對話包裝在一個塊中......
try {
int x = Integer.parseInt(Window.x.getText().trim());
int y = Integer.parseInt(Window.y.getText().trim());
} catch (NumberFormatException exp) {
JOptionPane.showMessageDialog(null, "Illegal coordinates", "Error", JOptionPane.ERROR_MESSAGE);
}
uj5u.com熱心網友回復:
您應該檢查字串是否為空或包含空格以及是否為空。如果長度> 0,則表示文本框中有非白色文本。
!(Window.x.getText().trim().length() > 0) && !(Window.y.getText().trim().length() > 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/495042.html
