سؤال

لدي مشكلة عند محاولة إضافة PApplet إلى SWT، فإنه يحول نافذة فارغة عندما يجب أن تجعل فقط PApplet. وبعد أي PApplet يعمل في حد ذاته، ولكن ليس في نافذة SWOT.

اعتقدت أن مجرد إضافة PApplet في الإطار يجب أن تفعل في البداية الخدعة، باستخدام رمز البرنامج التعليمي SWT في الكسوف. يبدو أنه لم يكن الأمر بهذه السهولة. هنا رمزي، حيث MyPApplet هو مخصص PApplet:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    Frame frame = SWT_AWT.new_Frame(composite);
    PApplet pApplet = new MyPApplet();
    frame.add(pApplet);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
}

هل فاتني شيء؟

هل كانت مفيدة؟

المحلول

لقد صنعت هذا الدليل الصغير حول كيفية الصمامات المعالجة مع SWT في الكسوف:http://christian.liljedahl.dk/guides/processing-and-swt-in-eclipse.

آمل أن يحل هذا من أجلك.

لدينا "خدعة" هي أن يكون لديك نافذة واحدة لأشياء المعالجة، ونافذة منفصلة مع واجهة المستخدم في مؤشر ترابطها الخاص.

نصائح أخرى

أعتقد أن كل ما في عداد المفقودين هو papplet.init ()؛ انظر الوثائق للفئة: http://dev.processing.org/Reference/core/javadoc/processing/core/papplet.html

أعتقد أن هناك طريقة بديلة لتحقيق ذلك. باستخدام مكون أرجغ كمحول، الذي يحب: أضف Pappleet إلى julternalframe مثل JinternalFrame، ثم تضمين هذا jComponent في المركب SWT.

لقد قمت ببعض الممارسات على ذلك، وهي تعمل بشكل جيد ..

وأيضا لقد قمت بلوغ بعض الملخص حول هذا الموضوع:http://blog.csdn.net/godoorsun/article/details/6747589.

(راجع للشغل، تتم كتابة هذه المقالة باللغة الصينية :(، ربما يمكنك قراءتها من خلال مترجم Google، ولكن رمز المثال على هذه المقالة سهلة الفهم)

ملاحظة: هذا يعمل فقط مع المعالجة 2.2.11 وليس مع 3+2

في رمز OPS، هناك بيانان مفقودان:

  • كما User176840. قال، هناك حاجة للاتصال pApplet.init() قبل فتح قذيفة
  • أيضا، لتعيين Layout إلى قذيفة مثل FillLayout, GridLayout, ، الخ، لذلك شيء مثل shell.setLayout(new FillLayout())

رمز العمل الأساسي:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    Frame frame = SWT_AWT.new_Frame(composite);
    PApplet pApplet = new MyPApplet();
    frame.add(pApplet);
    pApplet.init();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
}

1 في حالتي، كنت أحاول تضمين تطبيق صفيح في مشروع SWT القائم على Mengen، لذلك يمكنني فقط استخدام إصدار المعالجة الأخير فقط (والوحيد) المتوفر لسلسلة 2.x في pom.xml:

    <dependency>
        <groupId>org.processing</groupId>
        <artifactId>core</artifactId>
        <version>2.2.1</version>
    </dependency>

2 السبب في معالجة 3 غير متوافق يمكن العثور عليها هنا و هنا, ، أساسا إعادة هيكلة الكود الرئيسية. حاولت تضمين قماش المعالجة في تطبيق SWT دون جدوى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top