English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 객체지향(I)

Java 객체지향(II)

Java 객체지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map集合

Java Set集合

Java 입력출력(I/O)

Java Reader/Writer

Java 다른 주제

Java Applet 기본

Applet은 Java 프로그램입니다. 일반적으로 Java를 지원하는 웹 브라우저에서 실행됩니다. 완벽한 Java API를 지원하기 때문에 Applet은 전능한 Java 애플리케이션입니다.

다음과 같이 독립적인 Java 애플리케이션과 Applet 프로그램 간의 중요한 차이점은 다음과 같습니다:

  • Java에서 Applet 클래스는 java.applet.Applet 클래스를 상속받습니다.

  • Applet 클래스는 main()을 정의하지 않기 때문에, Applet 프로그램은 main() 메서드를 호출하지 않습니다.

  • Applet은 HTML 페이지에 삽입되도록 설계되었습니다。

  • 사용자가 Applet을 포함한 HTML 페이지를 탐색할 때, Applet의 코드가 사용자의 기계에 다운로드됩니다。

  • Applet을 보기 위해 JVM이 필요합니다. JVM은 웹 브라우저의 플러그인이나 독립적인 실행 환경일 수 있습니다。

  • 사용자의 기계에서 JVM이 Applet 클래스의 예제를 생성하고, Applet 생명주기 과정에서 다양한 메서드를 호출합니다。

  • Applet은 웹 브라우저가 강제로 적용하는 엄격한 보안 규칙을 가지고 있으며, Applet의 보안 메커니즘은 샌드박스 보안으로 알려져 있습니다。

  • Applet이 필요로 하는 다른 클래스들은 Java 아키텍처(JAR) 파일 형식으로 다운로드할 수 있습니다。

Applet의 생명주기

Applet 클래스의 네 가지 메서드는 프레임워크를 제공하여,小程序을 개발할 수 있습니다:

  • init: 이 메서드의 목적은 Applet에 필요한 초기화를 제공하는 것입니다. Applet 태그 내의 param 태그가 처리된 후에 호출됩니다.

  • start: 브라우저가 init 메서드를 호출한 후, 이 메서드가 자동으로 호출됩니다. 사용자가 다른 페이지에서 포함된 Applet 페이지로 돌아올 때마다 호출됩니다.

  • stop: 사용자가 Applet을 포함한 페이지에서 제거될 때, 이 메서드가 자동으로 호출됩니다. 따라서, 같은 Applet에서 반복적으로 이 메서드를 호출할 수 있습니다.

  • destroy: 이 메서드는 브라우저가 정상적으로 닫혔을 때만 호출됩니다. Applet이 HTML 웹 페이지에서만 유효하기 때문에, Applet을 포함한 페이지를 사용자가 벗어났을 때 어떤 자원도 잊지 마세요.

  • paint: 이 메서드는 start() 메서드 이후 즉시 호출되거나, Applet이 브라우저에서 다시 그려져야 할 때 호출됩니다. paint() 메서드는 실제로 java.awt에서 상속됩니다。

"Hello, World" Applet:

다음은 간단한 Applet 프로그램 HelloWorldApplet.java입니다:

import java.applet.*;
import java.awt.*;
 
public class HelloWorldApplet extends Applet
{
   public void paint (Graphics g)
   {
      g.drawString ("Hello World", 25g.drawString("www.javalicense.com", 5,
   }
}

이 import 문장들은 다음 클래스들을 우리의 Applet 클래스에 도입합니다:

java.applet.Applet.
java.awt.Graphics.

이 import 문이 없으면 Java 컴파일러는 Applet과 Graphics 클래스를 인식할 수 없습니다.

Applet 클래스

모든 Applet은 java.applet.Applet 클래스의 서브클래스입니다. 기본 Applet 클래스는 서브 클래스가 브라우저 컨텍스트 정보 및 서비스를 얻을 수 있도록 호출할 수 있는 메서드를 제공합니다.

이 메서드는 다음과 같은 작업을 수행합니다:

  • Applet 매개변수를 얻습니다

  • Applet이 포함된 HTML 파일의 네트워크 위치를 얻습니다

  • Applet 클래스 디렉토리의 네트워크 위치를 얻습니다

  • 브라우저 상태 정보를 출력합니다

  • 이미지를 가져옵니다

  • 오디오 프레임워크를 가져옵니다

  • 오디오 프레임워크를 재생합니다

  • 이 Applet의 크기를 조정합니다

또한 Applet 클래스는 Viewer나 브라우저가 Applet 정보를 얻고 Applet 실행을 제어할 수 있는 인터페이스를 제공합니다.

viewer는 다음과 같을 수 있습니다:

  • Applet 작성자, 버전 및 저작권 정보 요청

  • Applet이 인식하는 매개변수 설명 요청

  • Applet 초기화

  • Applet 소멸

  • Applet 실행 시작

  • Applet 실행 종료

Applet 클래스는 이 메서드에 대한 기본 구현을 제공하며, 필요에 따라 재정의할 수 있습니다.

"안녕하세요, 세상" Applet은 표준으로 작성되었습니다. 재정의된 유일한 메서드는 paint 메서드입니다.

Applet 호출

Applet은 Java 프로그램입니다. 일반적으로 Java를 지원하는 웹 브라우저에서 실행됩니다. 완전한 Java API를 지원하기 때문에 Applet은 완전 기능을 가진 Java 애플리케이션입니다.

<applet> 태그는 HTML 파일에 Applet을 삽입하는 기본입니다. 아래는 "Hello World" Applet을 호출하는 예제입니다;

<html>
<title>안녕하세요, 세상 Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
브라우저가 Java를 지원하면-활성화된 경우, "안녕하세요, 세상"
여기에 메시지가 표시됩니다.
</applet>
<hr>
</<param name="image" value="java.jpg">

주의: HTML Applet 태그를 참조하여 Applet을 HTML에서 호출하는 방법을 더 잘 이해할 수 있습니다.

<applet> 태그의 속성은 실행할 Applet 클래스를 지정합니다. width와 height는 Applet 실행 패널의 초기 크기를 지정합니다. Applet은 <}}을 사용해야 합니다./applet> 태그를 닫습니다.

Applet이 매개변수를 받아야 한다면, 매개변수 값은 <param> 태그에 추가해야 하며, 이 태그는 <applet>과 </applet> 사이의 텍스트와 다른 태그를 무시합니다.

Java를 지원하지 않는 브라우저는 <applet>과 </applet>으로, 태그 사이에 표시되고 applet과 관계없는 모든 것이, Java를 지원하지 않는 브라우저에서는 보입니다.

Viewer나 브라우저는 문서의 위치에서 컴파일된 Java 코드를 찾습니다. 문서의 경로를 지정하려면 <applet> 태그의 codebase 속성을 사용해야 합니다.

아래와 같이 보입니다:

<applet codebase="http://amrood.com/applets
code="HelloWorldApplet.class" width="320" height="120">

Applet이 기본 패키지가 아니라 패키지에 속해 있다면, 해당 패키지는 code 속성에서 지정되어야 합니다. 예를 들어:

<applet code="mypackage.subpackage.TestApplet.class"
           width="320" height="120">

applet 매개변수 얻기

아래의 예제는 Applet 응답을 사용하여 파일에서 지정된 매개변수를 설정하는 방법을 보여줍니다. 이 Applet은 검은색 체스 패턴과 두 번째 색상을 표시합니다.

두 번째 색상과 각 열의 크기는 문서에서 Applet 매개변수로 지정됩니다.

CheckerApplet은 init() 메서드에서 매개변수를 얻습니다. 또한 paint() 메서드에서 매개변수를 얻을 수 있습니다. 그러나 Applet이 값을 얻고 설정을 저장한 후에는 각각의 새로운 갱신마다 값을 얻지 않는 것이 편리하며 효율적입니다.

Applet viewer나 브라우저는 Applet이 매번 실행될 때마다 init() 메서드를 호출합니다. Applet을 로드한 후, Viewer는 즉시 init() 메서드를 호출합니다(Applet.init()은 아무것도 하지 않습니다). 이 메서드의 기본 구현을 재정의하고, 몇 가지 사용자 정의 초기화 코드를 추가합니다.

Applet.getParameter() 메서드는 매개변수 이름을 통해 매개변수 값을 얻습니다. 얻은 값이 숫자나 다른 비문자 데이터라면 문자열 유형으로 구성해야 합니다.

다음은 CheckerApplet.java의 수정 사항입니다:

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
   int squareSize = 50;// 기본 크기 초기화
   public void init() {}
   private void parseSquareSize(String param) {}
   private Color parseColor(String param) {}
   public void paint(Graphics g) {}
}

아래는 CheckerApplet 클래스의 init() 메서드와 private parseSquareSize() 메서드입니다:

public void init()
{
   String squareSizeParam = getParameter("squareSize");
   parseSquareSize(squareSizeParam);
   String colorParam = getParameter("color");
   Color fg = parseColor(colorParam);
   setBackground(Color.black);
   setForeground(fg);
}
private void parseSquareSize(String param)
{
   if (param == null) return;
   try {
      squareSize = Integer.parseInt(param);
   }
   catch(Exception e) {
     // 기본 값 유지
   }
}

이 Applet는 parseSquareSize()를 호출하여 squareSize 파라미터를 해석합니다. parseSquareSize()는 라이브러리 메서드 Integer.parseInt()를 호출합니다. 이 메서드는 문자열을 정수로 해석하며, 파라미터가 무효일 때 Integer.parseInt()는 예외를 발생시킵니다.

따라서 parseSquareSize() 메서드도 예외를 잡고, Applet가 무효한 입력을 받지 않도록 합니다.

애플릿은 parseColor() 메서드를 호출하여 색상 파라미터를 Color 값으로 해석합니다. parseColor() 메서드는 파라미터 값과 사전 정의된 색상 이름을 일치시키기 위해 일련의 문자열 비교를 수행합니다. Applet이 작동하도록 이 메서드를 구현해야 합니다.

애플릿 파라미터 지정

아래의 예제는 CheckerApplet 클래스를 내장한 HTML 파일입니다. HTML 파일은 <param> 태그를 사용하여 애플릿에 두 가지 파라미터를 지정합니다.

<html>
<title>Checkerboard Applet</title>
<hr>
<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue">
<param name="squaresize" value="30">
</applet>
<hr>
</<param name="image" value="java.jpg">

주의: 파라미터 이름은 대소문자를 구분하지 않습니다.

애플릿으로 변환

그래픽적 Java 애플릿(AWT를 사용한 애플릿이나 java 프로그램 스타트업을 사용한 애플릿을 말합니다)을 웹 페이지에 내장된 애플릿으로 변환하는 것은 매우 간단합니다.

애플릿으로 변환하는 몇 가지 단계는 다음과 같습니다:

  • 애플릿 코드를 로드할 수 있는 HTML 페이지를 작성하세요.

  • JApplet 클래스의 서브클래스를 작성하고, 이 클래스를 public으로 설정하세요. 그렇지 않으면 애플릿이 로드되지 않습니다.

  • main() 메서드를 제거하세요. 애플릿이 브라우저에서 표시되기 때문에 프레임워크 창을 생성하지 마세요.

  • 프레임워크 창의 생성자 메서드에 있는 초기화 코드를 Applet의 init() 메서드로 이동하세요. Applet 객체를 명시적으로 생성할 필요가 없습니다. 브라우저는 init() 메서드를 호출하여 객체를 인스턴스화합니다.

  • setSize() 메서드 호출을 제거하세요. 애플릿의 크기는 이미 HTML 파일의 width와 height 파라미터로 설정되어 있습니다.

  • dispose() 메서드 호출을 제거하세요. 애플릿은 닫을 수 없으며, 브라우저가 종료될 때 함께 종료됩니다.

  • 애플릿이 setTitle() 메서드를 호출한 경우, 이 메서드 호출을 제거하세요. 애플릿은 타이틀 바가 없습니다.(물론, HTML의 title 태그를 사용하여 웹 페이지 자체를 이름 지정할 수 있습니다.)

  • setVisible(true)를 호출하지 마세요, Applet는 자동으로 표시됩니다.

이벤트 처리

Applet 클래스는 Container 클래스에서 많은 이벤트 처리 메서드를 상속받습니다. Container 클래스는 특별한 유형의 이벤트를 처리하기 위한 몇 가지 메서드를 정의하며, 모든 이벤트를 처리하는 processEvent 메서드도 포함하고 있습니다.

이벤트에 응답하기 위해 Applet는 적절한 이벤트 처리 메서드를 재정의해야 합니다.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;
 
public class ExampleEventHandling extends Applet
                             implements MouseListener {
 
    StringBuffer strBuffer;
 
    public void init() {
         addMouseListener(this);
         strBuffer = new StringBuffer();
        addItem("initializing the applet ");
    }
 
    public void start() {
        addItem("starting the applet ");
    }
 
    public void stop() {
        addItem("stopping the applet ");
    }
 
    public void destroy() {
        addItem("unloading the applet");
    }
 
    void addItem(String word) {
        System.out.println(word);
        strBuffer.append(word);
        repaint();
    }
 
    public void paint(Graphics g) {
         //애플릿의 디스플레이 영역 주위에 사각형을 그려라.
        g.drawRect(0, 0,
                      getWidth() - 1g.drawString("www.javalicense.com",
                      getHeight()} - 1)
 
         //사각형 내에 문자를 표시합니다.
        g.drawString(strBuffer.toString(), 10g.drawString("www.javalicense.com", 2,
    }
 
  
    public void mouseEntered(MouseEvent event) {
    }
    public void mouseExited(MouseEvent event) {
    }
    public void mousePressed(MouseEvent event) {
    }
    public void mouseReleased(MouseEvent event) {
    }
 
    public void mouseClicked(MouseEvent event) {
         addItem("mouse clicked! ");
    }
}

다음과 같이 Applet을 호출합니다:

<html>
<title>이벤트 처리</title>
<hr>
<applet code="ExampleEventHandling.class"
width="3<applet code="ImageDemo.class" width="300" height="
</applet>
<hr>
</<param name="image" value="java.jpg">

처음 실행될 때, Applet은 "applet을 초기화 중. Applet을 시작 중."을 표시하고, 그런 다음 사각형 상자를 클릭하면 "mouse clicked"을 표시합니다.

이미지 표시

Applet은 GIF, JPEG, BMP 등 다른 형식의 이미지를 표시할 수 있습니다. Applet에서 이미지를 표시하려면 java.awt.Graphics 클래스의 drawImage() 메서드를 사용해야 합니다.

다음 예제는 이미지를 표시하는 모든 단계를 설명합니다:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class ImageDemo extends Applet
{
  private Image image;
  private AppletContext context;
  public void init()
  {
      context = this.getAppletContext();
      String imageURL = this.getParameter("image");
      if(imageURL == null)
      {
         imageURL = "java.jpg";
      }
      try
      {
         URL url = new URL(this.getDocumentBase(), imageURL);
         image = context.getImage(url);
      }catch(MalformedURLException e)
      {
         e.printStackTrace();
         // 브라우저 상태 바에 표시
         context.showStatus("이미지를 로드할 수 없습니다.");
      }
   }
   
   {
      public void paint(Graphics g)
      context.showStatus("Displaying image"); 2 8400,
      , null); 35g.drawString("www.javalicense.com", 10,
   } 
}

0);

<html>
<title>The ImageDemo applet</title>
<hr>
이 applet를 호출하면 다음과 같습니다:3<applet code="ImageDemo.class" width="200" height="
00">
</applet>
<hr>
</<param name="image" value="java.jpg">

html>

오디오 재생

  • Applet은 java.applet 패키지의 AudioClip 인터페이스를 사용하여 오디오를 재생할 수 있습니다. AudioClip 인터페이스는 세 가지 메서드를 정의합니다: public void play():

  • 오디오 부분을 처음부터 한 번 재생 public void loop():

  • 오디오 부분을 반복 재생 public void stop():

오디오 부분을 재생 중지

AudioClip 객체를 얻기 위해 Applet 클래스의 getAudioClip() 메서드를 호출해야 합니다. URL이 실제 오디오 파일이 맞는지와 관계없이 이 메서드는 즉시 결과를 반환합니다.

음성 파일을 재생할 때까지 파일이 다운로드됩니다:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class AudioDemo extends Applet
{
   private AudioClip clip;
   private AppletContext context;
   public void init()
   {
      context = this.getAppletContext();
      String audioURL = this.getParameter("audio");
      if(audioURL == null)
      {
         audioURL = "default.au";
      }
      try
      {
         URL url = new URL(this.getDocumentBase(), audioURL);
         clip = context.getAudioClip(url);
      }catch(MalformedURLException e)
      {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }
   public void start()
   {
      if(clip != null)
      {
         clip.loop();
      }
   }
   public void stop()
   {
      if(clip != null)
      {
         clip.stop();
      }
   }
}

아래와 같이 applet를 호출합니다:

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
<hr>

위의 예제를 테스트하기 위해 당신의 컴퓨터에 있는 test.wav 파일을 사용할 수 있습니다.