자바 애플릿 기본 사항
애플릿은 Java 프로그램입니다. 일반적으로 Java 지원 웹 브라우저 내에서 실행됩니다. 완전한 Java API 지원이 있기 때문에 애플릿은 모든 기능을 갖춘 Java 애플리케이션입니다.
다음은 독립형 Java 애플리케이션과 애플릿 프로그램 간의 중요한 차이점입니다.
Java의 애플릿 클래스는 java.applet.Applet 클래스
를 상속합니다. Applet 클래스는 main()을 정의하지 않으므로 Applet 프로그램은 main() 메서드
를 호출하지 않습니다. 애플릿은 HTML 페이지에 포함되도록 설계되었습니다.
사용자가 애플릿이 포함된 HTML 페이지를 탐색하면 애플릿의 코드가 사용자 컴퓨터에 다운로드됩니다.
애플릿을 보려면 JVM이 필요합니다. JVM은 웹 브라우저용 플러그인이거나 독립 실행형 런타임 환경일 수 있습니다.
사용자 컴퓨터의 JVM은 애플릿 클래스의 인스턴스를 생성하고 애플릿 수명 주기 동안 다양한 메소드를 호출합니다.
애플릿에는 웹 브라우저에 의해 시행되는 엄격한 보안 규칙이 있습니다. 애플릿 보안 메커니즘을 샌드박스 보안이라고 합니다.
애플릿에 필요한 다른 클래스는 JAR(Java Archive) 파일로 다운로드할 수 있습니다.
Applet 수명 주기
Applet 클래스의 네 가지 메소드는 작은 프로그램을 개발할 수 있는 프레임워크를 제공합니다.
init: 이 메소드의 목적은 사용자를 위한 것입니다. 초기화가 필요합니다. 이 메소드는 Applet 태그 내의 param 태그가 처리된 후에 호출됩니다.
start: 브라우저가 init 메소드를 호출한 후 이 메소드가 자동으로 호출됩니다. 이 메소드는 사용자가 다른 페이지에서 애플릿이 포함된 페이지로 돌아올 때마다 호출됩니다.
stop:이 메소드는 사용자가 애플릿이 포함된 페이지에서 제거할 때 자동으로 호출됩니다. 따라서 동일한 애플릿에서 메소드를 반복적으로 호출할 수 있습니다.
destroy: 이 메서드는 브라우저가 정상적으로 닫힐 때만 호출됩니다. 애플릿은 HTML 페이지에서만 유효하므로 사용자가 애플릿이 포함된 페이지를 떠난 후 리소스를 놓치지 않아야 합니다.
paint: 이 메서드는 start() 메서드 직후 또는 애플릿이 필요할 때 호출됩니다. 브라우저에서 그릴 때 호출됩니다. Paint() 메소드는 실제로 java.awt에서 상속됩니다.
"Hello, World" 애플릿:
다음은 간단한 애플릿 프로그램 HelloWorldApplet.java입니다:
import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } }
이 import 문은 다음 클래스를 애플릿 클래스로 가져옵니다.
java.applet.Applet. java.awt.Graphics.
이 import 문이 없으면 Java 컴파일러는 Applet 및 Graphics 클래스를 인식할 수 없습니다.
Applet 클래스
각 애플릿은 java.applet.Applet 클래스의 하위 클래스입니다. 기본 Applet 클래스는 브라우저 컨텍스트 정보와 서비스를 얻기 위해 파생 클래스의 호출을 위한 메서드를 제공합니다.
이 메서드는 다음을 수행합니다.
애플릿의 매개변수 가져오기
애플릿이 포함된 HTML 파일의 네트워크 위치 가져오기
애플릿 클래스 디렉터리의 네트워크 위치 가져오기
브라우저 상태 인쇄 정보
사진 가져오기
오디오 클립 가져오기
오디오 클립 재생
이 애플릿 크기 조정
또한 Applet 클래스는 인터페이스, 이 인터페이스는 뷰어나 브라우저에서 애플릿 정보를 얻고 애플릿 실행을 제어하는 데 사용됩니다.
뷰어는 다음과 같습니다.
애플릿 작성자, 버전 및 저작권에 대한 정보 요청
애플릿에서 인식되는 매개변수에 대한 설명 요청
애플릿 초기화
애플릿 삭제
애플릿 실행 시작
애플릿 실행 종료
Applet 클래스는 필요할 때 재정의할 수 있는 이러한 메소드의 기본 구현을 제공합니다.
"Hello, World" 애플릿은 표준에 따라 작성되었습니다. 재정의된 유일한 방법은 페인트 방법입니다.
Calling Applet
applet은 Java 프로그램입니다. 일반적으로 Java 지원 웹 브라우저 내에서 실행됩니다. 완전한 Java API 지원이 있기 때문에 애플릿은 모든 기능을 갖춘 Java 애플리케이션입니다.
<applet> 태그는 HTML 파일에 애플릿을 삽입하기 위한 기반입니다. 다음은 "Hello World" 애플릿을 호출하는 예입니다.
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> If your browser was Java-enabled, a "Hello, World" message would appear here. </applet> <hr> </html>
참고: HTML에서 애플릿을 호출하는 방법에 대해 자세히 알아보려면 HTML 애플릿 태그를 참조하세요.
<applet> 태그의 속성은 실행할 Applet 클래스를 지정합니다. 너비와 높이는 애플릿 실행 패널의 초기 크기를 지정하는 데 사용됩니다. 애플릿은 </applet> 태그를 사용하여 닫아야 합니다.
애플릿이 매개변수를 허용하는 경우 매개변수 값을 <applet> 및 </applet> 사이에 있는 태그에 추가해야 합니다. 브라우저는 애플릿 태그 사이에 있는 텍스트와 기타 태그를 무시합니다.
Java를 지원하지 않는 브라우저에서는 <applet> 및 </applet>을 실행할 수 없습니다. 따라서 애플릿과 관련되지 않은 태그 사이에 표시되는 모든 내용은 Java를 지원하지 않는 브라우저에서 볼 수 있습니다.
뷰어나 브라우저는 문서의 위치에서 컴파일된 Java 코드를 찾습니다. 문서의 경로를 지정하려면 <applet> 태그의 codebase 속성을 사용해야 합니다.
아래 표시된 대로:
<applet codebase="http://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">
애플릿이 기본 패키지가 아닌 패키지에 있는 경우 패키지는 코드 속성에 지정되어야 합니다. 예:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
애플릿 매개변수 가져오기
다음 예에서는 방법을 보여줍니다. 사용하려면 애플릿은 파일에 지정된 매개변수를 설정하여 응답합니다. 이 애플릿은 검은색 체커보드 패턴과 두 번째 색상을 표시합니다.
두 번째 색상과 각 열의 크기는 문서의 애플릿 매개변수를 통해 지정됩니다.
CheckerApplet은 init() 메소드에서 매개변수를 가져옵니다. 또한 Paint() 메서드에서 해당 매개변수를 가져올 수도 있습니다. 그러나 새로 고칠 때마다 값을 가져오는 것보다 애플릿 시작 부분에서 값을 가져와서 설정을 저장하는 것이 편리하고 효율적입니다.
애플릿 뷰어 또는 브라우저는 애플릿이 실행될 때마다 init() 메서드를 호출합니다. 애플릿을 로드한 후 즉시 뷰어는 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() 메서드와 전용 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) { // 保留默认值 } }
애플릿은 parSquareSize()를 호출하여 squareSize 매개 변수를 구문 분석합니다. . parseSquareSize()는 문자열을 정수로 구문 분석하는 라이브러리 메서드 Integer.parseInt()를 호출합니다. 매개 변수가 유효하지 않으면 Integer.parseInt()가 예외를 발생시킵니다.
따라서,parseSquareSize() 메소드도 예외를 포착하고 애플릿이 유효하지 않은 입력을 받아들이는 것을 허용하지 않습니다.
애플릿은 parseColor() 메서드를 호출하여 색상 매개변수를 색상 값으로 구문 분석합니다. parseColor() 메서드는 일련의 문자열 비교를 수행하여 매개 변수 값을 미리 정의된 색상 이름과 일치시킵니다. 애플릿이 작동하려면 이러한 메소드를 구현해야 합니다.
애플릿 매개변수 지정
다음 예제는 CheckerApplet 클래스가 포함된 HTML 파일입니다. HTML 파일은 태그를 사용하여 애플릿에 대한 두 개의 매개변수를 지정합니다.
<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> </html>
참고: 매개변수 이름은 대소문자를 구분하지 않습니다.
애플리케이션을 애플릿으로 변환
그래픽 Java 애플리케이션(AWT를 사용하는 애플리케이션 및 Java 프로그램 실행 프로그램을 사용하여 실행되는 프로그램 참조)을 웹 페이지에 포함된 애플릿으로 변환하는 것은 매우 간단합니다.
다음은 애플리케이션을 애플릿으로 변환하는 몇 가지 단계입니다.
애플릿 코드를 로드하는 태그가 있는 HTML 페이지를 작성합니다.
JApplet 클래스의 하위 클래스를 작성하고 클래스를 공개로 설정합니다. 그렇지 않으면 애플릿을 로드할 수 없습니다.
애플리케이션의 main() 메소드를 제거하세요. 애플리케이션이 브라우저에 표시되므로 애플리케이션에 대한 프레임 창을 구성하지 마십시오.
애플리케이션의 프레임 창 구성 메소드에 있는 초기화 코드를 애플릿의 init() 메소드로 이동하세요. 애플릿 객체를 명시적으로 구성할 필요는 없습니다. 브라우저는 init를 호출하여 객체를 인스턴스화합니다. () 방법.
애플릿의 경우 크기는 HTML 파일의 너비 및 높이 매개변수를 통해 설정되었습니다.
setDefaultCloseOperation() 메서드 호출을 제거하세요. 애플릿은 닫힐 수 없습니다. 브라우저가 종료되면 종료됩니다.
응용 프로그램이 setTitle() 메서드를 호출하는 경우 이 메서드에 대한 호출을 제거하세요. 애플릿에는 제목 표시줄이 있을 수 없습니다. (물론 html 제목 태그를 통해 웹페이지 자체의 이름을 지정할 수 있습니다)
setVisible(true)을 호출하지 마세요. 애플릿이 자동으로 표시됩니다.
이벤트 처리
애플릿 클래스는 컨테이너 클래스에서 많은 이벤트 처리 방법을 상속받습니다. Container 클래스는 특별한 유형의 이벤트를 처리하기 위해 processKeyEvent() 및 processMouseEvent()와 같은 여러 메서드를 정의합니다. processEvent라는 모든 이벤트를 캡처하는 메서드도 있습니다.
이벤트에 응답하려면 애플릿이 적절한 이벤트 처리 방법을 재정의해야 합니다.
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 apple "); } 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) { //Draw a Rectangle around the applet's display area. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); //display the string inside the rectangle. g.drawString(strBuffer.toString(), 10, 20); } 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! "); } }
다음과 같이 애플릿을 호출합니다.
<html> <title>Event Handling</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
처음 실행하면 애플릿에 "애플릿 초기화 중입니다. 애플릿 시작 중입니다."라는 메시지가 표시되고, 직사각형 상자를 클릭하자마자 "마우스를 클릭했습니다"라는 메시지가 표시됩니다.
사진 표시
애플릿은 GIF, JPEG, BMP 및 기타 형식의 사진을 표시할 수 있습니다. 애플릿에 이미지를 표시하려면 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(); // Display in browser status bar context.showStatus("Could not load image!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
다음과 같이 애플릿을 호출합니다.
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
오디오 재생
애플릿은 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(); } } }
다음과 같이 애플릿을 호출합니다.
<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를 사용하여 위 예를 테스트할 수 있습니다.