Я пытаюсь сделать «модальный» JDialog (я надеюсь, что так оно и должно быть), я хочу ввести свой пароль и пароль в свой диалог, и если это правильно, тогда откройте мой основной JFrame где я разбираю некоторую информацию. Моя проблема возникает, когда я делаю кнопку входа в систему, я не могу ссылаться на текущий объект (это) с его текстовыми полями и т. Д .; Это код, а вот ошибка:JDialog логин с JFrame
Кроме того, я немного путают, потому что, когда у меня будет успешной регистрации, я должен открыть JFrame не ..... конечно, как действовать, потому что я должен работать только с одним JFrame и переключать свои панели. Заранее спасибо
package test_area;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class jpanel1 extends JFrame{
static boolean loginBool = false; //if this goes true, then I go to my frame
// JPANEL---------------------------------------------
public static class panel1 extends JPanel implements ActionListener{
//simple constructor
public panel1(){
JPanel a = this;
a.setLayout(new GridLayout(5,1,5,5));
JLabel username = new JLabel("Username");
JTextField usernameTxt = new JTextField(8);
JLabel password = new JLabel("Password");
JPasswordField passwordTxt = new JPasswordField(55);
JButton doIt = new JButton("Log In");
doIt.addActionListener(this);
a.add(username);
a.add(usernameTxt);
a.add(password);
a.add(passwordTxt);
a.add(doIt);
a.setSize(200,200);
a.setVisible(true);
}
//constructor with param
// public panel1(JLabel a, JTextField b, JLabel c, JPasswordField d, JButton e){
//}
//@Overwritten method
@Override
public void actionPerformed(ActionEvent ae) {
String user;
String pw;
user = a.usernameTxt.getText();
pw = a.passwordTxt.getText();
// package does not exist
}
}
// JPANEL---------------------------------------------
//JFrame
public jpanel1(){
JFrame frame = new JFrame("Login Pane");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new panel1());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args)
{
jpanel1 gg = new jpanel1(); //frame;
}
}
Заявленный статический булево, который должен умереть, как только Войти правильно, то каким-то образом открыть новый JFrame ...
'JPanel a = this;' не имеет смысла, просто используйте 'this' и создайте' usernameTxt' и 'passwordTxt' переменные класса, а не локальные переменные. – DSquare
Большое спасибо за эту коррекцию, отлично работающую. – ExtremeSwat
См. [Пример] (http://stackoverflow.com/a/20286447/2587435) –