如何将TopComponent用作JFrame?

时间:2014-06-02 07:46:45

标签: java swing netbeans rcp netbeans-platform

Netbeans平台的TopComponents在功能上与JFrame类似,在很多方面都是如此,除了TopComponent扩展JComponent之外,还可以使用它。

但是,我目前正在尝试将Docking Frames用于我的应用程序。我想在我的一个TopComponents中插入一堆这些,但是控件类需要一个JFrame作为参数,没有它就无法实例化它。正如我所说的那样,TopComponent并没有延伸JFrame,所以我不能简单地投射它们,但遗憾的是,如果我可以那么能。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试使用嵌套的JPanel代替。

  1. 点击“设计”并点击鼠标右键,将布局从“免费”更改为GridBagLayout
  2. 添加内部JPanel。我使用GridBagConstraints因为它只是一种线方法来确保“全帧”布局。您可以使用任何其他布局来执行相同的操作。
  3. 我尽量保持TopComponent尽可能小。所有GUI组件都是嵌套的JPanels。如果您想在没有NetBeans平台的情况下测试代码,只需添加父JFrame而不是TopComponent

    public MyTopComponent() {
       initComponents();
       panel = new MyPanel();
       //ensures that our panel will be using 100% of our TopComponent
       add(panel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
           GridBagConstraints.NORTHWEST, 
           GridBagConstraints.BOTH,
           new Insets(0, 0, 0, 0), 0, 0)
       );
    }
    
    //this code is generated by GUI editor
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {   
        setLayout(new java.awt.GridBagLayout());
    }// </editor-fold>