Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Trích dẫn Gửi bởi SITUVNX
    Nuốt sự kiện để nó không gửi thông tin đóng:
    WindowEvent.consume();
    Mình không hiểu lắm về sự kiện này. Bạn có thể giải thích kĩ hơn không?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thế thì không cần phải làm gì hết, giữ nguyên code thế này là đủ (không cần phải xử lý gì hết), bạn thử lại xem [IMG]images/smilies/daydreaming.gif[/IMG]:
    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
            // TODO add your handling code here:
            if (saved != true) {
                int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?","",JOptionPane.YES_NO_CANCEL_OPTION);
    
                if (cont == JOptionPane.YES_OPTION) {
                    try {
                        String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
                        taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());
                    } catch (Exception exc) {
                        System.out.println("not string flavour");
                    }
                }
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi pato24193
    Thế thì không cần phải làm gì hết, giữ nguyên code thế này là đủ (không cần phải xử lý gì hết), bạn thử lại xem [IMG]images/smilies/daydreaming.gif[/IMG]:
    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
            // TODO add your handling code here:
            if (saved != true) {
                int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?","",JOptionPane.YES_NO_CANCEL_OPTION);
    
                if (cont == JOptionPane.YES_OPTION) {
                    try {
                        String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
                        taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());
                    } catch (Exception exc) {
                        System.out.println("not string flavour");
                    }
                }
    }
    Lúc đầu mình cũng làm như vậy nhưng vẫn bị bạn ạ... nên mới phải lên hỏi đây.. [IMG]images/smilies/biggrin.png[/IMG]. bạn còn cách nào khác không?

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    @pato24193: Bạn ấy dang chặn sự kiện đóng chứ không phải đang ở sự kiện thường.
    @lethianqt94: Thế tham số của sự kiện đó chả là kiểu java.awt.event.WindowEvent à?
    Lập trình Java thì bạn cũng biết cách đọc Java-Doc chứ.


    Mã:
    evt.consume(); // để nuốt sự kiện

  6. #6

    Thực thi cancel button ở confirm dialog

    Khi mình kích nút (X) ở cửa sổ notepad (của mình đang làm) thì xuất hiện confirm dialog có muốn lưu file không. Chọn Yes thì lưu rồi thoát, No thì thoát luôn ko lưu. 2 cái đó thì chạy ổn nhưng kích vào nút cancel thì nó thoát luôn cửa sổ màn hình chính. Mình muốn hỏi làm sao để khi kick vào Cancel thì chỉ đóng dialog thôi chứ cửa sổ chính thì vẫn giữ nguyên.

    Đây là code mình đang làm:

    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
            // TODO add your handling code here:
            if (saved != true) {
                int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?","",JOptionPane.YES_NO_CANCEL_OPTION);
    //            JOptionPane.setRootFrame(this);s
                if (cont == JOptionPane.YES_OPTION) {
                    try {
                        String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
                        taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());
                    } catch (Exception exc) {
                        System.out.println("not string flavour");
                    }
                }
                else if (cont == JOptionPane.CANCEL_OPTION) {
                    //phải làm gì ở đây để nó chỉ đóng cái jdialog mà không đóng cửa sổ chính
                }
            }
        }
    cám ơn mọi người trước! hihihih....

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi SITUVNX
    @pato24193: Bạn ấy dang chặn sự kiện đóng chứ không phải đang ở sự kiện thường.
    @lethianqt94: Thế tham số của sự kiện đó chả là kiểu java.awt.event.WindowEvent à?
    Lập trình Java thì bạn cũng biết cách đọc Java-Doc chứ.


    Mã:
    evt.consume(); // để nuốt sự kiện
    Tks bạn nha! Mình sẽ cố gắng!

    - - - Nội dung đã được cập nhật ngày 13-03-2014 lúc 01:56 AM - - -

    Mình đã sửa lại (không biết có đúng không) nhưng nó bị lỗi như này. Mọi người xem giùm mình với
    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
            // TODO add your handling code here:
            int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?");
            if (cont == JOptionPane.YES_OPTION) 
            {
                try {
                    String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
                    taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());
                } catch (Exception exc) {
                    System.out.println("not string flavour");
                }
            }
            else if (cont == JOptionPane.CANCEL_OPTION) {
                ((WindowEvent)evt).consume();// LỖI Ở DÒNG NÀY
               //consume() has protected access in AWTEvent
            }
        }

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    À, quên nhỉ, bạn kéo thả và bắt sự kiện cũng nhờ vào chức năng kéo thả nên không gọi đến consume() được.

    Còn 1 cách nữa là:
    Gọi phương thức này trong hàm dựng của Frame

    Mã:
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);  // Dòng này sẽ làm JFrame khoonng làm gì (khộng đóng) khi mình nhấn nút X.
    Hoặc chỉnh thuộc tính (quên rồi) ở phần kéo thả sang DO_NOTHING_ON_CLOSE. Cứ tí cái nào có DO_NOTHING_ON_CLOSE thì chỉnh sang.

    Trong sự kiện sẽ:

    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                           // TODO add your handling code here:        int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?");        if (cont == JOptionPane.YES_OPTION)         {            try {                String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);                taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());                Dispose(); // Gọi dòng này để đóng JFrame.                // Hoặc                // System.exit(0);            } catch (Exception exc) {                System.out.println("not string flavour");            }        }        else if (cont == JOptionPane.CANCEL_OPTION) {            // Không cần là gì chỗ này.        }    }

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi SITUVNX
    À, quên nhỉ, bạn kéo thả và bắt sự kiện cũng nhờ vào chức năng kéo thả nên không gọi đến consume() được.

    Còn 1 cách nữa là:
    Gọi phương thức này trong hàm dựng của Frame

    Mã:
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);  // Dòng này sẽ làm JFrame khoonng làm gì (khộng đóng) khi mình nhấn nút X.
    Hoặc chỉnh thuộc tính (quên rồi) ở phần kéo thả sang DO_NOTHING_ON_CLOSE. Cứ tí cái nào có DO_NOTHING_ON_CLOSE thì chỉnh sang.

    Trong sự kiện sẽ:

    Mã:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                           // TODO add your handling code here:        int cont = JOptionPane.showConfirmDialog(null, "Do you want to save this text?");        if (cont == JOptionPane.YES_OPTION)         {            try {                String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);                taText.replaceRange(sel, taText.getSelectionStart(), taText.getSelectionEnd());                Dispose(); // Gọi dòng này để đóng JFrame.                // Hoặc                // System.exit(0);            } catch (Exception exc) {                System.out.println("not string flavour");            }        }        else if (cont == JOptionPane.CANCEL_OPTION) {            // Không cần là gì chỗ này.        }    }
    Tks bạn! Mình đã thử và thành công! Hihihi...

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •