2012-01-12 2 views
0

Я использую следующий код для включения апплета в ScrollPane на мой взгляд для моего затмения плагин:ScrollPane вызывает мой плагин заморозить

@Override 
    public void createPartControl(Composite parent) { 

     composite = new Composite(parent, SWT.EMBEDDED); 
     final Frame frame = SWT_AWT.new_Frame(composite); 
     frame.setLayout(new BorderLayout()); 

     Panel panel = new Panel(); 
     panel.setSize(WIDTH, HEIGHT); 
     pap = new ProcessingEmbedded2();  
     ScrollPane pane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); 

     panel.setLayout(new BorderLayout()); 
     panel.add(pap, BorderLayout.CENTER); 

     frame.add(pane, BorderLayout.CENTER); 
     pane.add(panel); 
} 


public class ProcessingEmbedded2 extends Applet { 


} 

Это работало отлично в Eclipse, RPC/Для разработчиков плагинов, но теперь Я попытался запустить плагин в другом клиенте eclipse. И там ScrollPane заставляет плагин замораживать весь клиент. Я уверен, что это ScrollPane, потому что, если я удалю эту часть кода (т. Е. Я добавлю апплет непосредственно на панель без ScrollPane), плагин работает так, как должен. Кто-нибудь знает проблему, которая вызывает это замораживание?

+2

Try, чтобы получить стек нить следы с [jstack] (http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html), чтобы увидеть, где это в. –

ответ

2

Похоже, что у вас возникла проблема с графическим интерфейсом конкретной платформы, которая специально вызвана системой, пытающейся создать ScrollPane.

Тестирование, которое вы запускали, было хорошим - удаление ScrollPane для спасения аварии, конечно, подразумевает, что эта проблема связана, в частности, с этим компонентом GUI ... или с каким-то компонентом, от которого зависит ScrollPane.

Итак, следующий вопрос: что такое ScrollPane для создания самого себя? Ну, ответ, конечно же, - AWT, т. Е. Набор абстрактных оконных средств java.

К сожалению, поскольку компоненты AWT привязаны к системным компонентам, вы можете столкнуться с несколькими угловыми корпусами, где они не работают отлично. Что делать в таком сценарии? Одно из простых решений - попытаться использовать компонент Swing.

Итак, поскольку я предполагаю, что вы используете ScrollPane AWT здесь - Я бы предложил заменить его Swing JScrollPane. По моему опыту, компоненты Swing гораздо реже приводят к таким видам причуд. Однако есть плюсы и минусы, связанные с каждым набором инструментальных средств. Но, по моему опыту, в целом, если у вас есть программа, которая разбивается на компонент AWT, соответствующий компонент Swing может работать лучше.

См: http://edn.embarcadero.com/article/26970

+0

Спасибо, но ... ты уверен? Я думал, что тэг swt_awt означает, что вы встраиваете AWT в компонент SWT? Я не считаю, что класс ScrollPane существует в SWT: см. Http://dev.eclipse.org/mhonarc/lists/platform-swt-dev/msg01564.html – jayunit100

+0

Ой, извините. Вы должны быть правы. –

Смежные вопросы