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

Minimusicplayer

بدأه محــمد في 23 يناير 2010 · 9 رد · 496 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مساء الخير جميعاً

استناداً إلى الكتاب .. هذا البرنامج يقوم بعمل نوته موسيقيه ( بالصوت ) .. يتزامن معها اشكال هندسيه تعرض على الشاشه

بصراحه لم افهم الكثير بالنسبه لهذا الكود

اتمنى ارشادي للخطأ ..

واتمنى لو كان في هذا المنتدى عضو قام بشرح طريقة تتبع خطوات سير عمل البرامج في ال netBeans

اتمنى لو امكن ارشادي إلى الرابط وأكون له من الشاكرين

هذا هو برنامجي:


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

public class MiniMusicPlayer {

static JFrame f = new JFrame("my first music video");
static MyDrawPanel ml;

public static void main(String[] args) {
MiniMusicPlayer mini = new MiniMusicPlayer();
mini.go();
}

public void setUpGui() {
ml = new MyDrawPanel();
f.setContentPane(ml) ;
f.setBounds(30,30,300 ,300);
f.setVisible(true) ;
}

public void go() {
setUpGui();
try{
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();

sequencer.addControllerEventListener(ml, new int[] {127});
// int [] eventsIWant = {127};
//sequencer.addControllerEventListener(this, eventsIWant)
Sequence seq =new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();

int r = 0;

for (int i = 0; i < 60; i+=4) {
r = (int) ((Math.random() * 50) + 1);
track.add(makeEvent(144,1,r,100,i));
track.add(makeEvent(176,1,127,0,i));
track.add(makeEvent(128,1,r,100,i+2));
}

sequencer.setSequence(seq);
sequencer.start();
sequencer.setTempoInBPM(120);

} catch (Exception ex) {ex.printStackTrace();}
}


public void controlChange (ShortMessage event) {
System.out.println("la");
}
public static MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {

MidiEvent event = null;

try {
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);

} catch (Exception e) {}
return event;
}
}
// }
import javax.sound.midi.*;

----------------------------



class MyDrawPanel extends JPanel implements ControllerEventListener {

boolean msg = false;

public void controlChange(ShortMessage event) {
msg = true;
repaint();
}

public void paintComponent (Graphics g) {

if (msg) {

Graphics2D g2 = (Graphics2D) g;

int r = (int) (Math.random() * 250);
int gr = (int) (Math.random() * 250);
int b = (int) (Math.random() * 250);

g2.setColor(new Color(r,gr,b));

int ht = (int) ((Math.random() * 120) + 10);
int width = (int) ((Math.random() * 120) + 10);
int x = (int) ((Math.random() * 40) + 10);
int y = (int) ((Math.random() * 40) + 10);
g2.fillRect(x,y,ht, width);
msg = false;
}
}
}
import java.awt.*;

i

هذا كل شيئ .. :)

تم تعديل هذه المشاركة بواسطة herch في 23 يناير 2010 في 14:33 — السبب: الوسم [code]

نداء ما كان بعيداً

#2

ما هي المشكلة بالضبط ؟ البرنامج يعمل من دون مشاكل :)

#3
Speed_Of_Light كتب:

ما هي المشكلة بالضبط ؟ البرنامج يعمل من دون مشاكل :)

يعطيك العافيه عزيزي

انا لا اعلم ما المشكله بالضبط .. لكن النتيجه المرجوه من البرنامج لم تظهر عندي

وهيه.. نوته موسيقيه تتزامن معها اشكال هندسيه عشوائيه

وهذا ال exception الي يطلع معي .. ولم افهمه.

Exception in thread "main" java.lang.VerifyError: (class: MyDrawPanel, method: <init> signature: ()V) Constructor must call super() or this()

at MiniMusicPlayer.setUpGui(MiniMusicPlayer.java:17)

at MiniMusicPlayer.go(MiniMusicPlayer.java:24)

at MiniMusicPlayer.main(MiniMusicPlayer.java:13)

Java Result: 1

BUILD SUCCESSFUL (total time: 4 seconds)

i

اعذرني على جهلي في تحرري الأخطاء في الكود.. لكوني مبتدأ

ولأكن صريحاً اكثر.. انني ضعت قليلاً في فهم وظيفة كل كود في هذا البرنامج

لم تظهر النتيجه المرجوه.. ولم افهم كل الكود لأحلل مصدر المشكله .. وأنا الآن عالق في النص

نداء ما كان بعيداً

#4

البرنامج يعمل عندي من دون أي تعديل !

ما هو اصدار الـ JDK والـ NetBeans الذين تستعملهما ؟

على كل حال أظن أنك بحاجة إلى إضافة باني إفتراضي للفئة/الصف MiniMusicPlayer

أي قم بإضافة هذا الكود:

    public MiniMusicPlayer(){
    }

وأخبرني بالنتيجة :)

اقتباس
ولأكن صريحاً اكثر.. انني ضعت قليلاً في فهم وظيفة كل كود في هذا البرنامج

لم تظهر النتيجه المرجوه.. ولم افهم كل الكود لأحلل مصدر المشكله .. وأنا الآن عالق في النص

هل هناك نقاط محددة لم تفهمها بالكود ؟

#5
Speed_Of_Light كتب:

البرنامج يعمل عندي من دون أي تعديل !

ما هو اصدار الـ JDK والـ NetBeans الذين تستعملهما ؟

على كل حال أظن أنك بحاجة إلى إضافة باني إفتراضي للفئة/الصف MiniMusicPlayer

أي قم بإضافة هذا الكود:

    public MiniMusicPlayer(){
    }

وأخبرني بالنتيجة :)

الأصداره NetBeans IDE 6.8

هل من مشكله في هذه الإصداره؟ مع العلم اني عملت لها upDate

اما بالنسبه للنتيجه.. لم يحدث شيئ.. حتى مع إضافة الكود الي عطيتني

مع العلم اني ما اعرف وين احطه .. لكن جربت وحطيته برا الكلاس وداخل الكلاس وما صار شي

اقتباس
هل هناك نقاط محددة لم تفهمها بالكود ؟

بالنسبه لهذي النقطه يا عزيزي ربما الحديث يطول..

لكني ابحث عن موضوع تطرّق إلى كيفية التعامل في ال netBeans

فيما يخص ادواته والبريك بوينت وتتبع الخطوات .. كما ذكرت في بداية هذا الموضوع

لا احب تضييع وقتكم .. واعذرني في هذا

اما بالنسبه لهذا البرنامج بالذات:

مثلاً كلمة this لما تجي في ال parameter

إلى اي شيئ تشير؟

مثلاً هنا في هذا الكود..

sequencer.addControllerEventListener(ml, new int[] {127});

// int [] eventsIWant = {127};

//sequencer.addControllerEventListener(this, eventsIWant)

i

كانت في النسخه الأولى من البرنامج على قسمين كما هو موضح في الجزء ال comment

اما في النسخه الثانيه من البرنامج اصبحت في جمله واحده وحذفنا منها ال this وكتبنا ml .. كما هو موضح في الأعلى

إلى ما تشير this ?

وكيف استخدمها .. ولماذا تغييرت في إلى ml في القسم الثاني؟

اعذرني عزيزي على الإطاله

لا تهتم كثيراً بالإجابه عن this .. لكن اتمنى لو تدلني على موضوع يتناول ال netbeans وكيفية التعامل معه

هذا كل شيئ :)

تم تعديل هذه المشاركة بواسطة محمد_ح في 23 يناير 2010 في 20:06

نداء ما كان بعيداً

#6

أخي يبدو لي أنك لا تعرف شيئاً عن جافا

لذا أنصحك بقراءة كتاب عن جافا ثم البحث في كيفية عمل هذا البرنامج

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7
علاء الصالحي كتب:

أخي يبدو لي أنك لا تعرف شيئاً عن جافا

لذا أنصحك بقراءة كتاب عن جافا ثم البحث في كيفية عمل هذا البرنامج

تحياتي

يعني بس شفت روحك قوي .. قمت تدلع علينا؟ :)

انا ما قلت اني فاهم .. لكني احاول .. وسؤالي كان فقط هو لماذا لا يعمل هذا البرنامج ..

وانا الآن ادرس في كتاب.. هذا البرنامج من الكتاب

لكني غير معتمد على احد .. اقصد self learning

وبسبب هذا .. تمر اوقات تختلط علي فيها الأمور .. لكوني جديد على البرمجه ولكثرة العناوين وتشعبها

أسألك يا صاحبي .. إن كنت غير قادر على المساعده.. فقط دعني

سلام :)

نداء ما كان بعيداً

#8

علاء معه حق.

في البداية يجب أن تبدأ بأمثلة سهلة أو متوسطة، لكنك ذهبت ل java sound و Java2D، وهذان موضوعان متقدمان بعض الشيء. بالنسبة ل java sound، فيجب أن يكون لديك خلفية في هندسة الصوت لو أردت أن تفهمها بشكل جيد.

ملاحظة: ليس كل كتاب جيد لكي تبدأ به، فكل كتاب يتوجه لمستوى ما، ولا أظن أن الكتاب الذي تقرأه موجه للمبتدئين في الجافا.

#9
herch كتب:

علاء معه حق.

في البداية يجب أن تبدأ بأمثلة سهلة أو متوسطة، لكنك ذهبت ل java sound و Java2D، وهذان موضوعان متقدمان بعض الشيء. بالنسبة ل java sound، فيجب أن يكون لديك خلفية في هندسة الصوت لو أردت أن تفهمها بشكل جيد.

ملاحظة: ليس كل كتاب جيد لكي تبدأ به، فكل كتاب يتوجه لمستوى ما، ولا أظن أن الكتاب الذي تقرأه موجه للمبتدئين في الجافا.

اهلا عزيزي herch

ربما تكونون على صواب.. فمهما كان لست إلا مبتدأ

إلا انني لم أبدأ من الجزء الصعب كما تقول.. ولم اختر كتاب لغير المبتدأين

كتابي هو head first java

لكن المشكله إذا واجهت برنامج لا يعمل .. فهذا يربك معلوماتي .. لأنها تستند على اسس بسيطه .. وهيه ما قرأته في الصفحات السابقه من الكتاب

ولأنك ايضاً لن ترى النتائج وماذا تغير وماذا يدور بالضبط في الكود.. ما لم تراه بعينك.. وهذا ما حدث معي

مع ذلك عرفت سبب المشكله الحمدلله .. وكانت بسيطه جداً

وهيه انني وضعت كلاس MyDrawPanel في new Tab او لسان او صفحه جديده

(حسب ما تعلمته من احدهم .. لجعل البرنامج اكثر ترتيب وسهل القرائه).. ولأنني جربت هذه الطريق مسبقا وكانت تعمل

لكن المشكله هذه المره انني لم انتبه ان البرنامج يحمل import مشترك من ال api

وهيه كما توقعت من قبل .. المشكله هي بسبب جهلي في أدوات وطريقة عمل ال netbeans

في النهايه شكراً للجميع واعذروني إذا كنت ضيعت وقتكم على شيئ بسيط وهو بسبب قلة خبرتي في هذا المجال

اعذروني :)

تم تعديل هذه المشاركة بواسطة محمد_ح في 24 يناير 2010 في 15:23

نداء ما كان بعيداً

#10

ليس لدي ما أضيفه هنا

لكني لا أحتاج إلى ذكاء خارق لأعرف مستواك في جافا

أنت مبتدئ تماماً

وعندما أقول لك يجب أن تقرأ كتاباً في البداية أقولها لأن أسئلتك التي تسألها لا تناسب حجم الشيفرة الموجودة هنا

فهذا يعني أنك تسأل عن الشيء الخطأ

على كل اعتبرني غير قادر على إجابة أية أسئلة لك من هنا إلى إشعار آخر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png