【发布时间】:2011-07-13 03:25:19
【问题描述】:
又是我,我似乎无法让这段代码工作。我基本上是在询问有关为什么单击按钮时什么都不做的任何建议。要不要我附上源代码?
我正在尝试实现的方法:
public static void UserInput() {
try {
stmt = connect.createStatement();
ResultSet res = stmt.executeQuery("SELECT * FROM " + tableName);
while (res.next()) {
if (res.getString("Username").equals(usernameField.getText())) {
if (res.getString("Password").equals(passwordField.getPassword())) {
JOptionPane.showMessageDialog(null, "Correct", "Correct",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Error. Incorrect "
+ "username or password.", "Error",
JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null, "Error. Incorrect "
+ "username or password.", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
res.close();
stmt.close();
connect.close();
} catch (SQLException sqlExcept) {
sqlExcept.printStackTrace();
}
}
我是这样称呼它的:
if(firstTime == false) {
JavaDB jdb = new JavaDB();
}
JavaDB window = new JavaDB("");
window.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
这里是 actionListner:
submit = new JButton("Submit");
c.add(submit);
submit.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
if(e.getSource().equals(submit)) {
UserInput();
}
}
}); ;
如果您需要更多信息,请告诉我。我一直在自学 Java,但我真的不知道该学什么,所以欢迎任何提示。我也是堆栈溢出和发布代码的新手,所以你能给我的任何东西都将不胜感激。提前致谢。
编辑:我现在添加了一个用于事件处理的类,其中包含这样的线程;
public class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource().equals(submit)){
Thread th = new Thread(new JavaDB());
th.start();
th.run();
try {
th.wait();
} catch (InterruptedException e1) {
}
}
else{
System.exit(0);
}
}
我将 UserInput 更改为 run()。但是,现在当我单击提交按钮时,GUI 消失了。仅供参考,这是我的主要方法:
public static void main(String args[]) throws SQLException,
InterruptedException {
createConnection();
boolean firstTime = firstTime();
if (firstTime) {
JavaDB db = new JavaDB("");
db.createAccount();
try {
connect = DriverManager
.getConnection("jdbc:derby:\\KeithDB;shutdown=true");
} catch (SQLException XJ015) {
}
}
if (firstTime == false) {
JavaDB jdb = new JavaDB();
Thread th = new Thread();
}
JavaDB window = new JavaDB("");
window.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
还有什么需要告诉我
【问题讨论】:
-
我在您发布的代码块中看不到一点 ActionListener 代码。为什么它在不涉及使用 ActionListeners 的情况下如此命名?另外,您的问题和问题具体是什么?您发布的只是一个模糊的愿望和一些不相关的代码。我认为,如果我们有机会帮助您,我们可能需要更多。
-
好的,现在我们看到了一些 ActionListener 代码,所以我们到了某个地方。我认为此时您需要进行一些调试,包括在程序中放置
System.out.println("at position 002 in code and foo variable is: " + foo);语句以检查是否正在调用您认为应该调用的方法以及该时间点其变量的状态。 -
我在调用者中添加了 System.out 子句和一个线程。我使用 Thread.start、Thread.wait 和 Thread.stop。在 Thread 之前,System.out 没有出现。之后,它确实如此,以及非法监视器异常。顺便说一下,我将 System.out 放在了 UserInput 中。但是,我知道有一个运行时错误。我输入的每个用户名和密码,即使它在数据库中,也会显示错误消息。我可以尝试将源代码发送给您,以便您自己查看。还有什么需要我做的吗?
标签: java database swing actionlistener