如何对JOptionPane.showMessageDialog的OK执行操作

时间:2013-07-31 19:41:30

标签: java mysql swing jdbc joptionpane

我正在开发我的第一个基于桌面的Java项目。我实际上有两个问题

1)如何对JOptionPane.showMessageDialog的OK按钮执行操作。我想在单击确定时导航到新的Jframe说x.java。

2)我有一个名为user的表。此表有8列userid(主键),名称,密码,emailid,dob,mobileno,city,date。必须从Jframe x中获取四个列条目,而从其他Jframe y中获取四个列条目。

我写了以下代码

对于第X帧

PreparedStatement stm = con.prepareStatement("insert into user  

(userrid,name,password,emailid))values (?,?,?,?) ");

      stm.setString(1,id); // id is a public variable
      stm.setString(2,name);
      stm.setString(3,ps);
      stm.setString(4,email);
     stm.executeUpdate();

对于第Y帧(用户ID是主键)

public class Y extends javax.swing.JFrame
{  
    X o = new X(); // to access id variable from frame X

} 



PreparedStatement stm = con.prepareStatement(" update user set  dob ='? ', mobileno 
='?' ,city='?', date='?'  where userid= 'o.id' ");  

它不断抛出上述sql查询的异常

java.sql.SQLException:参数索引超出范围(1>参数个数,为0)。

4 个答案:

答案 0 :(得分:14)

  

1)如何对JOptionPane.showMessageDialog的OK按钮执行操作。我想在单击确定时导航到新的Jframe说x.java。

int input = JOptionPane.showOptionDialog(null, "Hello World", "The title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);

if(input == JOptionPane.OK_OPTION)
{
    // do something
}

答案 1 :(得分:1)

  

它不断抛出上述sql查询的异常

     

java.sql.SQLException:参数索引超出范围(1>数   参数,即0)。

那是因为您在Update语句中使用'?'并且不需要'。你应该这样重写(假设你正确设置参数):

PreparedStatement stm = con.prepareStatement("UPDATE user SET dob = ?, mobileno = ?, city = ?, date = ?  where userid= 'o.id' ");

答案 2 :(得分:0)

showMessageDialog不返回值,因此任何必须在不同的JOptionPane中进行。上面答案中的一个是一个很好的例子。

添加上面的答案,如果int输入等于OK_OPTION,你可以在当前帧上调用dispose()(如果你在不保留原文的情况下从一个移动到另一个),然后创建一个新的实例期望的框架。

答案 3 :(得分:0)

在关闭我的java程序之前,这是我的代码,它可以工作。在no_option程序仍在运行但您必须设置框架的defaultcloseoperation:setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

int dialogResult = JOptionPane.showConfirmDialog(frame, "Are you sure to close this window?", "Really Closing me?",JOptionPane.OK_CANCEL_OPTION);
            if (dialogResult==0){
                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    try{
                    myDBExecuter.closeConnection();
                    myDBExecutero.closeConnection();
                    }catch(Exception e){
                        JOptionPane.showMessageDialog(null,new JTextField(" GoodBye :( "));
                    }
                     System.exit(0);
            }else contentPane.updateUI();//after else can you put what you want als alternative