Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用NetBeans在Java中修改/添加initComponents()方法的代码?_Java_Swing_Netbeans_Matisse - Fatal编程技术网

如何使用NetBeans在Java中修改/添加initComponents()方法的代码?

如何使用NetBeans在Java中修改/添加initComponents()方法的代码?,java,swing,netbeans,matisse,Java,Swing,Netbeans,Matisse,如何在NetBeans上修改/添加Java中的initComponents()方法的代码?当我尝试添加任何一行代码时,这个区域看起来像是只读的,并且以灰色突出显示!这可能是为了安全,但我想有一种方法可以禁用它。是的,initComponents方法是只读的,以保持对IDE的完全控制。您可以在初始化组件之后立即在构造函数中添加您的组件 public class NewJFrame extends javax.swing.JFrame { /** Creates new form NewJFram

如何在NetBeans上修改/添加Java中的
initComponents()
方法的代码?当我尝试添加任何一行代码时,这个区域看起来像是只读的,并且以灰色突出显示!这可能是为了安全,但我想有一种方法可以禁用它。

是的,initComponents方法是只读的,以保持对IDE的完全控制。您可以在初始化组件之后立即在构造函数中添加您的组件

public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */
public NewJFrame() {
    initComponents();
    myInitComponents();
}

public void myInitComponents() {
}

为了允许在源代码和Matisse GUI编辑器中进行更改,NetBeans禁止在其所谓的“保护块”中进行编辑。 虽然您可以想象IDE能够解释您编写的几乎任何类型的GUI代码,但实际上,IDE开发人员更容易将自动生成的GUI代码封装在一个方法(initComponents())中,并将其余代码留给您编辑

如果您确信自己知道自己在做什么,可以从外部编辑器轻松编辑.java文件,但是:

  • 请确保将当前版本保存在某个位置
  • 完成更改后,在NetBeans可视化编辑器中打开类,检查更改是否没有破坏某些内容

  • 您可能正在使用Matisse GUI工具编写应用程序

    Matisse生成不可编辑的代码块。这是Matisse所要求的,以便工具与代码库保持同步

    Matisse提供了许多选项,允许在代码块之前、之后或内部插入自定义代码,例如
    initComponents()

    见下图:

    这显示了jPanel的属性选项卡和一些代码插入选项

    在GUI编辑器中创建UI时,IDE会重新生成initComponents()方法。该方法是“受保护”的,以防止此重新生成覆盖用户编写的代码

    有几种方法可以间接地向该方法添加代码:

  • 将新零部件拖放到设计中 窗口的编辑器“画布”

  • 输入代码作为其中一个 以下代码属性: 创建前代码,创建后代码 代码,初始化前代码,初始化后代码, 后侦听器代码,预填充 代码、后人口代码和 毕竟设置代码

    还有一些其他代码属性不会改变initComponents()方法。。。但可能非常有用:声明前代码和声明后代码。 注意:这些属性的编辑器不是“丰富的”,因此我建议在“常规编辑器”中创建方法,您只需在initComponents()中调用这些方法


  • 您可以通过定位或更改“基本面板”或控件的“常规”属性来修改initComponents()方法中的代码。

    我通过反复试验发现,在用户看到面板之前需要进行的初始化应添加为“预初始化代码”。在我的例子中,我需要填充一个下拉框(在AWT中称为“选择”)。关于使用Matisse的详细文档似乎很少。所以,我希望这能帮助其他人

    如果在
    设计视图中的组件上单击鼠标右键,然后单击“
    自定义代码”
    ”选项,则可以在
    InitComponent
    代码中修改代码。可以自定义几行显式代码。

    选择所有代码并在外部编辑器(如gedit或记事本)中复制

    然后删除jframe文件

    在同一个包中使用相同的名称在netbeans中创建一个新的java类

    复制编辑器文件中的所有内容,并将其粘贴到新创建的java类中

  • 关闭Netbeans
  • 转到表单文件所在的文件夹路径
  • 备份扩展名为“.form”和“.java”的2个文件
  • 在记事本编辑器中编辑扩展名为“.form”和“.java”的2个文件。例如,如果表单名为“myForm”,则文件夹中必须有文件“myForm.form”和“myForm.java”
  • 第一个文件“.form”是xml文件,第二个“.java”是代码java文件
  • 在保存更改和打开NETBEANS这两个文件中仔细编辑代码。 就这样
    这篇文章被低估了,它是一种添加自定义组件的非常简洁的方式。谢谢。它对我很有用,代码仍然或多或少清晰易读。非常感谢;-)链接已断开。