- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我遇到了一个问题,这可能是由于对 Netbeans 平台 (7.1.2) 或 JavaFX 2 的某些原理缺乏理解造成的。我想添加一个 JFXPanel
非常简单的 Scene
到作为 TopComponent 子级的 Swing JPanel
。我通过以下代码实现了这一点:
public accexTopComponent() {
initComponents();
setName(Bundle.CTL_accexTopComponent());
setToolTipText(Bundle.HINT_accexTopComponent());
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);
//Begin of my code
myFX = new JFXPanel(); //myFX is a static JFXPanel
Platform.runLater(new Runnable() {
@Override
public void run() {
myFX.setScene(new Scene(ButtonBuilder.create().minHeight(40.0).minWidth(40.0).build()));
}
});
jPanel1.add(myFX);
}
编译没有问题,当我第一次显示 TopComponent
时,会显示 JavaFX Button
。但是一旦组件被隐藏并再次显示,JavaFX Button
就会消失,而其他子项仍然可见。
为什么 JavaFX 内容消失了?
编辑:
我现在包括整个 TopComponent 的源代码。我想这就是您自己测试所需的全部内容。我没有更改任何其他文件。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.jeed.nbgan.accexplorer;
import java.awt.Color;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBuilder;
import javafx.scene.text.TextBuilder;
import javafx.scene.web.WebView;
import javafx.scene.web.WebViewBuilder;
import org.netbeans.api.settings.ConvertAsProperties;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.windows.TopComponent;
import org.openide.util.NbBundle.Messages;
/**
* Top component which displays something.
*/
@ConvertAsProperties(dtd = "-//de.jeed.nbgan.accexplorer//accex//EN",
autostore = false)
@TopComponent.Description(preferredID = "accexTopComponent",
//iconBase="SET/PATH/TO/ICON/HERE",
persistenceType = TopComponent.PERSISTENCE_ALWAYS)
@TopComponent.Registration(mode = "explorer", openAtStartup = true)
@ActionID(category = "Window", id = "de.jeed.nbgan.accexplorer.accexTopComponent")
@ActionReference(path = "Menu/Window" /*
* , position = 333
*/)
@TopComponent.OpenActionRegistration(displayName = "#CTL_accexAction",
preferredID = "accexTopComponent")
@Messages({
"CTL_accexAction=accex",
"CTL_accexTopComponent=Konten-Explorer",
"HINT_accexTopComponent=Durchsuchen von Abteilungen und Konten"
})
public final class accexTopComponent extends TopComponent {
static JFXPanel myFX;
public accexTopComponent() {
initComponents();
setName(Bundle.CTL_accexTopComponent());
setToolTipText(Bundle.HINT_accexTopComponent());
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);
myFX = new JFXPanel();
Platform.runLater(new Runnable() {
@Override
public void run() {
myFX.setScene(new Scene(ButtonBuilder.create().minHeight(40.0).minWidth(40.0).build()));
}
});
jPanel1.add(myFX);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel1.setLayout(new java.awt.GridBagLayout());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(54, 54, 54)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(153, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(74, Short.MAX_VALUE))
);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
// End of variables declaration
@Override
public void componentOpened() {
// TODO add custom code on component opening
}
@Override
public void componentClosed() {
// TODO add custom code on component closing
}
void writeProperties(java.util.Properties p) {
// better to version settings since initial version as advocated at
// http://wiki.apidesign.org/wiki/PropertyFiles
p.setProperty("version", "1.0");
// TODO store your settings
}
void readProperties(java.util.Properties p) {
String version = p.getProperty("version");
// TODO read your settings according to their version
}
}
在我的例子中,这个 TopComponent
是一个名为 AccountExplorer 的组件的一部分,它引用了 JavaFX 并被一个普通的 NB 平台应用程序引用。
最佳答案
试试这个:
Platform.setImplicitExit(false);
关于java - 为什么我的 TopComponent 上的 JavaFX 内容消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618757/
我在使用 Netbean 平台 7.3 进行编程时遇到了一个非常奇怪的问题,基于 Geertjan 关于如何通过操作添加小部件的博客示例 ( https://blogs.oracle.com/geer
目前,当您尝试手动调整 TopComponent 的大小时,它会显示一条黑线,表示 TopComponent 的 future 大小。 我想知道这条黑线后面的JComponent是什么?我如何访问它?
如何以编程方式设置使用 Netbeans 平台应用程序 在编辑器模式下打开的 TopComponent 窗口的大小?我已经在构造函数中尝试了 setSize(500,500) 但它不起作用。 最佳答案
Netbeans 平台的 TopComponents 在许多方面在功能上与 JFrames 相似,并且旨在如此使用,除了 TopComponent 之外。扩展 JComponent。 但是,我目前正在
我正在尝试运行我的简单 java 程序,但遇到了一个大问题。它与 GUI 相连。它不能显示任何创建的窗口。我附加了堆栈跟踪和一个类。 @ConvertAsProperties( dtd
我已经处理这个问题一个多星期了,现在它开始影响我的工作效率。 我有一个 JTextBox,正在对其应用自定义文档过滤器。为了添加此内容,我右键单击该控件,进入“自定义代码”,并在所有内容下方添加了这一
如何在“编辑器”模式下而不是在选项卡中设置两个 TopComponents 的默认位置,如下所示: 但一个挨着一个;像这样: ? 最佳答案 解决这个问题的关键是创建两种新的不同模式,它们具有相同类型的
public class Something { private static Something something = new Something(); public static Someth
我遇到了一个问题,这可能是由于对 Netbeans 平台 (7.1.2) 或 JavaFX 2 的某些原理缺乏理解造成的。我想添加一个 JFXPanel非常简单的 Scene 到作为 TopCompo
我正在使用 Netbeans 平台版本 7.2 和 JDK 1.7 创建应用程序。我希望能够隐藏安装到编辑器位置的 TopComponent 元素上的选项卡。我用谷歌搜索发现this post Gee
事实证明,netbeans 平台对大型应用程序最有用。但是小型应用程序呢? 我正在构建一个小型价目表制作软件,它只有一个 TopComponent,其中包含一个 JTable 和几个按钮。 我已将此组
我希望标题不要太含糊,所以这里是: 我创建了一个 MySQL 数据库,其中存储了两个表:一个包含输入数据,另一个包含输出数据。 之后我编写了一个程序,连接到这个特定的数据库,从输入表中提取数据,解析它
我在 NetBeans 8.0 平台应用程序中创建了一个 TopComponent。我想在其上显示 Canvas ,但是当调用代码以显示 worldwind 组件时,会引发异常: "A java.la
我是一名优秀的程序员,十分优秀!