Java JOptionPane:parentComponent没有有效的父级
我将Java eclipse用于我的数据库,但最终我遇到了如下错误:Java JOptionPane:parentComponent没有有效的父级,java,database,eclipse,swing,wampserver,Java,Database,Eclipse,Swing,Wampserver,我将Java eclipse用于我的数据库,但最终我遇到了如下错误:JOptionPane:parentComponent没有有效的父级我不知道问题出在哪里,请有人解释一下,因为我只是IT专业的二年级学生,我想了解更多关于Java的知识,我想完成我的目标 import java.awt.EventQueue; import java.lang.*; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swi
JOptionPane:parentComponent没有有效的父级
我不知道问题出在哪里,请有人解释一下,因为我只是IT专业的二年级学生,我想了解更多关于Java的知识,我想完成我的目标
import java.awt.EventQueue;
import java.lang.*;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.*;
import javax.swing.*;
public class Login {
Connection connection = null;
private JFrame frame;
private JTextField username;
private JPasswordField password;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Login window = new Login();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Login() {
initialize();
connection = Database.dbconector();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
username = new JTextField();
username.setBounds(127, 55, 200, 50);
frame.getContentPane().add(username);
username.setColumns(10);
password = new JPasswordField();
password.setBounds(127, 125, 200, 50);
frame.getContentPane().add(password);
JButton btnLogin = new JButton("Log in");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String query = "select * from bsit-db where Username=? and Password=?";
PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, username.getText());
pst.setString(2, password.getText());
ResultSet rs = pst.executeQuery();
int count = 0;
while (rs.next()) {
count = count + 1;
}
if (count == 1) {
JOptionPane.showInternalInputDialog(null, "Successfully Login to your account!");
} else {
JOptionPane.showInternalInputDialog(null, "Incorrect ID/Password. Please Try Again!");
}
rs.close();
pst.close();
} catch (Exception e1) {
JOptionPane.showInternalInputDialog(null, e1);
} finally {
try {
} catch (Exception e1) {
JOptionPane.showInternalInputDialog(null, e1);
}
}
}
});
btnLogin.setBounds(103, 202, 112, 37);
frame.getContentPane().add(btnLogin);
JButton btnClear = new JButton("clear");
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
username.setText(null);
password.setText(null);
}
});
btnClear.setBounds(237, 202, 112, 37);
frame.getContentPane().add(btnClear);
JLabel lblUsername = new JLabel("username");
lblUsername.setBounds(66, 55, 200, 50);
frame.getContentPane().add(lblUsername);
JLabel lblPassword = new JLabel("password");
lblPassword.setBounds(66, 125, 200, 50);
frame.getContentPane().add(lblPassword);
}
}
这是控制台错误
Sun Aug 06 20:54:43 CST 2017警告:建立SSL连接
不建议在没有服务器的情况下进行身份验证。相符合的
为了满足MySQL 5.5.45+、5.6.26+和5.7.6+的要求,必须使用SSL连接
如果未指定显式选项,则默认情况下建立
t设置。为了符合不使用SSL的现有应用程序的要求,verifyServerCertificate属性设置为“false”。您需要
通过设置useSSL=false或设置useSSL=true显式禁用SSL
并提供信任库
用于服务器证书验证。
java.lang.RuntimeException:JOptionPane:parentComponent没有有效的父级
位于javax.swing.JOptionPane.createInternalFrame(未知源)
位于javax.swing.JOptionPane.showInternalOptionDialog(未知源)
位于javax.swing.JOptionPane.showInternalMessageDialog(未知源)
位于javax.swing.JOptionPane.showInternalMessageDialog(未知源)
位于javax.swing.JOptionPane.showInternalMessageDialog(未知源)
位于Database.dbconector(Database.java:19)
登录时init>(Login.java:44)
登录时$1.run(Login.java:29)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$500(未知源)
在java.awt.EventQueue$3.run处(未知源)
在java.awt.EventQueue$3.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(未知
(来源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
showInternalInputDialog
用于显示在
JDesktopPane
。而是查看showInputDialog
见这个问题:
showInternalInputDialog
用于显示在
JDesktopPane
。而是查看showInputDialog
见这个问题: