2012-05-05 25 views
1

私はJava 101クラスを採用しています。先生は短時間で教材を教えてくれました。 。最終的なプロジェクトは間に合います。私はパートナーと一緒にJava MP3プレーヤーを開発しています。私がJava MP3 Playerと言うときは、コンピュータのモニターに独自のタッチスクリーンMP3プレーヤーがあると想像してください。それは私が作り出そうとしていたものです。ボタンの基本的な配列(アーティスト、ジャンル、曲など)。音量調整ボタンと曲を一時停止する機能があります。 (どういうわけかWindows Media Playerを統合する必要があると想像してください)。Javaの初心者が必要です(私はJavaでMP3プレーヤーを構築する必要があります)

男よ、私は立ち往生しましたか?私は実際にJavaで曲を演奏する方法を考え出しましたが、私は最終的に必要なようにWMPを使用しませんでした。私もPhotoshopでjpgを作ってプレイヤーの背景にして、5つのJButtonを画面に投げた。

私はインタラクティブメニューを動作させる方法を理解するのに夢中です。私は、HTML、CSS、JASS(Warcraft 3独自言語)のプログラミング経験があり、物流に関しては初心者ではありません。今のところ、ボタンのテキストが(メニューの変更をシミュレートすると)変更されるように変更されていますが、他のボタンのテキストを変更することはできません(異なるクラスにあるので対処できません)。私はこのPCに自分のコードを持っていないので、私がどこにいるのか正確に見ることができません。

基本的に、私はこのプロジェクトに取り組むための最善のアプローチを知る必要があります。私はそれが5つのボタンですべて間違っていると手動でActionListenersを使用してインタラクティブなメニューを作成していますか? (IFテキストのボタン= "アーティスト"の場合は、ボタン1,2,3,4,5をの5人の異なるアーティストに変更します)。これは悪いアプローチですか?私はこれについてのチュートリアルを見つけることができなかった。私は何でも助けてくれてありがとう!

私のリーグから外れている場合、私は喜んで別のプロジェクトを選択します。みんなありがとう!

+0

"101"コースでは奇妙なプロジェクトではないですか?私はそれらが主にあなたの言語の仕組みを教えてくれるはずだったと思って、本格的なGUIアプリケーションには入っていないと思っています...(またFYI、HTML、CSSはプログラミングではありません)。 –

+0

そうですね、彼らはプログラミングされていませんが、私は一般的に「コーディング」するのは初めてではないことを確認したかっただけです。私はVisual Basicも知っています。そして、はい、このクラスは公園の散策ではありませんでした。教師は物事を爆破し、GUIアプリケーションは私の側で本当の棘です。 間違ってはいけませんが、これはすばらしくする必要はありません。基本的なボタンと機能。再度、感謝します!! :) – EnkeiRC5

答えて

3

ボタンやテキストのテキストを更新する方法は、オブザーバーパターンと呼ばれるものです。

基本的には、再生中の曲、アーティストなどのすべてのデータを保持するモデルがあります。データが変更されると(例:曲が再生されます)、データはすべてのオブザーバー)、何かが更新されると、ゲッターがモデルを構成しているすべてのデータをGUIに単純にプルすることができます。擬似コードの例:

// this is our model 
public class Mp3Player extends Observable { 
    private MP3 songBeingPlayed; 
    ... 

    public setMp3(MP3 song){ 
     songBeingPlayed = song; 
     setChanged(); 
     notifyObservers(); 
    } 

    public void nextSong(){ 
     // Todo: Change song 
     ... 

     setChanged(); 
     notifyObservers(); // Notify GUI that something changed 
    } 
} 

// this is our gui 
public class GUI implements Observer { 
    private Mp3Player player; 
    private JLabel artistName; 

    public GUI(){ 
     player = new Mp3Player(); 
     player.addObserver(this); 
    } 

    public void update(Observable o, Object o1){ 
     // This method gets called when the model calls notifyObservers() 
     artistName.setText(player.getArtistName()); 
     ... 
    } 

} 

// Button implementation 
public class NextSongButton extends JButton implements ActionListener { 

    private Mp3Player player; 

    public NextSongButton(Mp3Player player){ 
     this.player = player; 
     ... 

     addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent ae){ 
     player.nextSong(); 
    } 

} 

これは、モデルが変更されたときにGUIをどのように更新できるかの簡単な例でした。ボタンリスナのすべてのロジックを持つ代わりに。

+0

私は、actionPerformedメソッドに複雑なロジックが必要ないことを示すボタンの実装例を追加しました。モデルにあなたが何をしたいかを伝えるだけです(例:曲を変更する)。 – pansarshrek

関連する問題