我在 netbeans 项目扩展上构建了应用程序。我需要在 TopComponet 中单击按钮时显示新的分离的 Jframe。但是当我调用frame.setVisible(true) 时什么也没有发生。我尝试了方法 pack() 但没有帮助。
public void onClick(){
MyFrame frame = new MyFrame();
frame.pack();
frame.setVisible(true);
}
我已经看到一些人遇到了同样的问题,但我还没有找到任何解决方案。
MyFrame 类
public class MyFrame extends javax.swing.JFrame {
public MyFrame() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}
}
编辑:
javax.swing.JFrame t = new javax.swing.JFrame("test");
t.pack();
t.setVisible(true);
//works
MyFrame t = new MyFrame();
t.pack();
t.setVisible(true);
//doesnt work
UserDetailWindowFrame 是 Netbeans 生成的 JFrame。
最佳答案
好吧,我们在一个项目中遇到了 JFrame 和 TopComponent 耦合在一起的一些问题。 我试图提出其中一种方法。这可能会有所帮助。当您启动 Netbeans 平台应用程序时,它会创建一个默认的顶级组件(前提是您自己没有任何顶级组件)。我们想完全忽略默认的顶级组件,并提供我们自己的 JFrame。
当应用程序启动时,我们在配置文件中提供了以下参数(我们的配置文件是 netbeans maven 项目)-
default_options="-J-Dorg.netbeans.core.WindowSystem.show=false"
加载模块后,我们在以下代码块中启动自定义的 JFrame -
WindowManager.getDefault().invokeWhenUIReady(new Runnable(){
@Override
public void run(){
MainJFrame parentJFrame = new MainJFrame("");
parentJFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
parentJFrame.add(myJPanel);// your JPanel will come here
parentJFrame .revalidate();
parentJFrame .repaint();
parentJFrame .setVisible(true);
}
});
如果您始终在同一个 TopComponent 中工作,那么您可能需要在显示自己的 JFrame 之前关闭/隐藏 TopComponent。以下代码可能会有所帮助 -
WindowManager.getDefault().getMainWindow().setVisible(false);
or
WindowManager.getDefault().getMainWindow().setEnabled(false);
希望这有帮助。在 Netbeans 平台应用程序中使用 JFrame 有时可能会很麻烦。
关于java - JFrame 不会显示在 netbeans 平台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27767590/