제 질문에 대한 직접적인 답을 찾지 못했습니다.setVIsible (false); from JFrame
'aClass'내에 'aclass'라는 클래스를 만들었습니다. 데이터베이스에 대해 입력 된 값을 확인하는 if 문을 포함하는 액션 핸들러입니다.
내가 원했던 것은 if 문 중 하나에서 theFrame.setVIsible (false)을 사용하여 'aClass'에서 만든 JFrame 'theFrame'을 숨기는 것이었지만 'theFrame'이 표시됩니다. 범위를 벗어나면 내 IDE가 나를 허용하지 않을 것입니다. 코드의
현재 버전 (이하 '이 작동하지 않습니다'참조) :
public class aClass{
static JTextField USER_NAME;
static JPasswordField PASSWORD;
static JButton submit;
private static class Handler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String USER_NAME_I = USER_NAME.getText();
String PASSWORD_I = PASSWORD.getText();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(aClass.class.getName()).log(Level.SEVERE, null, ex);
}
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/fake",
/*DB USER_NAME*/ "fakeuname",
/*DB password*/ "fakepassword");
Statement st = con.createStatement();
String FindQuery = "SELECT acc_pass FROM users where acc_name='"+USER_NAME_I+"'";
//System.out.println(FindQuery);
ResultSet rs = st.executeQuery(FindQuery);
if(rs.next())
{
String PASSWORD_DB = rs.getString(1);
if(PASSWORD_DB.equals(PASSWORD_I))
{
//THIS WILL NOT WORK
loginFrame.setVisible(false);
//do something
}
else
{
JOptionPane.showMessageDialog(null,
"Wrong Password",
"Error",1);
}//end else
}//end if (rs.next())
else
{
JOptionPane.showMessageDialog(null,
"Wrong Username",
"Error",1);
}//end else
} catch (SQLException ex)
{
Logger.getLogger(aClass.class.getName()).log(Level.SEVERE, null, ex);
}//end catch (SQLException ex)
}//end ActionEvent
}//end ActionListener
aClass(){
JFrame loginFrame = new JFrame("Logon");
loginFrame.setVisible(true);
loginFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
USER_NAME = new JTextField(10);
PASSWORD = new JPasswordField(10);
loginFrame.setLayout(new GridLayout(0,1));
JPanel loginPanel = new JPanel();
loginFrame.add(loginPanel);
loginPanel.add(new JLabel("User Name: "));
loginPanel.add(USER_NAME);
loginPanel.add(new JLabel("Password: "));
loginPanel.add(PASSWORD);
submit = new JButton("Submit");
loginPanel.add(submit);
submit.addActionListener(new Handler());
}//end aClass
public static void main(String args[])
{
new aClass();
}//end main
}//end class
편집 : 주제에 대한 나의 지식은 제한되어, 위의 코드는 내가 찾은 온라인 자습서의 편집 된 버전입니다. 필자는 JOptionPane을 사용하여 worki로 가져올 수 있는지 살펴보고 도움이 필요한 경우 다시 편집합니다.
-removed comment- 실제로'ActionListener'를 구현하는 클래스에서 JFrame을 생성하면 안됩니다. –