首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建类的实例

创建类的实例
EN

Stack Overflow用户
提问于 2009-03-03 16:12:46
回答 7查看 237关注 0票数 0

我目前正在处理一些代码,我遇到了一些麻烦。

我在GUI上有两个按钮。如果一个按钮被按下,它会将一个值赋给一个字符串,一个值来反映这一点。

除了为字符串分配了不同的值之外,另一个按钮与此按钮相同。

此字符串是在构造函数之前的开头创建的,其方式如下:

代码语言:javascript
运行
复制
public string s = "String"; // public so I can call it in another class

当我想要找出在另一个类中哪个按钮被按下时,问题就出现了。我想看看s是什么,所以我必须创建这个类的一个实例:

代码语言:javascript
运行
复制
gui = new GUI(); 

这会再次将s的值重置为"String“,这会破坏我的比较。

有什么办法可以绕过这个问题吗?

我尝试了很多想法,但似乎都不管用。

EN

回答 7

Stack Overflow用户

发布于 2009-03-03 16:17:58

最初创建图形用户界面(即GUI gui = new GUI();)时,请保存该引用,以便在需要访问成员s时使用。

当您创建一个新的图形用户界面对象时,这个新对象从未被用户操作过,因此它的s值就是"String"。您需要持有对原始对象的引用。

票数 3
EN

Stack Overflow用户

发布于 2009-03-03 16:18:40

更好的做法可能是将第一个表单的状态传递给第二个表单,或者让第一个表单实时通知第二个表单某个特定事件已经发生。否则,您将需要将第一个表单的引用传递给第二个表单,以执行您正在尝试的比较IE:

代码语言:javascript
运行
复制
public class SecondForm {
    private FirstForm _firstForm = null;
    public SecondForm(FirstForm firstForm){
        _firstForm = firstForm;
    }

    ...

    if(_firstForm.s == "comparison"){
        ...
    }
}

SecondForm secondForm = new SecondForm(this);
票数 2
EN

Stack Overflow用户

发布于 2009-03-03 16:18:15

在这篇文章下面的评论中,我和其他两个人决定你应该学习java语言,研究面向对象编程的概念(包括对象作用域),然后学习如何实现正确的事件处理代码-有几种方法可以实现你想要的,我建议结合我提供的代码和上面Welbog提供的参考建议(当然,这将需要修改我的代码,但如果你的主类在其他地方,实际上不是很多)。

基本上,google a java tutorial (或者买一本书/“获取”一本书),如果你知道一些基本概念,就跳到面向对象的部分。

如果我遵循你想要的,下面是一些框架代码:

代码语言:javascript
运行
复制
// imports

public class GUI extends JFrame implements ActionListener {
    public String s = "String";

    public GUI() {
        // initializer code for buttons
        btn1.addActionListener(this);
        btn2.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        if(s == "???")
            s = "this";
        else
            s = "that";
    }

    // other methods

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/607031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档