Что ж, то, как вы создали этот класс, заставляет задуматься, есть ли в вашем проекте еще один класс, который, как предполагается, фактически является классом startup , поскольку в Чтобы отобразить поле ввода для ввода имени, вам нужно создать экземпляр First (не JOptionPane ()), чтобы конструктор мог его запустить.
Если это единственный класс в вашем проекте, вы можете запустить окно ввода, но вам нужно создать экземпляр First в методе main (), например:
public static void main(String[] args) {
/* You could just use: new First(); but you'll see
the NetBeans yellow Warning underline beneath the
code line which you can ignore. Better to provide
a variable to the instance of First as done here. */
First f2 = new First();
}
В целом, может быть лучше просто поместить приглашение для ввода имени непосредственно в метод main () . После того, как имя введено, вы также захотите сохранить это имя в строковой переменной, которая, возможно, является глобальной для всего класса, а не только в рамках Конструктора. String i1
возможно, следует объявить как переменную-член класса и назвать что-то более подходящее, например: String userName;
.
Я понял идею JFrame, поскольку JOptionPanes любят прятаться за IDE ( или другое «Вверху» windows), если отсутствует родительский компонент и используется null . Но если вы сделаете это, настройте его так, чтобы оно непреднамеренно не закрывало ваше приложение со значением свойства EXIT_ON_CLOSE
по умолчанию. Вы бы хотели, чтобы это было DISPOSE_ON_CLOSE
. Вы также хотели бы, чтобы свойство JFrame setAlwaysOnTop было установлено в логическое значение true . После использования JOptionPane обязательно удалите JFrame, иначе ваше приложение будет оставаться активным, пока что-то не закроет его. Вы можете увидеть это в следующем примере:
import javax.swing.*;
public class First {
private static JFrame dialogPARENT; // Parent used for dialogs that don't have a parent.
private static String userName; // Holds the User Name supplied in either the Input Box or Setter method.
// Class Constructor
First() {
dialogPARENT = new JFrame();
dialogPARENT.setAlwaysOnTop(true);
dialogPARENT.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialogPARENT.setLocationRelativeTo(null);
userName = JOptionPane.showInputDialog(dialogPARENT, "Enter Your Name:");
dialogPARENT.dispose(); // dispose of the JFrame.
}
public static void main(String[] args) {
First first = new First(); // Fires the constructor
// Display the User Name. As you can see, basic HTML can
// be used in your Message Box dialog display string.
JOptionPane.showMessageDialog(dialogPARENT, "<html>The name you entered is:<br><br>"
+ "<center><font color=red><b>" + userName + "</b></font></center><br></html>",
"Supplied User Name", JOptionPane.INFORMATION_MESSAGE);
dialogPARENT.dispose(); // dispose of the JFrame.
}
}