-2

我想在我的框架中添加一个 flash 文件,它工作正常,但是当我使用 netbeans 制作框架时,flash 文件不再工作,但是当我删除“initComponent()”方法时它工作了,但我做到了不想删除此方法,为什么此方法会使 Flash 文件无法正常工作或阻止将其添加到框架中?

这是代码:

public class SimpleFlashExample_1 extends JFrame{ 

 public SimpleFlashExample_1() {

   initComponents();

    JFlashPlayer flashPlayer = new JFlashPlayer();
    flashPlayer.load(getClass(), "/clientserver/fl.swf");
    add(flashPlayer, BorderLayout.CENTER);
  }

  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, 675, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 475, Short.MAX_VALUE)
    );

    pack();
}

  public static void main(String[] args) {

    UIUtils.setPreferredLookAndFeel();
    NativeInterface.open();

    SwingUtilities.invokeLater(new Runnable() {
            @Override
      public void run() {

        new SimpleFlashExample_1().setVisible(true);
    }
   });
    NativeInterface.runEventPump();
  }

}
4

1 回答 1

1

花点时间阅读代码...

public SimpleFlashExample_1() {
    // 1...
    initComponents();
    JFlashPlayer flashPlayer = new JFlashPlayer();
    flashPlayer.load(getClass(), "/clientserver/fl.swf");
    // 3...
    add(flashPlayer, BorderLayout.CENTER);
}

private void initComponents() {
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    // 2....
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 675, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 475, Short.MAX_VALUE)
    );

    pack();
}

首先,您调用initComponents. initComponents调用getContentPane().setLayout(layout);,指定 aGroupLayout作为框架的布局管理器。然后,您将 Flash 播放器添加到框架中,尝试使用BorderLayoutGroupLayout

为什么您的组件实际上没有显示归结为多种因素,我推测 Flash 播放器要么没有首选大小,要么GroupLayout不知道如何处理它,而忽略了该组件

BorderLayout尝试像在表单设计器中一样设置框架的布局

于 2013-08-26T11:43:11.100 回答