如何在NetBeans中刷新自定义bean?

时间:2014-11-19 14:54:14

标签: java swing netbeans matisse

我想在NetBeans IDE中设计一个相对复杂的UI。我认为,将所有这些组件集中在一个专家组中可能会加剧这类专家组的维护难度。

为此,我在扩展JPanel的多个自定义bean中细分了这个结构。在主面板中,我通过调色板工具栏中的选择Bean 按钮将它们包含在内。

每件事看起来都不错,但是当我更改其中一个子bean时,主面板中导入的自定义bean上不会发生更改。

请指出我如何重新加载该bean?感谢

1 个答案:

答案 0 :(得分:3)

  

为此,我已经在多个自定义中分解了这个结构   扩展JPanel的bean。在主要的小组中,我把它们包括在内   选择调色板工具栏中的Bean按钮。

作为首发,我想说它是一个完全有效的应用程序,对于未来的访问者,您按照here描述的步骤将面板添加到主面板。同样可以通过拖放来实现。将bean直接从Projects explorer拖放到Design视图。

  

每件事看起来都不错但是当我改变其中一个子豆时,   主面板中导入的自定义bean不会发生更改。

简短回答如下:

  1. 在“设计”视图中打开主面板。
  2. 转到“导航器”标签。
  3. 右键单击Form MainPanel,然后选择Reload Form选项。
  4. 主面板已更新。
  5. 然而它不起作用,似乎有一个bug report在这个问题上有一个长期存在的问题,他们告诉它不是一个bug而是一个布局经理相关的东西(虽然不是很清楚的解释):< / p>

      

    “问题是MyFrame中的jPanel1生成了布局代码   (GroupLayout) - 设置布局导致组件被删除。该   遗憾的是,GUI构建器不知道有不同的容器   具有自己的布局,因为它仅通过自定义代码指定而不是   在GUI表单中实际实例化。但是,您可以轻松解决此问题    - 只需将MyFrame中jPanel1的布局设置为Flowlayout。这是JPanel的默认布局,因此GUI构建器不会生成任何内容   布局代码和您的自定义面板将保持不变。“

    所以,不清楚为什么GroupLayout导致这种行为,但凭经验解决它你必须:

    1. 将不同的布局管理器设置为自定义面板(即:FlowLayout或GridBagLayout)。
    2. 将这些面板添加到主面板。如果已有这些面板,请将其删除并重新添加。自定义面板至少有一个组件非常重要。
    3. 完成前面的步骤后,可以将自定义面板布局管理器设置回GroupLayout(自由设计),它仍然有效。
    4. 修改自定义面板时,必须对其进行编译(F9),并且需要通过Navigator资源管理器更新主面板表单。
    5. 在继续之前,我建议您不要将布局管理器设置为GroupLayout(步骤3),而是使用GridBagLayout。这不是我最喜欢的,但恕我直言,这是比GroupLayout更好的选择。您可能想看看针对GroupLayout示例herehere的原因(我确信在SO中有更多关于它的内容)。

      现在,请考虑以下示例(对不起扩展名)。

      1。创建自定义面板

      转到新文件 Swing GUI表格 JPanel 。将其命名为CustomPanel

      2。将布局管理器设置为FlowLayout

      注意:默认情况下,它并不意味着它是默认的使用,而是默认的por JPanel类。正如我所说,默认情况下使用的布局管理器是GroupLayout。

      Set layout manager to FlowLayout

      3。将一些组件添加到面板,然后编译文件

      Adding a JButton to the panel

      请注意,生成的代码应该如下所示(根本没有GroupLayout):

      public class CustomPanel extends javax.swing.JPanel {
      
          public CustomPanel() {
              initComponents();
          }
      
          @SuppressWarnings("unchecked")
          // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
          private void initComponents() {
      
              jButton1 = new javax.swing.JButton();
      
              jButton1.setText("jButton1");
              add(jButton1);
          }// </editor-fold>
      
          // Variables declaration - do not modify                     
          private javax.swing.JButton jButton1;
          // End of variables declaration 
      }
      

      4。创建主面板

      按照步骤1创建新的JPanel并将其命名为MainPanel

      5。将CustomPanel添加到MainPanel

      使用palette和Custom Bean,或者从Projects explorer拖放并保存更改。

      Adding CustomPanel to MainPanel

      注意:如果需要,您可以调整此面板的大小。如果您转到导航器选项卡,您将在主面板中看到自定义面板:

      Added CustomPanel to MainPanel

      6。修改自定义面板

      将布局设置回GroupLayout(自由设计)并根据需要进行修改。保存更改并编译文件。

      CustomPanel modified

      7。重新加载主面板的表格

      转到MainPanel设计视图:它仍然保持不变。转到导航器选项卡并重新加载主面板的表单:

      Reload MainPanel Form

      太棒了,主面板现已更新!

      MainPanel updated

      从现在开始,每次我们修改自定义面板时,我们都要编译它们并重新加载主面板的形式(仅步骤6和7:)