【问题标题】:How do I use variables from different method in java?如何在java中使用来自不同方法的变量?
【发布时间】:2016-09-21 00:46:08
【问题描述】:

首先让我说我对java很陌生,所以这真的很简单,但我有这个日期对象,我做了一个actionlistener方法,但它不会让我使用那里的对象。怎么做才能在方法中访问?

            jp = new JPanel();
        jta = new JTextArea(100, 100);
        jta.setPreferredSize(new Dimension(460,420));
        jta.setLineWrap(true);
        jta.setWrapStyleWord(true);
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
        Date date = new Date();
        jb = new JButton("Tommorow");
        jl = new JLabel();
        jf = new JFrame();

        jf.setBackground(Color.BLUE);

        jl.setText(dateFormat.format(date));
        add(jl, BorderLayout.NORTH);

        add(jp);
        jp.add(jb, BorderLayout.EAST);
        add(jta);

        jb.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
       jta.setText("");
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, 1);
        date = cal.getTime();
}

【问题讨论】:

  • 您要访问哪个对象?
  • 只需将date 设为private field
  • 我该怎么做?
  • 检查链接...
  • 再次检查链接——在访问修饰符下已经很好地解释了它,以及一个启动示例。

标签: java object methods


【解决方案1】:

您当前的变量范围存在问题。您不能在方法public void actionPerformed(ActionEvent e) 中使用其他方法中的变量。上面你用过:

jta = new JTextArea(100, 100);
jta.setPreferredSize(new Dimension(460,420));
jta.setLineWrap(true);
jta.setWrapStyleWord(true);

变量jta 是该方法的本地变量,不能被其他方法访问。 Date date = new Date(); 也是如此。如果要继续使用这些变量,请在下面创建一个包含这些变量的对象。它可能看起来像这样:

public class MyClass {

    private JTextArea textArea;
    private Date date;

    public MyClass(JTextArea textArea, Date date) {
        this.textArea = textArea;
        this.date = date;
    }

    public JTextArea getTextArea() {
        return this.textArea;
    }

    public Date getDate() {
        return this.date;
    }

}

【讨论】:

    【解决方案2】:

    您遇到了范围问题。除非首先将它们声明为全局变量或在函数参数中传递,否则您无法从其他函数访问变量

    【讨论】:

    • 那我该如何解决呢?抱歉,正如我所说,我是 java 新手。
    • Java 没有全局变量或函数。
    • @RadinHakimjavadi actionPerformed 在哪里被调用?
    • @JoeyWood 该类不直接调用它。而是JButton 的超类AbstractButton 在按下按钮时触发事件(并调用方法)。
    • 不太确定我在 actionPerformed 方法上方看到了什么,但如果您在定义类时在 public static Date date = new Date() 中设置日期,则可以通过 className.date 在任何地方访问它跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2019-05-31
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多