【问题标题】:Netbeans Platform: how to use a Frame instead of a TopComponent?Netbeans 平台:如何使用 Frame 而不是 TopComponent?
【发布时间】:2016-08-05 06:26:17
【问题描述】:

在我的项目中(使用 Netbeans PlatformJavaFX),它由多个选项卡组成(所有这些选项卡都是在 TopComponent 类的子类中创建的 em>) 我正在尝试实现另一个选项卡,它应该显示已经在 VirtualBox 上运行的虚拟机的屏幕。

问题是我使用的工具是由一个 Frame(来自 Java awt)作为顶级容器组成的,当然,如果我尝试将它添加到我的顶级组件中,我得到一个例外,因为不可能在另一个顶级容器中包含一个顶级容器。

所以,这是我的问题:是否可以在不使用 TopComponent 类的情况下使用 NetBeans 平台创建新组件?我已经尝试过这样做,但没有出现新标签。

@TopComponent.Description(preferredID = "MyTopComponent",
 // iconBase="SET/PATH/TO/ICON/HERE",
 persistenceType = TopComponent.PERSISTENCE_ALWAYS)
@TopComponent.Registration(mode = "editor", openAtStartup = true)
@ActionReference(path = "Menu/Window" /* , position = 333 */ )
@TopComponent.OpenActionRegistration(displayName = "#CTL_MyAction", preferredID = "MyTopComponent")
public class MyTopComponent extends TopComponent {

 /**
  * Logging Facility Instance
  */
 private static final Logger LOG = LoggerFactory.getLogger(MyTopComponent.class);

 private JFXPanel fxPanel;

 private RDPClient rdpClient;

 private Frame rdpFrame;

 public MyTopComponent() {
  initTopComponent();
  initFXComponent();
  setClientProperties();
 }

 @Override
 public void componentClosed() {
  // TODO add custom code on component closing
 }


 private void initTopComponent() {
  setName(Bundle.CTL_MyTopComponent());
  setToolTipText(Bundle.HINT_MyTopComponent());
 }

 private void setClientProperties() {
  putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);
  putClientProperty(TopComponent.PROP_DRAGGING_DISABLED, Boolean.TRUE);
  putClientProperty(TopComponent.PROP_MAXIMIZATION_DISABLED, Boolean.TRUE);
  putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE);
 }

 private void initFXComponent() {

  try {
   rdpClient = new RDPClient();
  } catch (RdesktopException ex) {
   Exceptions.printStackTrace(ex);
  }

  setLayout(new BorderLayout());
  fxPanel = new JFXPanel();
  rdpFrame = rdpClient.getComponent();
  // fxPanel.add(rdpClient.getComponent());
  add(fxPanel, BorderLayout.CENTER);

  Platform.setImplicitExit(false);
 }

如果我尝试在 JFXPanel 中添加框架,则会引发异常。如果我尝试将它直接添加到容器中,也会发生同样的情况。有什么建议吗?

【问题讨论】:

    标签: java swing javafx awt netbeans-platform


    【解决方案1】:

    根据定义,框架是顶级窗口组件。框架不能放在另一个组件内,其他组件放在框架内。

    如果工具只提供一个框架,它必然是它自己的窗口。你唯一能做的就是设置它的位置、尺寸、显示和隐藏它、设置标题、其他框架。

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 2011-11-21
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多