2017-10-18 2 views
0

Lab5.javaでアクションを実装しようとしましたが、JComboBoxを呼び出して、Lab4.javaからその選択された値(またはインデックス)を取得します。私はLab5アクションと呼び出しをクラス化するJavaクラス

CBBはJComboBoxのある
int ind = cbb.getSelectedIndex(); 

で変数を作るとき。

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を変数に解決できません"というエラーを返します。 1つのJavaクラスの変数またはコンポーネントを呼び出して、2つ目のJavaクラスでアクションを実行する方法は、どこで知ることができますか?

+0

メソッド。ゲッターとセッター。 – EJP

答えて

0
int ind = cbb.getSelectedIndex(); 

cbbがそのクラスの変数として宣言されていません。

あなたが 静的とパスからのアクセスとしてLab5クラスに変数を設定することができ

Lab5.variableここに見られるように:

Accesing static variable from another class in java

か、使用できgetterとsetterあなたのクラスLab4でインスタンス化します。 ように:

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

は、私はあなたがOOPがどのように機能するかを理解するために、Javaの基本から開始する必要があると思います。

+0

あなたは完全に正しいです。私は現在私の大学でプログラミングを紹介しています。教授はこれを行うために知る必要があることを教えてくれません。 –

+0

私は地上/基礎から始めるためにインターネット上の膨大な資料を使うことをお勧めします。 Javaプログラミングの本の本は素晴らしい本です。 私たちの質問に最も合った人を選んで正しい答えをupvoteすることを忘れないでください。乾杯! – iwaduarte

0

これは、お互いに話している他のオブジェクトと同じです。 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クラスが shelterを作成し、動物を追加する方法を

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と呼ばれます。 AnimalShelterクラスが提供するメソッドを呼び出すだけで、shelterと通信します。同様に、シェルターは、Animalクラスが提供するメソッドを呼び出すことによって、その動物に話しかけます。あなたはあなたのオブジェクトで同じことをするでしょう - あなたが他のオブジェクトにアクセスさせたい振る舞いを公開するメソッドを提供します。

+0

ありがとう!私は間違いなく参考のためにあなたの例を使用します。 –

関連する問題