2013-07-31 32 views
5

Tôi đang làm việc trên dự án Java dựa trên máy tính để bàn đầu tiên của mình. Tôi có 2 câu hỏi thực sựCách thực hiện tác vụ trên OK của JOptionPane.showMessageDialog

1) Cách thực hiện thao tác trên nút OK của JOptionPane.showMessageDialog.I muốn điều hướng đến một Jframe mới nói x.java khi nhấp vào ok.

2) Tôi có bảng có tên là người dùng. Bảng này có 8 cột userid (Primary Key), tên, mật khẩu, emailid, dob, mobileno, thành phố, ngày tháng. Bốn mục cột phải được lấy từ một Jframe x và còn lại bốn từ Jframe khác y.

tôi đã viết đoạn mã sau

Đối Khung 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(); 

Và đối với Khung Y. (userid là khóa chính)

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' "); 

Nó giữ ném ngoại lệ đối với các truy vấn sql trên

java.sql.SQLException: Chỉ số tham số ngoài phạm vi (1> số lượng pa rameters, là 0).

Trả lời

11

1) Cách thực hiện thao tác trên nút OK của JOptionPane.showMessageDialog.I muốn điều hướng đến một Jframe mới nói x.java khi nhấp vào ok.

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 
} 
0

Các showMessageDialog không trả lại một giá trị, vì vậy bất kỳ phải diễn ra trong một JOptionPane khác nhau. Câu trả lời ở trên là một ví dụ điển hình.

Thêm vào câu trả lời ở trên, nếu đầu vào int bằng OK_OPTION, bạn có thể gọi vứt bỏ() trên khung hiện tại (nếu bạn đang di chuyển từ cái này sang ô tiếp theo mà không giữ nguyên) và sau đó tạo một phiên bản mới khung mong muốn.

1

Nó tiếp tục ném ngoại lệ đối với các truy vấn sql trên

java.sql.SQLException: chỉ số Parameter ra khỏi phạm vi (1> số thông số, đó là 0).

Đó là vì bạn đang sử dụng '?' trong báo cáo Cập nhật và ' là không cần thiết. Bạn nên viết lại như thế này (giả sử bạn đang đặt thông số chính xác):

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

Vâng sai lầm ngu ngốc !! Tôi nhận ra sau. Cảm ơn :) – Malwaregeek

0

Đây là mã của tôi trước khi đóng chương trình java và nó hoạt động. Trên no_option chương trình vẫn chạy nhưng bạn phải đặt defaultcloseoperation của khung của bạn trên: 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