【问题标题】:Java class to class actions and callsJava 类到类操作和调用
【发布时间】:2018-03-30 22:24:12
【问题描述】:

我试图通过调用 JComboBox 并从 Lab4.java 获取其选定的值(或索引,无论哪种方式都可以)来在 Lab5.java 中实现操作。当我在 Lab5 中创建变量时

int ind = cbb.getSelectedIndex();

其中 cbb 是 JComboBox。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Lab5 extends Lab4 implements ActionListener
{
    //private int numClicks = 0;
    int ind = cbb.getSelectedIndex();
   public void init()
   {
        super.init();
        addListeners();
        this.setSize(getPreferredSize());
    }

    @Override
    public void  actionPerformed(ActionEvent e)  {
 //     numClicks++;
 //     System.out.println(numClicks);
        if (ind == 1)
        {
            System.out.println(ind);
            createFrame();

        }else {


        }

    }
    public void addListeners() 
    {

    }
}
 Here is my Lab5 file. 

    JComboBox cbb = new JComboBox();
    cbb.addItem("Set Destination                     ");
    cbb.addItem("Dallas");
    cbb.addItem("Wash DC");
    cbb.addItem("Seattle");
    cbb.addItem("Oklahoma City");
    cbb.addActionListener((ActionListener) this);

这是我的组合框如何声明并链接到我的 actionPerformed。它在 Lab5 上返回“cbb 无法解析为变量”的错误。我在哪里可以了解如何调用一个 Java 类中的变量或组件以在第二个 Java 类中对其执行操作?

【问题讨论】:

  • 方法。获取器和设置器。

标签: java


【解决方案1】:

这与其他任何相互交谈的对象没有什么不同。一个对象需要引用另一个对象才能调用另一个对象的方法。

例如,假设我们要构建一个类来表示动物收容所。在这个避难所中,我们将有许多动物实例。

所以Animal 类可能看起来像这样:

package objectsTalking;

public class Animal {
    private int age;

    public Animal(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }
}

AnimalShelter 将提供获取当前收容所中动物平均年龄的能力。所以它可能看起来像这样:

package objectsTalking;

import java.util.ArrayList;
import java.util.Collection;

public class AnimalShelter {
    private Collection<Animal> animals;

    public AnimalShelter(){
        animals = new ArrayList<>();
    }

    public void add(Animal animal){
        animals.add(animal);
    }

    public int getAverageAge(){
        int total = 0;
        for(Animal animal: animals){
            total += animal.getAge();
        }

        if(animals.isEmpty())
            return total;
        return total/animals.size();
    }
}

最后,我们需要一个控制器类来容纳我们的main 方法并充当入口点和监督者。我简单地称这个类为Main

package objectsTalking;

public class Main {

    public static void main(String[] args) {
        AnimalShelter shelter = new AnimalShelter();
        shelter.add(new Animal(6));
        shelter.add(new Animal(2));
        shelter.add(new Animal(1));
        shelter.add(new Animal(3));

        System.out.println(shelter.getAverageAge());
    }

}

注意Main 类如何创建shelter 并将动物添加到其中。它通过调用AnimalShelter 类提供的方法与shelter 进行对话。同样,收容所通过调用Animal 类提供的方法与其动物交谈。你会对你的对象做同样的事情——提供方法来公开你希望其他对象访问的行为。

【讨论】:

  • 谢谢!我一定会参考你的例子。
【解决方案2】:
 int ind = cbb.getSelectedIndex();

cbb 尚未在该类中声明为变量。

您可以将 Lab5 类中的变量设置为 static 并从路径 Lab5.variable 访问,如下所示:

Accesing static variable from another class in java

或者您可以在 Lab4 类中实例化时使用 getter 和 setter。 喜欢:

// code inserted in Lab 4
Lab5 obj = new Lab5();
obj.getVariable();

我认为您需要从 Java 基础开始了解 OOP 的工作原理。

【讨论】:

  • 你完全正确。我现在正在我的大学学习编程,教授不会教我们做这件事需要知道的东西。
  • 我建议使用互联网上的大量资料从基础/基础开始。 Java How to program 一书也是一本优秀的书。不要忘记投票选择最适合我们问题的正确答案。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2012-04-11
相关资源
最近更新 更多