2009-01-14 28 views
17

Để mở một hộp thoại phương thức, bạn cần phải vượt qua một cửa sổ cha, và vượt qua các cờ cần thiết cho hộp thoại là phương thức của khóa học.Làm thế nào để có được cửa sổ bàn làm việc để mở một hộp thoại phương thức trong một dự án dựa trên Eclipse?

Tùy thuộc vào nơi bạn đang ở trong cơ sở hạ tầng nhật thực, việc tìm cửa sổ chính này không phải lúc nào cũng dễ dàng.

Làm cách nào để truy cập cửa sổ chính?

Trả lời

20

Từ một cái nhìn hay một biên tập viên (phần này rất dễ dàng):

this.getSite().getWorkbenchWindow().getShell() 

Từ nơi khác, truy cập vào một cái nhìn hoặc biên tập và tương tự như trên.

Nếu bạn thấy mình trong lớp học mà bạn không có quyền truy cập vào chế độ xem hoặc trình chỉnh sửa, có thể bạn không muốn gọi bất kỳ mã giao diện người dùng nào, nhưng nếu bạn thực sự muốn tự mình chụp chân:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() 
0

không khá chính xác những gì bạn muốn làm nhưng bạn có thể cần phải sử dụng SWT.APPLICATION_MODAL, SWT.DIALOG_TRIM vv khi tạo thoại của bạn để làm cho nó một hộp thoại modal (nhưng có lẽ đó không phải là câu hỏi của bạn là gì).

Xem thông tin này link để biết thêm thông tin.

+0

Vâng, điều đó cũng vậy. Nhưng câu hỏi của tôi là cụ thể hơn về việc tìm kiếm vỏ của cửa sổ bàn làm việc. Tôi đã làm nó 6 tháng trước và đã quên trong thời gian chờ đợi vì vậy tôi nghĩ rằng tôi sẽ thêm titbit kiến ​​thức vào stackoverflow – Tirno

+0

@Tirno - Câu trả lời được trả lời nhiều nhất của tôi về StackOverflow chỉ là ghi chú mà tôi đã viết cho bản thân mình rằng tôi biết rằng tôi sẽ tìm thấy qua Google tháng hoặc năm sau đó khi tôi sẽ lại có cùng một câu hỏi. – ArtOfWarfare

27

Đoạn mã từ câu trả lời trước đó sẽ hoạt động. Tuy nhiên, hãy nhớ rằng bạn chỉ có thể mở hộp thoại của mình từ chuỗi giao diện người dùng. Nếu bạn đang mở hộp thoại từ một chuỗi khác, ví dụ: quá trình nền, bạn cần phải thực hiện một việc như sau:

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { 
    public void run() { 
     Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); 
    } 
}); 

Nếu không, bạn sẽ nhận được ngoại lệ khi tạo hộp thoại.

+0

Tất nhiên, tôi nên thêm điều đó. Đó là nhiều hơn cùng một vấn đề - Bạn phải biết nơi để tìm thấy rằng "getWorkbench()" chức năng. – Tirno