java - 如何将我的 TopComponent 用作 JFrame?

标签 java swing netbeans rcp netbeans-platform

Netbeans 平台的 TopComponents 在许多方面在功能上与 JFrames 相似,并且旨在如此使用,除了 TopComponent 之外。扩展 JComponent

但是,我目前正在尝试使用 Docking Frames为我的申请。我想在我的一个 TopComponents 中插入一堆这样的组件,但是控件类需要一个 JFrame 作为参数,没有它就无法实例化。正如我所说,TopComponent 不扩展 JFrame,所以我不能简单地强制转换它们,但遗憾的是,它们可能可以做到这一点如果可以的话。

我能做什么?

最佳答案

请尝试使用嵌套的 JPanel

  1. 单击“设计”并单击鼠标右键并将布局从“自由”更改为 GridBagLayout
  2. 添加内部 JPanel。我使用 GridBagConstraints 因为它只是确保“全帧”布局的一种方法。您或许可以使用任何其他布局来执行相同的操作。

我尽量使 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>

关于java - 如何将我的 TopComponent 用作 JFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989616/

相关文章:

Java 面板重叠菜单

c++ - Windows 7 下使用 C++ 和 OpenGL/Freeglut 的 NetBeans

php - 如何在 NetBeans 的 java web 应用程序项目中运行 php

java - 非法转义字符netbeans

java - 如何使用光学字符识别解析数字 4

java - 使用 native 库(仅限 C,无 C++),并且未找到实现

Java - 更新现有秒表代码以包括倒计时

java - 即使数字相同也会导致 SpinnerNumberModel 更新

java - 避免 Java 8 Files.walk(..) 终止原因 ( java.nio.file.AccessDeniedException )

java - 苹果推送通知服务(APNS): Feedback Service Response has missing byte?