public class checkUsernames extends JFrame {
private static JTextArea textArea1;
private static JButton button1;
private static JScrollPane scrollPane1;
private static JTextField textField1;
private static JPasswordField passwordField1;
private static JLabel label3;
private static JButton button2;
private static JLabel label1;
private static JLabel label2;
public checkUsernames() {
initComponents();
}
public static void main(String[] args) throws IOException {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Nimbus isn't available");
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
checkUsernames GUI = new checkUsernames();
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GUI.setVisible(true);
}
});
String username = textField1.toString();
String password = passwordField1.toString();
Exception in thread "main" java.lang.NullPointerException
checkUsernames
是唯一的课程。当我尝试运行应用程序时,程序会进一步执行(不使用String username& String password)而不等待输入。我该如何解决这个问题?
答案 0 :(得分:2)
如果您希望代码执行在等待输入时停止,请改为JFrame
模式JDialog
或JOptionPane
。
答案 1 :(得分:1)
您的私有静态成员似乎都没有初始化。在使用之前初始化每个创建的对象之前,不会超过NullPointerException。
我不知道你在谈论什么。你必须为所有这些对象做这样的事情:
private static JTextArea textArea1 = new JTextArea();
您没有输入用户名或密码;您正在创建一个文本区域UI元素,可以在输入时接受它们。
答案 2 :(得分:1)
invokeLater 稍后会调用该代码。它不保证jtextfield1.toString()在 checkUserNames()之后执行
答案 3 :(得分:1)
为什么不使用SwingUtilities.invokeAndWait()?这似乎可以立即解决您的问题。
以下是一个简单的例子:
import javax.swing.SwingUtilities;
public class InvokeAndWaitExample {
public static void main (String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable () {
public void run () {
System.out.println("Hello World on " + Thread.currentThread());
}
});
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Finished on " + Thread.currentThread());
}
}