จะปิดกล่องโต้ตอบในโค้ดได้อย่างไร?

ดังนั้นฉันจึงสร้างปลั๊กอิน eclipse และฉันได้สร้างกล่องโต้ตอบของตัวเองโดยขยายคลาสกล่องโต้ตอบ

โดยทั่วไปกล่องโต้ตอบของฉันจะเติมข้อมูล treeview ด้วยข้อมูลจากเซิร์ฟเวอร์ บางครั้งไม่สามารถเติมข้อมูลได้ (เนื่องจากเซิร์ฟเวอร์ล่ม) ดังนั้น treeview ของฉันจึงว่างเปล่า

ฉันได้สร้างกล่องโต้ตอบอื่นปรากฏขึ้นเพื่อรายงานข้อผิดพลาดหากฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ ปัญหาของฉันคือฉันต้องการปิดกล่องโต้ตอบเริ่มต้นเมื่อฉันกดตกลงในกล่องโต้ตอบข้อผิดพลาด

ฉันไม่สามารถหาวิธีที่ดีในการทำเช่นนี้ได้ ฉันได้ลองตั้งค่า setBlockOnOpen เป็นเท็จ ฉันได้ลองโทรไป cancelPressed แล้ว ทั้งสองคนไม่ได้ทำงาน ฉันเรียกมันในฟังก์ชัน createDialogArea

แนวคิดใด ๆ เกี่ยวกับวิธีที่ฉันจะทำให้สิ่งนี้ทำงานได้อย่างไร


person Ramis    schedule 10.02.2014    source แหล่งที่มา
comment
คุณช่วยกรุณาโพสต์โค้ดโต้ตอบที่คุณกำหนดเองได้ไหม?   -  person Haresh Chhelana    schedule 10.02.2014
comment
ฉันไม่มีรหัสล่าสุดติดตัว แต่นี่คือโค้ดบางส่วนที่ฉันแก้ไข ซึ่งควรจะง่ายต่อการดูว่าฉันหมายถึงอะไร pastebin.com/gPKca2M7 ดังที่คุณเห็นว่าข้อยกเว้นสำหรับ บรรทัดที่มีความคิดเห็นสามบรรทัดเป็นวิธีแก้ปัญหาสามแบบที่ฉันลองแล้วแต่ไม่ได้ผล   -  person Ramis    schedule 10.02.2014
comment
คุณได้ลองใช้วิธีนี้ cancel() ...   -  person Haresh Chhelana    schedule 10.02.2014


คำตอบ (2)


คุณต้องทำการเรียก close หลังจากการสร้างกล่องโต้ตอบเสร็จสิ้น คุณสามารถทำได้โดยใช้รหัสนี้:

parent.getDisplay().asyncExec(new Runnable()
  {
    @Override
    public void run()
    {
      close();
    }
  });

ในวิธี createDialogArea ของคุณ อย่างไรก็ตาม กล่องโต้ตอบอาจปรากฏขึ้นเป็นเวลาสั้นๆ ควรตรวจสอบก่อนสร้างกล่องโต้ตอบจะดีกว่า

person greg-449    schedule 10.02.2014
comment
ขอบคุณที่ได้ผล (แม้ว่าฉันจะใช้ cancelpressed() เพราะมันจะดีกว่า) - person Ramis; 11.02.2014

โดยพื้นฐานแล้วมันเป็นกล่องโต้ตอบการยกเลิกของผู้ใช้ คุณต้องเรียกใช้ cancelPressed() เพื่อให้มีการจัดการที่สอดคล้องกันหากคุณมีรหัสใด ๆ ที่ขึ้นอยู่กับ returnCode

if(noDataLoaded){
    Display.getDefault().asyncExec(new Runnable() {

     public void run() {
        cancelPressed():
    }
    });
}
person sambi reddy    schedule 10.02.2014