Так что я пытаюсь создать экран входа в систему, который запрашивает у пользователя текстовое поле и 2 кнопки (Вход и Отмена). Когда пользователь обращается к логину, я хочу, чтобы значение JTextField
хранилось в переменной или, по крайней мере, могло быть использовано. Когда я пытаюсь сделать что-либо с помощью метода playerNameTxt.getText()
, я получаю сообщение об ошибке, как будто playerNameTxt
не существует.JTextField сохраняет вход пользователя как String
public class GUI extends JPanel implements ActionListener {
protected JTextField playerNameTxt;
public GUI() {
JTextField playerNameTxt = new JTextField(20);
JLabel playerNameLbl = new JLabel("Enter Player Name");
JButton loginBtn = new JButton("Login");
loginBtn.setVerticalTextPosition(AbstractButton.BOTTOM);
loginBtn.setHorizontalTextPosition(AbstractButton.LEFT);
loginBtn.setMnemonic(KeyEvent.VK_D);
loginBtn.setActionCommand("login");
loginBtn.addActionListener(this);
loginBtn.setToolTipText("Click this to Login");
JButton cancelBtn = new JButton("Cancel");
cancelBtn.setVerticalTextPosition(AbstractButton.BOTTOM);
cancelBtn.setHorizontalTextPosition(AbstractButton.RIGHT);
cancelBtn.setMnemonic(KeyEvent.VK_M);
cancelBtn.setActionCommand("cancel");
cancelBtn.addActionListener(this);
cancelBtn.setToolTipText("Click this to Cancel");
add(playerNameLbl);
add(playerNameTxt);
add(loginBtn);
add(cancelBtn);
}
public void actionPerformed(ActionEvent e) {
if ("login".equals(e.getActionCommand())) {
System.out.println(playerNameTxt);
} else {
System.exit(0);
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("-- Munitions Login --");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(400, 200);
GUI newContentPane = new GUI();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Мне нужно изменить JLabel и JButtons быть объявлены так же делать? –
@ThomasSteinholz Я бы всегда объявлял их глобальными, а не локальными переменными, но в вашем случае нет необходимости в этом (поэтому в вашем случае это не имеет значения) – msrd0