Netbeans GUI构建器中的静态变量

时间:2014-02-28 18:30:28

标签: java user-interface netbeans static

我使用Netbeans和GUI构建器开发了一个Java应用程序,它是一个相当复杂的GUI,并且认为这比任何其他方式都要容易,而且它到目前为止肯定是这样。现在我的应用程序已经完成,我正在寻找整理代码,我注意到我必须使一些变量静态,以便将它们传递给代码中的方法。 问题是GUI构建器生成的只读代码的数量,这意味着我无法将变量传递给使用它们的方法,但我根本无法找到解决方法。

例如:

private void increaseSaturationButton(java.awt.event.ActionEvent evt) {                                         
increaseSaturation(colouredImage);
}

我无法修改专栏private void increaseSaturationButton(java.awt.event.ActionEvent evt) { 如果colouredImage不是静态的,那么我无法将其传递给此方法并使用increaseSaturation();调用它。有什么方法可以解决这个问题,或者这只是使用GUI构建器的缺点吗?或者,这只是我的愚蠢吗?

非常感谢提前

2 个答案:

答案 0 :(得分:0)

您可以访问colouredImage之类的非静态变量,只要它们属于同一个类。这是一个例子。

public class MyClass {

    // Non-static field
    private int value;
    public static int otherValue;

    // Constructor
    public MyClass(int value, int otherValue) { 
        this.value = value;
        MyClass.otherValue = otherValue;
    }

    private void increaseValuesButton(java.awt.event.ActionEvent evt) {
        value++; // Works just fine
        MyClass.otherValue++; // Also works fine
    }

}

您还可以访问其他类的非私有静态方法,因此如果由于GUI构建器的限制而无法传递colouredImage,您可以简单地向另一个类询问它,例如{ {1}}。

您还可以访问其他类的静态公共字段,但这会破坏封装。

答案 1 :(得分:0)

所以是的,这是我用来最大化我的代码定制的东西。将“变量”替换为您希望执行操作的变量的名称。如果您需要执行不同的操作,例如mouselistener:只需让NetBeans添加执行的操作,复制并粘贴它,复制然后从GUI中的“design”区域中删除变量组件,然后再次粘贴设计。

public Terminal() {
            initComponents();  //default init components - this is the one generated by netbeans
            cinit(); // custom init components - this is the custom one
        }

        private void cinit() /* custom init components */ {
            Variable.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    VariableActionPerformed(evt);
                }
            });
        }

        public void VariableActionPerformed(java.awt.event.ActionEvent evt) {
            // to do code goes here
        }