【发布时间】:2011-09-22 07:46:35
【问题描述】:
好的,所以基本上我正在努力使用 Java Swing JButtons 执行一些操作。我有一种感觉,我的问题对于熟练的程序员来说很容易,因为我的“基本”问题如此简单:
我想做的是修改其他 JComponent 的内容,并可能在按钮单击时修改一些变量。这似乎相对容易,但我想在“已经声明”的变量(或已经创建的 JComponents)上执行它
无论我在哪里搜索,我总是会得到一些例子,其中所有内容都是在与特定 JButton 相关的 ActionPerformed 函数的实现中从头开始声明的,就像这里一样:
http://zetcode.com/tutorials/javaswingtutorial/swingevents/ //在上面你可以观察到在“actionPerformed”函数中他们定义了新的变量,例如:string/date/locale/stringbuffer
这样的解决方案无论如何都不能满足我的需求。我想使用属于不同类的函数来修改/显示先前由于用户单击而定义的变量。
好的,如果我向您展示我想在示例性源代码上做什么,可能会更清楚:
class Number_String {
public String change_add_MOD (String sss){
String str_modified = sss + "_modified";
return str_modified;
}
public int change_plus1 (int z){
int z_modified = z + 1;
return z_modified;
}
public static void main(String[] args) {
// TODO code application logic here
}
}
public class probTESTswing extends javax.swing.JFrame {
public probTESTswing() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jLabel1.setText("done");
jLabel2.setText(mystring2);
jLabel3.setText(ns.change_add_MOD(mystring3));
}
public static void main(String args[]) {
Number_String ns=null;
String first_str="myFIRSTstring";
String mystring2 = ns.change_add_MOD(first_str);
String mystring3 = "third_str";
probTESTswing testing= new probTESTswing();
testing.setVisible(true);
}
}
向所有努力到达这里的人致敬;)
所以让我简单解释一下:
主类是“swing gui”,在 main() 函数中,我使用第二类初始化一些变量,现在我想用我的 Number_String 类显示“处理”这些变量的结果,但是 Java 拒绝配合我的编程您可能已经注意到,技能缺乏一些基础知识。
您可以观察到我想以两种方式执行“它”:在 jButton1ActionPerformed 内部,我想从我的 Number_String 类访问函数(使用“mystring3”),以及我想要的另一种方式访问刚刚定义的变量(mystring2)
非常感谢任何帮助。
我应该“重载”jButton1ActionPerformed 函数(以便将变量作为参数)吗? (是的,我知道它是私有的 -> 我用 Netbeans Swing 设计师创建了它) ——我应该手动设计我的 GUI,然后重载它们吗? (不知道这种超载是否可能)
或者我应该为我想使用我的 Jbutton 修改的变量定义一些“缓冲区”(整数字段和字符串字段),然后将它们放在“probTESTswing”类中? (+ 编写适当的函数来处理其他类,以便我使用它的函数?)
或者可能(因为我的 Number_String 没有任何变量 - 只是函数)将这些函数移动到 GUI 类 (probTESTswing)
或者也许我应该使用一些指针/引用? (是的,这似乎是我在这里需要的,不幸的是指针/引用是我一无所知的东西:(,但是我想学习很多,因为我现在发现它似乎是强制性的——很难找到教程,因为据我所知没有指针,而且我不知道如何以这种方式使用引用以便实现所需的功能 - 正如您从我的问题中看到的那样)
或者也许有完全不同的方法来处理这些问题/案例?
请启发我,我想以良好的编程方式“有效地”解决我的问题,以便学习高效、最佳、适当和快速的解决方案,但我迫切需要帮助,因此非常感谢任何建议。
问候
【问题讨论】:
-
很抱歉,文本太多,而且写得太差,我无法真正花时间解读所有内容。我认为本教程会对您有所帮助 - download.oracle.com/javase/tutorial/uiswing/index.html