الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

compiler لايتعرف على العناصر التي تم إنشائها خارج ActionListener

بدأه wisdom2010 في 26 فبراير 2011 · 4 رد · 553 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

واجهتني مشكلة أثناء العمل على هذا البرنامج البسيط ، وهي أنني عندما أحاول أن أستدعي

JComobBox الذي أنشأته في ال main class

من ال overriden actionPerformed method

فإنه لا يتعرف عليه cannot find symbol

مع انني أعرف أن العناصر تكون افتراضيا package access

هذا هو الكود ،، لم أكمله لكن وضحت الجزء الذي يحصل فيه الخطأ

package calculate_average;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import java.awt.GridLayout;
import java.awt.event.*;

public class CalculateAverage extends JFrame
{
    //Constructor
public CalculateAverage()
{

//Creating GUI components and adding them to frame
JLabel score_label = new JLabel("Score in letters :") ;
add(score_label);
String symbols[]={"","A+","A","A-","B+","B","B-","C+","C","C-","D+","D","F"};
JComboBox select_letter = new JComboBox(symbols);
add(select_letter);
JLabel hours_label = new JLabel("Credit Hours :") ;
add(hours_label);
String no_hours[]={"","1","2","3"};
JComboBox credit_hours = new JComboBox(no_hours);
add(credit_hours);
JButton sum = new JButton("ADD");
add(sum);
JLabel result = new JLabel();
add(result); 

//Register listeners
ListenerClass listener = new ListenerClass();
sum.addActionListener(listener);

}
    public static void main(String[] args)
    {

 // Creating container
JFrame frame = new CalculateAverage ();
frame.setVisible(true);
frame.setSize(200, 250);
frame.setLocation(300,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set layout to GridLayout and applying it to frame
GridLayout grid = new GridLayout(3,2);
frame.setLayout(grid);    

    } // end of main method
} // end of Main class

class ListenerClass implements ActionListener
{
 //Override the abstract method  "actoinPerformed"
public void actionPerformed(ActionEvent event)
{
  double sum =0; 
  int partial_hours = 0;
  byte total_hours =0;

 if(select_letter.getSelectedIndex()=="1";) 
 partial_hours=1;


}
}
#2
package calculate_average;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import java.awt.GridLayout;
import java.awt.event.*;

public class CalculateAverage extends JFrame {

    private JComboBox select_letter;
    //Constructor

    public CalculateAverage() {

//Creating GUI components and adding them to frame
        JLabel score_label = new JLabel("Score in letters :");
        add(score_label);
        String symbols[] = {"", "A+", "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "F"};
        select_letter = new JComboBox(symbols);
        add(select_letter);
        JLabel hours_label = new JLabel("Credit Hours :");
        add(hours_label);
        String no_hours[] = {"", "1", "2", "3"};
        JComboBox credit_hours = new JComboBox(no_hours);
        add(credit_hours);
        JButton sum = new JButton("ADD");
        add(sum);
        JLabel result = new JLabel();
        add(result);

//Register listeners
        ListenerClass listener = new ListenerClass();
        sum.addActionListener(listener);

    }

    public static void main(String[] args) {

        // Creating container
        JFrame frame = new CalculateAverage();
        frame.setVisible(true);
        frame.setSize(200, 250);
        frame.setLocation(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set layout to GridLayout and applying it to frame
        GridLayout grid = new GridLayout(3, 2);
        frame.setLayout(grid);

    } // end of main method

    class ListenerClass implements ActionListener {
        //Override the abstract method  "actoinPerformed"

        public void actionPerformed(ActionEvent event) {
            double sum = 0;
            int partial_hours = 0;
            byte total_hours = 0;

            if (select_letter.getSelectedIndex() == 1) {
                partial_hours = 1;


            }
        }
    }
} // end of Main class

تم تعديل هذه المشاركة بواسطة Ahmed-Ghanem في 26 فبراير 2011 في 17:35

1
2coscqr.jpg
#3
Ahmed-Ghanem كتب:

package calculate_average;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import java.awt.GridLayout;
import java.awt.event.*;

public class CalculateAverage extends JFrame {

    private JComboBox select_letter;
    //Constructor

    public CalculateAverage() {

//Creating GUI components and adding them to frame
        JLabel score_label = new JLabel("Score in letters :");
        add(score_label);
        String symbols[] = {"", "A+", "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "F"};
        select_letter = new JComboBox(symbols);
        add(select_letter);
        JLabel hours_label = new JLabel("Credit Hours :");
        add(hours_label);
        String no_hours[] = {"", "1", "2", "3"};
        JComboBox credit_hours = new JComboBox(no_hours);
        add(credit_hours);
        JButton sum = new JButton("ADD");
        add(sum);
        JLabel result = new JLabel();
        add(result);

//Register listeners
        ListenerClass listener = new ListenerClass();
        sum.addActionListener(listener);

    }

    public static void main(String[] args) {

        // Creating container
        JFrame frame = new CalculateAverage();
        frame.setVisible(true);
        frame.setSize(200, 250);
        frame.setLocation(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set layout to GridLayout and applying it to frame
        GridLayout grid = new GridLayout(3, 2);
        frame.setLayout(grid);

    } // end of main method

    class ListenerClass implements ActionListener {
        //Override the abstract method  "actoinPerformed"

        public void actionPerformed(ActionEvent event) {
            double sum = 0;
            int partial_hours = 0;
            byte total_hours = 0;

            if (select_letter.getSelectedIndex() == 1) {
                partial_hours = 1;


            }
        }
    }
} // end of Main class

بارك الله فيك أخ أحمد وجزاك خيرا

بالفعل انحلت المشكلة

لكني لم أفهم لماذا لم يكن يرى اي شيء خارج الكلاس

مرة أخرى شكرا جزيلا أخ أحمد

#4

اخي لم افعل الكثير فقط قمت بعمل attribute للكلاس حتي يكون مرئي للكلاس باكمله ويمكن التحكم فيه

ثم بالنسبه للكلاس ListenerClass فجعلته inner class بالتالي سيري ال attribute التي قمت باضافته في الكلاس الاول

تحيـــــــــــاتي

2coscqr.jpg
#5
Ahmed-Ghanem كتب:

اخي لم افعل الكثير فقط قمت بعمل attribute للكلاس حتي يكون مرئي للكلاس باكمله ويمكن التحكم فيه

ثم بالنسبه للكلاس ListenerClass فجعلته inner class بالتالي سيري ال attribute التي قمت باضافته في الكلاس الاول

تحيـــــــــــاتي

بارك الله فيك ...هذا ما أردته

شكرا على وقتك ومجهودك شكرا جزيلا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…