我使用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构建器的缺点吗?或者,这只是我的愚蠢吗?
非常感谢提前
答案 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
}