【发布时间】:2017-05-31 05:39:12
【问题描述】:
如何在 NetBeans 上的 Java 中修改/添加代码到 initComponents() 方法?当我尝试添加任何代码行时,该区域似乎是只读的,并且以灰色突出显示!可能是出于安全考虑,但我想有一种方法可以禁用它。
【问题讨论】:
标签: java swing netbeans matisse
如何在 NetBeans 上的 Java 中修改/添加代码到 initComponents() 方法?当我尝试添加任何代码行时,该区域似乎是只读的,并且以灰色突出显示!可能是出于安全考虑,但我想有一种方法可以禁用它。
【问题讨论】:
标签: java swing netbeans matisse
是的,initComponents 方法是只读的,以保持对 IDE 的完全控制。您可以在 initComponents 之后将您的添加到构造函数中。
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 文件,但是:
【讨论】:
大概您正在做的是使用 Matisse GUI 工具编写应用程序。
Matisse 生成不可编辑的代码块。这是 Matisse 要求的,以便该工具与代码库保持同步。
Matisse 提供了许多选项,允许在代码块之前、之后或内部插入自定义代码,例如 initComponents()。
见下图:
这显示了 jPanel 的属性选项卡和一些代码插入选项。
【讨论】:
当您在 GUI 编辑器中创建 UI 时,IDE 会重新生成 initComponents() 方法。该方法被“保护”以防止这种重新生成覆盖用户编写的代码。
有几种方法可以间接地向这个方法添加代码:
将新组件拖放到设计中 窗口的编辑器“画布”。
输入代码作为其中之一的一部分 以下代码属性: 创建前代码,创建后 代码、初始化前代码、初始化后代码、 后监听代码,预填充 代码、人口后代码和 全部设置代码。
还有一些其他代码属性不会改变 initComponents() 方法...但可能非常有用:预声明代码和后声明代码。 alt text http://blogs.sun.com/vkraemer/resource/code-properties.png 注意:这些属性的编辑器并不“丰富”,因此我建议您在您只需在 initComponents() 中调用的“常规编辑器”中创建方法。
您可以通过定位或更改“基本面板”或控件的“常规”属性来修改 initComponents() 方法中的代码。
【讨论】:
我通过反复试验发现,在用户看到面板之前需要完成的初始化应该添加为“预初始化代码”。就我而言,我需要填充一个下拉框(在 AWT 中称为“Choice”)。关于使用 Matisse 的详细文档似乎很少。所以,我希望这对其他人有帮助。
【讨论】:
如果在Design View中的组件上单击鼠标右键,然后点击“Customize Code”选择,可以修改InitComponent代码中的代码。可以自定义几行显式代码。
【讨论】:
选择所有代码并在 gedit 或记事本等外部编辑器中复制。
然后删除你的 jframe 文件。
在同一个包的netbeans中新建一个同名的java类。
从编辑器文件中复制所有内容并将其粘贴到新创建的 java 类中。
【讨论】:
【讨论】: