[ java ] MVC 패턴 적용 방식 - 음악재생 플레이어 > java

본문 바로가기
사이트 내 전체검색

java

[ java ] MVC 패턴 적용 방식 - 음악재생 플레이어

페이지 정보

작성자 웹지기 댓글 2건 조회 4,854회 작성일 20-12-21 17:13

본문

MVC 패턴 적용 방식 - 음악재생 플레이어

 

M - Model Class

V - View Class

C - Controller Class

 

모델은 클래스의 멤버변수, 멤버함수 등

뷰는 클래의 모델에 포함된 데이터를 시각화

콘트롤러는 클래스의 모델과 뷰 모두에 영향을 주며 데이터의 흐름을 제어, 데이터의 갱신등

 

----- Music.java -----

public class Music {

    //Model Class

    private String musicName;

    private String singer;

    private int playTime;

    private String musicPath;

    

    public Music(String musicName, String singer, int playTime, String musicPath) {

        super();

        this.musicName = musicName;

        this.singer = singer;

        this.playTime = playTime;

        this.musicPath = musicPath;

    }

    public String getMusicName() {

        return musicName;

    }

    public String getSinger() {

        return singer;

    }

    public int getPlayTime() {

        return playTime;

    }

    public String getMusicPath() {

        return musicPath;

    }

}

 

----- Main.java -----

import java.util.Scanner;


public class Main {

    // View Class

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        MusicPlayer p = new MusicPlayer();

        

        while(true) {

            System.out.print("[1]재생 [2]정지 [3]다음곡 [4]이전곡 [5]종료 : ");

            int menu = sc.nextInt();

            Music m;

            

            switch(menu) {

                case 1 :

                    m = p.play();

                    System.out.println(musicInfo(m));

                    break;

                case 2 :

                    String msg = p.stop();

                    System.out.println(msg);

                    break;

                case 3 :

                    m = p.nextPlay();

                    System.out.println(musicInfo(m));

                    break;

                case 4 :

                    m = p.previewPlay();

                    System.out.println(musicInfo(m));

                    break;

            }

            

            if(menu == 5) {

                String msg = p.stop();

                System.out.println("프로그램 종료");

                break;

            }

        }

        sc.close();

    }


    private static String musicInfo(Music m) {

        return m.getMusicName()+", "+m.getSinger()+", "+changeTime(m);

    }


    private static String changeTime(Music m) {

        return m.getPlayTime()/60+"분"+m.getPlayTime()%60+"초";

    }

}

 

----- MusicPlayer.java -----

import java.util.ArrayList;

import javazoom.jl.player.MP3Player;


public class MusicPlayer {

    //Controller Class

    ArrayList<Music> musicList = new ArrayList<Music>();

    int curIndex = 0;

    MP3Player mp3 = new MP3Player();

    

    public MusicPlayer() {

        //음악 전체 목록

        musicList.add(new Music("깡", "Rain", 100, "D://java/MusicPlayer/music/Rain - 깡.mp3"));

        musicList.add(new Music("Dalla", "Dalla", 120, "D://java/MusicPlayer/music/Itzy - Dalla Dalla.mp3"));

        musicList.add(new Music("SOLO", "JENNIE", 200, "D://java/MusicPlayer/music/JENNIE - SOLO.mp3"));

    }

    

    public Music play() {

        //현재 재생 객체 반환

        Music m = musicList.get(curIndex);

        

        if(mp3.isPlaying()) {

            mp3.stop();

        }

        mp3.play(musicList.get(curIndex).getMusicPath());

        return m;

    }

    

    public Music nextPlay() {

        curIndex++;

        

        if(curIndex == musicList.size()) {

            curIndex = 0;

        }

        

        if(mp3.isPlaying()) {

            mp3.stop();

        }

        mp3.play(musicList.get(curIndex).getMusicPath());

        /*

        //확인용

        Music m = musicList.get(curIndex);

        System.out.println(m);

        return m;

        */

        return musicList.get(curIndex);

    }

    

    public Music previewPlay() {

        curIndex--;

        

        if(curIndex < 0) {

            curIndex = musicList.size()-1;

        }

        

        if(mp3.isPlaying()) {

            mp3.stop();

        }

        mp3.play(musicList.get(curIndex).getMusicPath());

        /*

        //확인용

        Music m = musicList.get(curIndex);

        System.out.println(m);

        return m;

        */

        return musicList.get(curIndex);

    }

    

    public String stop() {

        if(mp3.isPlaying()) {

            mp3.stop();

        }

        return "노래가 정지되었습니다.";

    }

}

 

추천0 비추천0

첨부파일

  • player.jar (146.2K) 0회 다운로드 | DATE : 2020-12-21 18:10:05

댓글목록

웹지기님의 댓글

웹지기 작성일

player.jar 파일 등록 방법
MusicPlayer 프로젝트명위 마우스 오른쪽 > Build Path > Configure Build Path > Libraries > Add External JARs > 해당파일의 경로 선택 > player.jar 선택

웹지기님의 댓글

웹지기 작성일

음악파일의 경로는 해당폴더에 음악 파일이 있어야 재생이 된다.

Total 113건 2 페이지
  • 98 [ java ] JavaFestival10 - Question2 - 문자열을 입력받아 알파벳순서대로 정렬하여…
  • JavaFestival10 - Question2 - 문자열을 입력받아 알파벳순서대로 정렬하여 반환하는 메소드를 구현하시오. 단, 대소문자는 구분한다. import java.util.Arrays; public class Question2 { public static void main(String[] args) { // 문자열을 입력받아 알파벳순서대로 정렬하여 반환하는 메소드를 구현하시오 // 단, 대소문자는 구분한다. ...
  • 웹지기 01-07 3917 0 0 댓글 0
  • 97 [ java ] Eclipse GUI ( Graphic User Interface ) Download 및 I…
  • GUI ( Graphic User Interface ) Download Eclipse IDE - GUI Installation Help &gt; Install New Software &gt; Add &gt; Local : WindowBuilder Archive : http://download.eclipse.org/windowbuilder/WB/integration/4.5/ &gt; Add &gt; Swing Designer check ...
  • 웹지기 01-06 1412 0 0 댓글 0
  • 96 [ java ] GUI Programming 방법
  • Java의 GUI Programming 방법 - AWT( Abstract Windowing Toolkit ) 자바가 처음 나왔을 때 함께 배포된 GUI라이브러리 운영체제에 따라 서로 다른 모양으로 그려짐 - Swing(스윙) AWT기술을 기반으로 작성된 자바라이브러리 운영체제에 관계없이 항상 동일하게 작동하며 동일한 모양으로 그려짐 컨테이너(Container)와 컴포넌트(Component) 컨테이너(Container) - 컴포넌트들의 배치를 관리하는 Layout의 개념 ...
  • 웹지기 01-06 1022 0 0 댓글 0
  • 95 [ java ] DAO , DTO
  • DTO ( Data Transfer Object ) - VO ( Value Object ) - 순수 데이터의 객체 - 속성과 그 속성에 접근하기 위한 getter, setter 메소드만을 가진 클래스 DAO ( Data Access Object ) - DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 - 등록, 수정, 조회, 삭제 등의 작업을 하는 클래스 - CRUD ( CREATE, READ, UPDATE, DELETE ) 작업
  • 웹지기 12-28 2557 0 0 댓글 0
  • 92 [ java ] eclipse jdbc like 구문 사용하기
  • eclipse jdbc like 구문 사용하기 sql = " SELECT * FROM student WHERE name LIKE ? "; pst = conn.prepareStatement(sql); String names = '%'+name+'%'; pst.setString(1, names); ResultSet rs = pst.excuteQuery();
  • 웹지기 12-24 3455 0 0 댓글 0
  • 91 [ java ] jdbc 연동 - 상태창, 연결확인
  • jdbc 연결 상태 확인창 열기 - data source connections 열기 Window &gt; Show view &gt; other &gt; data로검색(Data Source Explorer) &gt; open (콘솔창에 data source explorer 창이 뜸 - 마우스 우클릭으로 connect // disconnect ) Databae Connections &gt; 마우스우클릭 &gt; New &gt...
  • 웹지기 12-23 5538 0 0 댓글 0
  • 90 [ java ] interface(인터페이스)
  • Interface(인터페이스) 클래스들이 구현해야 하는 공통되는 기능들을 미리지정 작업명세서 or 프로젝트 설계도 기능만 정의함으로써 구현 객체의 같은 동작 보장(구현강제) 1) 인터페이스는 틀을 정해주기 때문에 추상메소드만 존재할 수 있다. 2) 추가로 필드에는 상수를 넣어 줄 수 있다. 즉, 인터페이스에는 추상메서드와 추상 필드만 들어갈 수 있다. 하나의 클래스가 여러개의 인터페이스를 구현 할 수 있다.( implements ) 인터페이스는 인터페이스를 상속받을 수 있다.(...
  • 웹지기 12-23 1333 0 0 댓글 0
  • 89 [ java ] JavaFestival10 - Question1 - 어떤 문장의 각 알파벳을 일정한 거리만큼…
  • Question1 - 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 한다. - A를 3만큼 밀면 D가 되고 z를 1만큼 밀면 a가 됩니다. 공백은 수정하지 않는다. - 보낼 문자열 s와 얼마나 밀지 알려주는 n을 입력받아 암호문을 만드는 ceasar 함수를 완성해 보시오. - "a B z" , 4를 입력 바았다면 "e F d" 를 리턴한다. public class Question1 {...
  • 웹지기 12-22 1684 0 0 댓글 0
  • 86 [ java ] 상속 - 마우스 버튼에 대한 중복 클래스를 상속으로 변경
  • 마우스 버튼에 대한 중복 클래스를 상속으로 변경 Mouse.java 에서 사용하는 클래스를 WheelMouse.java와 ErgonomicsMouse.java 파일도 사용하므로 중복이 발생하는데 이를 상속을 통해서 코드를 생략하고, 편리하게 사용할 수 가 있다. ----- Main.java ----- package 상속_마우스; public class Main { public static void main(String[] args) { ...
  • 웹지기 12-22 1620 0 0 댓글 0
  • 85 [ java ] 상속 , 오버라이딩 , 다형성 , 추상클래스 , 패키지
  • 코드의 생산성을 높이기 위해 반복문, 메소드, 상속등을 사용하여 코드를 간결하게 한다. 1) 상속 (기존 클래스의 변수(데이터)와 메소드(로직, 코드)를 물려받아 새로운 클래스를 구성하는 것) - 프로그램의 생산성을 높이기 위함 - 자식 클래스는 부모클래스에 만들어진 필드와 메소드를 만들지 않고도 만든 것과 같은 효과를 얻는다. - 기존에 사용하던 것에 대한 확장의 개념 - 클래스 사이의 상속이지 객체 사이의 상속이 아님. - 자식 객체는 자식클래스와 부모 클래스에 만들어진 모든 ...
  • 웹지기 12-22 1525 0 0 댓글 0
  • 열람중 [ java ] MVC 패턴 적용 방식 - 음악재생 플레이어
  • MVC 패턴 적용 방식 - 음악재생 플레이어 M - Model Class V - View Class C - Controller Class 모델은 클래스의 멤버변수, 멤버함수 등 뷰는 클래의 모델에 포함된 데이터를 시각화 콘트롤러는 클래스의 모델과 뷰 모두에 영향을 주며 데이터의 흐름을 제어, 데이터의 갱신등 ----- Music.java ----- public class Music { //Model Class private String mus...
  • 웹지기 12-21 4855 0 0 댓글 2
게시물 검색

회원로그인

접속자집계

오늘
5,183
어제
9,384
최대
33,828
전체
8,411,739

그누보드5
Copyright © funyphp.com. All rights reserved.