【发布时间】:2016-08-05 06:26:17
【问题描述】:
在我的项目中(使用 Netbeans Platform 和 JavaFX),它由多个选项卡组成(所有这些选项卡都是在 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