2011-06-25 114 views
4

好的,我試圖從NASA添加World Wind globe到由NetBeans GUI Builder創建的GUI窗口。我的示例代碼實例化了自己的窗口,並且GUI構建器會讓我不編輯必要的區域以便將其放入:)我會編寫自己的,但這是NetBeans平臺應用程序的一部分,並且包含代碼和註釋我沒有準備好處理呢。我不知道如何做到這一點。下面是示例代碼,我想在窗口:將自定義組件添加到NetBeans GUI構建器! (WorldWind)

public class WorldWindTest { 

public static void main(String[] args) { 

    //create a WorldWind main object 
    WorldWindowGLCanvas worldWindCanvas = new WorldWindowGLCanvas(); 
    worldWindCanvas.setModel(new BasicModel()); 
      Position myPoint = Position.fromDegrees(31.12, -88.64, 35000); 


    //build Java swing interface 
    JFrame frame = new JFrame("World Wind"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.add(worldWindCanvas); 
    frame.setSize(800,600); 
    frame.setVisible(true); 

    //create some "Position" to build a polyline 
    LinkedList<Position> list = new LinkedList<Position>(); 

//   list.add(Position.fromDegrees(i,0.0,i*20000)); 
    } 

      list.add(Position.fromDegrees(30.12, -85.64, 35000)); 
      list.add(Position.fromDegrees(31.12, -88.64, 35000)); 


    //create "Polyline" with list of "Position" and set color/thickness 
    Polyline polyline = new Polyline(list); 
    polyline.setColor(Color.RED); 
    polyline.setLineWidth(3.0); 

    //create a layer and add Polyline 
    RenderableLayer layer = new RenderableLayer(); 
    layer.addRenderable(polyline); 
    //add layer to WorldWind 
    worldWindCanvas.getModel().getLayers().add(layer); 
} 
} 
+1

這就是爲什麼我不使用GUI構建器......他們的「便利」通常被證明是不便的。 :) – mre

+1

是的,我聽到你,但他們有點在NetBeans平臺中將你引入它。 –

+1

您仍然可以使用NetBeans代碼生成添加一個使用BorderLayout的容器,然後使用自定義代碼將WorldWindowGLCanvas添加到BorderLayout.CENTER位置的容器中。 –

回答

4

要放大我的評論,我在想,你可以創建一個類,說叫SetUpWorldWindowGLCanvas,並在其中,初始化和設置您的WorldWindowGLCanvas對象,並然後給它一個公共的getter方法,讓你可以獲得設置的WorldWindowGLCanvas對象。即,

public class SetUpWorldWindowGLCanvas { 

    WorldWindowGLCanvas worldWindCanvas = new WorldWindowGLCanvas(); 

    public SetUpWorldWindowGLCanvas() { 
     worldWindCanvas.setModel(new BasicModel()); 
     Position myPoint = Position.fromDegrees(31.12, -88.64, 35000); 

     // ... etc 
    } 

    public WorldWindowGLCanvas getWwGlCanvas() { 
     return worldWindCanvas; 
    } 
} 

,然後將這個BorderLayout.CENTER在在你的GUI構建器中創建和使用的BorderLayout作爲其佈局管理一個JPanel。

+0

用於封裝。也可以將其作爲一個或多個代碼生成屬性進行插入,但描述起來會很尷尬。 – trashgod

+0

這是行得通的。現在與dang .dll有一個問題,但這種方法是可靠的。謝謝! –

3

而不是使用您的整個應用程序的GUI編輯器,限制了它的使用只是幾個貨櫃的是將最受益於它,例如困難的佈局。然後您的WorldWindowGLCanvas可以正常添加到您的top-level container。在這種exampleWorldWindowGLCanvas會一起出現NewJPanel

JFrame f = new JFrame(); 
f.setLayout)new GridLayout(1, 0); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.add(worldWindCanvas); 
f.add(new NewJPanel()); 
f.pack(); 
f.setVisible(true); 
+0

我認爲你的答案與我的相關。那麼,自GMTA以來,1票以上的投票,以及OP顯然不會回來。 –

+0

哈哈,我回來了,我回來了。剛剛起牀,需要一些時間來享受你的生日,無法編碼所有的時間:)去嘗試這些,回到你的幾個。 –

相關問題