Canvas3D не появляется в окне Swing - PullRequest
1 голос
/ 17 октября 2008

Я пытаюсь вставить объект Canvas3D в Swing JPanel, но код, похоже, не работает (т.е. ничего не происходит):

        Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
        SimpleUniverse universe = new SimpleUniverse(canvas);
        BranchGroup root = new BranchGroup();
        root.addChild(new ColorCube());
        universe.addBranchGraph(root);
        universe.getViewingPlatform().setNominalViewingTransform();
        canvasPanel.add(canvas);

Чего мне не хватает? JPanel был создан с использованием визуального редактора NetBean.

Ответы [ 2 ]

3 голосов
/ 17 октября 2008

Вероятно, вам нужно установить менеджер раскладки на панели, который автоматически расширяет дочерние компоненты до полной области. JPanel по умолчанию имеет FlowLayout, который не не расширяет дочерние компоненты. Вместо этого вы можете попробовать BorderLayout, позвонив по номеру:

canvasPanel.setLayout(new BorderLayout());
0 голосов
/ 17 октября 2008

Canvas3D нужен передаваемый ему размер; установка предпочтительной конфигурации из SimpleUniverse не достаточно. В моем случае это означало следующий код:

        // 3D canvas initialization
        Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
        SimpleUniverse universe = new SimpleUniverse(canvas);
        BranchGroup root = new BranchGroup();
        root.addChild(new ColorCube());
        universe.addBranchGraph(root);
        universe.getViewingPlatform().setNominalViewingTransform();
        <strong>canvas.setSize(100, 100);</strong>
        canvasPanel.add(canvas);
...