목록

'java' 76건

  • 자바 오디오 다루기
    프로그래밍 언어/JAVA · 댓글
    자바의 오디오 API자바는 응용프로그램에서 오디오를 재생하고 제어할 수 있는 오디오 API를 제공하며 다음 2가지 종류의 오디오 데이터를 다룰 수 있습니다.디지털 오디오(Digital Audio)미디(MIDI: Music Instrument Digital Interface) 데이터디지털 오디오란 연주되고 있는 음악이나 사람의 목소리 등 아날로그 소리를 샘플링하여 디지털 데이터로 만든 오디오 데이터로, 움악 CD나 전화 목소리로 녹음한 WAVE 파일 등이 이에 해당합니다. 디지털 오디오를 다루는 자바 클래스와 인터페이스들은 javax.sound.sampled 패키지에 제공됩니다. 한편, 미디 데이터란 피아노, 바이올린, 드럼 등 악기의 소리를 낼 수 있는 특별한 장치(MIDI Device)에게, 어떤 악..
  • 탭팬
    프로그래밍 언어/JAVA · 댓글
    JTabbedPaneJTabbedPane은 여러 개의 패널을 겹치게 하여 출력 공간을 공유하는 탭팬을 구현합니다. 탭팬에 부착된 각 패널을 탭(tab)이라 부릅니다. 탭팬 만들기탭팹을 만드는 과정은 단순합니다.1. JTabbedPane 객체 생성JTabbedPane pane = new JTabbedPane); // 탭 위치는 디폴트로 JTabbedPane.TOP 탭은 디폴트로 탭팬의 위쪽에 위치합니다. 텝 위치를 왼쪽에 부착하려면 다음과 같이합니다.JTabbedPane pane = new JTabbedPane(JTabbedPane.LEFT); // 탭 위치를 왼쪽으로 2. 탭 만들어 붙이기탭팬에 탭을 붙이는 작업은 JTabbedPane의 addTab() 메서드를 이용합니다. addTab()의 첫 번째 인..
  • 컬러 다이얼로그
    프로그래밍 언어/JAVA · 댓글
    JColorChooserJColorChooser를 이용하면 사용자가 색을 선택할 수 있는 컬러 다이얼로그를 출력할 수 있습니다. 컬러 다이얼로그 생성 및 출력1. 컬러 다이얼로그 출력JColorChooser 객체를 생성하여 컨텐트팬이나 패널에 컴포넌트로 삽입하여 사용할 수 있지만, 다음과 같이 JColorChooser의 static 메소드인 showDialog()를 호출하면 독립적으로 출력하여 동작으로 컬러 다이얼로그를 출력할 수 있습니다.Color selectedColor = JColorChooser.showDialog(null, "Color", Color.YELLOW); showDialog() 메서드는 사용자가 선택한 색을 리턴합니다. 2. 사용자가 선택한 색 얻기showDialog()는 "확인" ..
  • 파일 다이얼로그
    프로그래밍 언어/JAVA · 댓글
    파일의 이름을 선택하는 다이얼로그가 출력되는데, 이 다이얼로그를 파일 다이얼로그라고 부릅니다. JFileChooserJFileChooser는 파일 탐색기(File Brower)와 같은 기능을 하는 파일 다이얼로그를 구현한 스윙 컴포넌트입니다. JFileChooser를 이용하면 파일 열기 다이얼로그(File Open Dialog)와 파일 저장 다이얼로그(File Save Dialog)를 모두 출력할 수 있습니다.파일 열기 다이얼로그는 열고자 하는 파일의 이름을 사용자로부터 입력받기 위한 것이며, 파일 저장 다이얼로그는 저장하려는 파일 이름을 입력받기 위한 것입니다. 파일 열기 다이얼로그 생성1. JFileChooser 객체 생성JFileChooser chooser = new JFileChooser(); ..
  • 팝업 다이얼로그
    프로그래밍 언어/JAVA · 댓글 1
    팝업 다이얼로그와 JOptionPane팝업 다이얼로그는 스윙 패키지에 구현된 간단한 팝업창으로 사용자에게 메시지를 전달하거나 간단한 문자열을 입력받는 유용한 다이얼로그입니다.JOptionPane 클래스는 여러 종류의 팝업 다이얼로그를 출력하는 static 메서드를 지원합니다. JOptionPane 클래스에 의해 지원되는 팝업 다이얼로그는 모달 타입입니다. 그러므로 팝업 다이얼로그를 닫기 전에는 프레임을 포함하여 어떤 창으로든 이동할 수 없습니다. 입력 다이얼로그, JOptionPane.showInputDialog()JOptionPane의 showInputDialog() 메서드를 호출하면 한 줄의 문자열을 입력받는 입력 다이얼로그를 출력할 수 있습니다.static String JOptionPane.show..
  • 다이얼로그 만들기
    프로그래밍 언어/JAVA · 댓글
    JDialog다이얼로그란 보여주고자 하는 내용을 스크린에 출력하고, 사용자로부터 입력을 받는 대화 상자입니다. JDialog를 상속받아 자신만의 다이얼로그를 만들 수 있습니다. JDialog는 JFrame처럼 다른 컨테이너에 속할 필요 없이 화면에 출력 가능한 최상위 컨테이너입니다.JDialog dialog = new JDialog(); // 다이얼로그 생성dialog.setTitle("나의 다이얼로그"); // 타이틀 달기dialog.add(new JButton("click!")); // 다이얼로그에 버튼 삽입dialog.setSize(300, 300); // 다이얼로그 크기 설정dialog.setVisible(true); // 다이얼로그 화면에 출력 JDialog 클래스의 주요 멤버메서드내용JDial..
  • 툴팁
    프로그래밍 언어/JAVA · 댓글
    툴팁 생성 및 달기스윙 컴포넌트에 마우스를 올리면 잠깐 나타났다가 사라지는 문자열을 툴팁(tooltip)이라고 부릅니다.모든 스윙 컴포넌트들이 툴팁울 가질 수 있으며 생성 방법 또한 단순합니다. 간단히 JComponent의 setToolTipText(String msg) 메서드를 호출하면, 문자열(msg)을 컴포넌트의 툴팁으로 등록합니다.JButton b = new JButton("New");b.setToolTipText("파일을 생성합니다."); // 버튼에 툴팁 등록 툴팁 달기import javax.swing.*;import java.awt.*;public class ToolTipEx extends JFrame { private Container contentPane; public Tool..
  • 툴바
    프로그래밍 언어/JAVA · 댓글 1
    JToolBarJToolBar는 툴바를 구현한 컴포넌트입니다. 툴바는 같은 바(bar) 모양의 컨테이너로, 다양한 스윙 컴포넌트를 담아 아이콘 형태의 메뉴를 제공하기 위해 사용됩니다. 툴바는 BorderLayout 배치 관리자를 가진 컨테이너에만 부착되며, 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH)의 아무 곳이나 부착 가능합니다. 사용자는 실행 중에 보이는 툴바의 핸들을 마우스로 잡아 드래깅하면, 4개의 영역 중 아무 곳이나 옮길 수 있습니다. 뿐만 아니라 툴바의 핸들을 드래깅하여 4개의 영역 중 어디에도 붙이지 않고 독립적으로 떠다니게(Roatable) 할 수도 있습니다. 툴바 만들기툴바를 만드는 과정은 메뉴를 만드는 과정과 비슷하며 다음과 같이 간단합니다. 1. JToolBa..
  • 메뉴 만들기
    프로그래밍 언어/JAVA · 댓글 2
    메뉴 구성스윙 프로그램에 메뉴를 만들어 달아봅시다. JMenuBar메뉴바의 가능을 구현한 클래스입니다. 이곳에 JMenu로 만든 메뉴를 여러 개 답니다. JMenu하나의 메뉴를 구현한 클래스입니다. 이곳에 JMenuItem으로 만든 메뉴 아이템을 여러 개 답니다. JMenuItem하나의 메뉴아이템을 구현한 클래스입니다. 분리선메뉴아이템 사이의 분리선으로서 separator라고 부르며, JMenu의 addSeparator() 메서드를 호출하면 메뉴에 문리선이 삽입됩니다. 메뉴 만들기1. 메뉴바 만들기JMenuBar mb = new JMenuBar(); 2. 메뉴를 만들고 메뉴바에 붙이기메뉴 이름은 문자열로 JMenu의 생성자에 전달합니다. 메뉴바에 메뉴를 붙일 때 JMenuBar의 add() 메서드를 이용..
  • wait(), notify(), notifyAll()을 이용한 스레드 동기화
    프로그래밍 언어/JAVA · 댓글 4
    wait()-notify()를 이용한 스레드 동기화가 필요한 경우스레드들이 sybchronized를 이용하여 공유 데이터에 순차적으로 잘 접근하도록 만들어진 경우라도, 여전히 동기화가 필요한 상황이 있습니다. 대표적 경우가 공유 메모리를 통해 두 스레드가 데이터를 주고받을 때, 공유 메모리에 대해 두 스레드가 동시에 접근하는 producer-cunsumer 문제입니다. Object의 wait(), notify() 메소드wait()-notify()를 이용하면 앞의 producer-consumer 문제의 스레드 동기화를 해결할 수 있습니다. java.lang.Object 클래스는 스레드 사이에 동기화를 위한 3개의 메서드 wait(), notify, notifyAll()를 제공합니다. 모든 객체가 동기화 객..
  • 스레드 동기화(Thread Synchronization)
    프로그래밍 언어/JAVA · 댓글 3
    스레드 동기화의 필요성멀티스레드는 다수의 작업을 동시에 실행시키는 응용프로그램 작성 기법입니다. 하지만, 멀티 스레드를 사용할 때 주의를 기울려야 합니다. 다수의 스레드가 공유 자원 혹은 공유 데이터에 접근할 때 예상치 못한 결과를 낳을 수 있습니다. 공유 프린터에 즉시 접근하는 경우공유 프린터에 대한 멀티 스레드의 동시 접근을 순차화하여 섞여 출력되는 문제를 해결하였습니다. 공유 집계판에 동시 접근하는 경우 멀티스레드 프로그램을 작성할 때 주의할 점을 다수의 스레드가 공유 데이터에 동시 접근하는 경우에 대한 처리입니다. 이에 대한 헤결책이 바로 스레드 동기화(Thread Synchronization)입니다. 스레드 동기화란 공유 데이터에 접근하고자 하는 다수의 스레드가 서로 순서대로 충돌 없이 공유 데..
  • 스레드 종료
    프로그래밍 언어/JAVA · 댓글 4
    스레드의 종료는 스스로 종료하는 경우와 다른 스레드에 의해 강제 종료되는 경우가 있습니다. 종료된 스레드를 다시 살릴 수도 없습니다. 스스로 종료스레드는 다음 예와 같이 run() 메서드가 실행 도중 리턴하거나 run()을 완전히 실행하고 리턴하면 종료됩니다.public void run() { ................ return; // 스레드는 스스로 종료한다. ................} 강제 종료그러면 한 스레드가 다른 스레드를 강제로 종료시킬 수 있을까? 종료시키고자 하는 스레드의 interrupt() 메서드를 호출하면 됩니다.main() 스레드는 TimerThread 스레드를 생성한 뒤, 강제로 종료시키기 위해 TimerThread의 interrupt()를 호출합니다. 이 결과 Time..

자바 오디오 다루기

자바의 오디오 API자바는 응용프로그램에서 오디오를 재생하고 제어할 수 있는 오디오 API를 제공하며 다음 2가지 종류의 오디오 데이터를 다룰 수 있습니다.디지털 오디오(Digital Audio)미디(MIDI: Music Instrument Digital Interface) 데이터디지털 오디오란 연주되고 있는 음악이나 사람의 목소리 등 아날로그 소리를 샘플링하여 디지털 데이터로 만든 오디오 데이터로, 움악 CD나 전화 목소리로 녹음한 WAVE 파일 등이 이에 해당합니다. 디지털 오디오를 다루는 자바 클래스와 인터페이스들은 javax.sound.sampled 패키지에 제공됩니다. 한편, 미디 데이터란 피아노, 바이올린, 드럼 등 악기의 소리를 낼 수 있는 특별한 장치(MIDI Device)에게, 어떤 악..

탭팬

JTabbedPaneJTabbedPane은 여러 개의 패널을 겹치게 하여 출력 공간을 공유하는 탭팬을 구현합니다. 탭팬에 부착된 각 패널을 탭(tab)이라 부릅니다. 탭팬 만들기탭팹을 만드는 과정은 단순합니다.1. JTabbedPane 객체 생성JTabbedPane pane = new JTabbedPane); // 탭 위치는 디폴트로 JTabbedPane.TOP 탭은 디폴트로 탭팬의 위쪽에 위치합니다. 텝 위치를 왼쪽에 부착하려면 다음과 같이합니다.JTabbedPane pane = new JTabbedPane(JTabbedPane.LEFT); // 탭 위치를 왼쪽으로 2. 탭 만들어 붙이기탭팬에 탭을 붙이는 작업은 JTabbedPane의 addTab() 메서드를 이용합니다. addTab()의 첫 번째 인..

컬러 다이얼로그

JColorChooserJColorChooser를 이용하면 사용자가 색을 선택할 수 있는 컬러 다이얼로그를 출력할 수 있습니다. 컬러 다이얼로그 생성 및 출력1. 컬러 다이얼로그 출력JColorChooser 객체를 생성하여 컨텐트팬이나 패널에 컴포넌트로 삽입하여 사용할 수 있지만, 다음과 같이 JColorChooser의 static 메소드인 showDialog()를 호출하면 독립적으로 출력하여 동작으로 컬러 다이얼로그를 출력할 수 있습니다.Color selectedColor = JColorChooser.showDialog(null, "Color", Color.YELLOW); showDialog() 메서드는 사용자가 선택한 색을 리턴합니다. 2. 사용자가 선택한 색 얻기showDialog()는 "확인" ..

파일 다이얼로그

파일의 이름을 선택하는 다이얼로그가 출력되는데, 이 다이얼로그를 파일 다이얼로그라고 부릅니다. JFileChooserJFileChooser는 파일 탐색기(File Brower)와 같은 기능을 하는 파일 다이얼로그를 구현한 스윙 컴포넌트입니다. JFileChooser를 이용하면 파일 열기 다이얼로그(File Open Dialog)와 파일 저장 다이얼로그(File Save Dialog)를 모두 출력할 수 있습니다.파일 열기 다이얼로그는 열고자 하는 파일의 이름을 사용자로부터 입력받기 위한 것이며, 파일 저장 다이얼로그는 저장하려는 파일 이름을 입력받기 위한 것입니다. 파일 열기 다이얼로그 생성1. JFileChooser 객체 생성JFileChooser chooser = new JFileChooser(); ..

팝업 다이얼로그

팝업 다이얼로그와 JOptionPane팝업 다이얼로그는 스윙 패키지에 구현된 간단한 팝업창으로 사용자에게 메시지를 전달하거나 간단한 문자열을 입력받는 유용한 다이얼로그입니다.JOptionPane 클래스는 여러 종류의 팝업 다이얼로그를 출력하는 static 메서드를 지원합니다. JOptionPane 클래스에 의해 지원되는 팝업 다이얼로그는 모달 타입입니다. 그러므로 팝업 다이얼로그를 닫기 전에는 프레임을 포함하여 어떤 창으로든 이동할 수 없습니다. 입력 다이얼로그, JOptionPane.showInputDialog()JOptionPane의 showInputDialog() 메서드를 호출하면 한 줄의 문자열을 입력받는 입력 다이얼로그를 출력할 수 있습니다.static String JOptionPane.show..

다이얼로그 만들기

JDialog다이얼로그란 보여주고자 하는 내용을 스크린에 출력하고, 사용자로부터 입력을 받는 대화 상자입니다. JDialog를 상속받아 자신만의 다이얼로그를 만들 수 있습니다. JDialog는 JFrame처럼 다른 컨테이너에 속할 필요 없이 화면에 출력 가능한 최상위 컨테이너입니다.JDialog dialog = new JDialog(); // 다이얼로그 생성dialog.setTitle("나의 다이얼로그"); // 타이틀 달기dialog.add(new JButton("click!")); // 다이얼로그에 버튼 삽입dialog.setSize(300, 300); // 다이얼로그 크기 설정dialog.setVisible(true); // 다이얼로그 화면에 출력 JDialog 클래스의 주요 멤버메서드내용JDial..

툴팁

툴팁 생성 및 달기스윙 컴포넌트에 마우스를 올리면 잠깐 나타났다가 사라지는 문자열을 툴팁(tooltip)이라고 부릅니다.모든 스윙 컴포넌트들이 툴팁울 가질 수 있으며 생성 방법 또한 단순합니다. 간단히 JComponent의 setToolTipText(String msg) 메서드를 호출하면, 문자열(msg)을 컴포넌트의 툴팁으로 등록합니다.JButton b = new JButton("New");b.setToolTipText("파일을 생성합니다."); // 버튼에 툴팁 등록 툴팁 달기import javax.swing.*;import java.awt.*;public class ToolTipEx extends JFrame { private Container contentPane; public Tool..

툴바

JToolBarJToolBar는 툴바를 구현한 컴포넌트입니다. 툴바는 같은 바(bar) 모양의 컨테이너로, 다양한 스윙 컴포넌트를 담아 아이콘 형태의 메뉴를 제공하기 위해 사용됩니다. 툴바는 BorderLayout 배치 관리자를 가진 컨테이너에만 부착되며, 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH)의 아무 곳이나 부착 가능합니다. 사용자는 실행 중에 보이는 툴바의 핸들을 마우스로 잡아 드래깅하면, 4개의 영역 중 아무 곳이나 옮길 수 있습니다. 뿐만 아니라 툴바의 핸들을 드래깅하여 4개의 영역 중 어디에도 붙이지 않고 독립적으로 떠다니게(Roatable) 할 수도 있습니다. 툴바 만들기툴바를 만드는 과정은 메뉴를 만드는 과정과 비슷하며 다음과 같이 간단합니다. 1. JToolBa..

메뉴 만들기

메뉴 구성스윙 프로그램에 메뉴를 만들어 달아봅시다. JMenuBar메뉴바의 가능을 구현한 클래스입니다. 이곳에 JMenu로 만든 메뉴를 여러 개 답니다. JMenu하나의 메뉴를 구현한 클래스입니다. 이곳에 JMenuItem으로 만든 메뉴 아이템을 여러 개 답니다. JMenuItem하나의 메뉴아이템을 구현한 클래스입니다. 분리선메뉴아이템 사이의 분리선으로서 separator라고 부르며, JMenu의 addSeparator() 메서드를 호출하면 메뉴에 문리선이 삽입됩니다. 메뉴 만들기1. 메뉴바 만들기JMenuBar mb = new JMenuBar(); 2. 메뉴를 만들고 메뉴바에 붙이기메뉴 이름은 문자열로 JMenu의 생성자에 전달합니다. 메뉴바에 메뉴를 붙일 때 JMenuBar의 add() 메서드를 이용..

wait(), notify(), notifyAll()을 이용한 스레드 동기화

wait()-notify()를 이용한 스레드 동기화가 필요한 경우스레드들이 sybchronized를 이용하여 공유 데이터에 순차적으로 잘 접근하도록 만들어진 경우라도, 여전히 동기화가 필요한 상황이 있습니다. 대표적 경우가 공유 메모리를 통해 두 스레드가 데이터를 주고받을 때, 공유 메모리에 대해 두 스레드가 동시에 접근하는 producer-cunsumer 문제입니다. Object의 wait(), notify() 메소드wait()-notify()를 이용하면 앞의 producer-consumer 문제의 스레드 동기화를 해결할 수 있습니다. java.lang.Object 클래스는 스레드 사이에 동기화를 위한 3개의 메서드 wait(), notify, notifyAll()를 제공합니다. 모든 객체가 동기화 객..

스레드 동기화(Thread Synchronization)

스레드 동기화의 필요성멀티스레드는 다수의 작업을 동시에 실행시키는 응용프로그램 작성 기법입니다. 하지만, 멀티 스레드를 사용할 때 주의를 기울려야 합니다. 다수의 스레드가 공유 자원 혹은 공유 데이터에 접근할 때 예상치 못한 결과를 낳을 수 있습니다. 공유 프린터에 즉시 접근하는 경우공유 프린터에 대한 멀티 스레드의 동시 접근을 순차화하여 섞여 출력되는 문제를 해결하였습니다. 공유 집계판에 동시 접근하는 경우 멀티스레드 프로그램을 작성할 때 주의할 점을 다수의 스레드가 공유 데이터에 동시 접근하는 경우에 대한 처리입니다. 이에 대한 헤결책이 바로 스레드 동기화(Thread Synchronization)입니다. 스레드 동기화란 공유 데이터에 접근하고자 하는 다수의 스레드가 서로 순서대로 충돌 없이 공유 데..

스레드 종료

스레드의 종료는 스스로 종료하는 경우와 다른 스레드에 의해 강제 종료되는 경우가 있습니다. 종료된 스레드를 다시 살릴 수도 없습니다. 스스로 종료스레드는 다음 예와 같이 run() 메서드가 실행 도중 리턴하거나 run()을 완전히 실행하고 리턴하면 종료됩니다.public void run() { ................ return; // 스레드는 스스로 종료한다. ................} 강제 종료그러면 한 스레드가 다른 스레드를 강제로 종료시킬 수 있을까? 종료시키고자 하는 스레드의 interrupt() 메서드를 호출하면 됩니다.main() 스레드는 TimerThread 스레드를 생성한 뒤, 강제로 종료시키기 위해 TimerThread의 interrupt()를 호출합니다. 이 결과 Time..