按钮点击的变量修改/其他挥杆对象(Modification of variables/other s

2019-09-27 15:15发布

好了,所以基本上即时通讯努力与执行的Java Swing Jbutton将一些行动。 我有一种感觉,我的问题是熟练的程序员与我的“基本”问题,使裸露的方便:

我想要做的就是修改其他JComponent中的内容,并可能修改按钮点击一些变量。 这似乎比较容易,但我想执行它“已申报”变量(或已经创建JComponents)

无论我搜索我总是得到的一切是从零开始声明中实现的actionPerformed功能与特定的JButton,就像这里的情况下的例子:

http://zetcode.com/tutorials/javaswingtutorial/swingevents/ //上面可以看到,在“的actionPerformed”功能,他们定义新的变量,如:串/日期/区域/ 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)

任何帮助非常感谢。

  • 应I“过载” jButton1ActionPerformed功能(以便采取变量作为参数)? (是的,我知道自己的私人 - >我使用Netbeans摇摆设计师创造了它)--shall我设计的手我的GUI,然后超载呢? (不知道这样的过载是否可能你)

  • 或者也许我应该定义一些“缓冲”(现场整数和现场的字符串),我想利用我的JButton的修改,然后把它们放在里面的“probTESTswing”类变量? (+写适当函数以处理,我使用其功能这样的方式的另一类?)

  • 或者可能(因为我的NUMBER_STRING不具有任何变量 - 只是功能)移动到GUI类的功能(probTESTswing)

  • 也许我应该使用一些指针/引用? (是啊,似乎这就是我需要在这里,unfortunetely指针/引用的东西我什么都不知道:(,不过我想学习了很多,因为它似乎强制性的,因为我发现了 - 很难找到你的教程,因为据我所知,应该没有指针,我不知道如何使用引用以这样的方式,这样所需的功能将实现 - 因为你可以从我的问题看)

  • 或者,也许有完全不同的方式来处理正是这样的问题/个案?

请微启我,我想解决我的问题“有效”,在一个良好的编程方式,为了学习高效,优化,合理,快速的解决方案,但即时通讯绝望的帮助,所以任何意见是极大的赞赏。

问候

Answer 1:

一种方法是对数据模型使用所述视图分离模型-视图-控制器模式,讨论在这里 。

附录:更简单地说,你可能只是需要给类ProbTestSwing合适的成员变量:

private Number_String ns = new Number_String();


Answer 2:

JButtons ,像几乎所有Swing组件,有一大堆东西叫做“的ActionListeners”。 这些的ActionListeners是实现所谓的ActionListener ......一个接口的类! 他们有一个叫做actionPerformed方法。 每一个按钮被点击的时候,他会告诉每一个他的ActionListeners来调用它们的actionPerformed功能。 所以,你给你的按钮一个ActionListener,然后使其actionPerformed方法让你想要的所有变化。

这就像如果你每门铃响了,你(作为一个JButton)时会去打电话给谁想到,从来没有人去拜访你所有的亲人绝望。 事实上,他们会告诉你他们每天的门铃响起时会付给你钱。 因此,门铃响了(点击按钮),你(的JButton)打电话给你的亲人(对的ActionListeners)谁再各付你钱(actionPerformed方法)。

实例代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Test implements ActionListener{
    int count = 0;
    public static void main(String[] args){
        JFrame frame = new JFrame();
        JButton button = new JButton();

        button.addActionListener(new Test());
        button.setText("I have been clicked 0 times");

        frame.setSize(200, 50);
        frame.add(button);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        JButton button = (JButton) (arg0.getSource());
        count++;
        button.setText("I have been clicked "+count+" times");
    }


}


文章来源: Modification of variables/other swing objects on button click