자바를 배우다. 애플릿 소스 코드 파일을 생성하거나 가져옵니다. 애플릿 소스 코드 파일 생성

애플릿

이 책에 제시된 처음 두 가지 예는 Java 언어로 작성된 애플리케이션입니다. 독립 프로그램일반적인 기계 종속 프로그램과 유사합니다.
반면에, 이전 장에서 언급한 바와 같이, 주변의 과대광고는 자바 언어주로 웹 브라우저에서 애플릿을 실행하는 기능에 의해 주도되었습니다.

명령줄 모드에서 애플릿을 생성하고 실행하는 방법을 보여 드리겠습니다.

그런 다음 이 애플릿을 JDK에 포함된 애플릿 뷰어로 로드합니다.
마지막으로 이를 웹 브라우저에 표시하겠습니다.

CoreJavaBook/vlch2/WelcomeApplet 디렉토리로 변경한 후 다음을 입력합니다.
다음 명령.
javac WelcomeApplet. 자바
appletviewer WelcomeApplet.html

그림에. 그림 2.12는 애플릿 뷰어 창에 표시되는 내용을 보여줍니다.

쌀. 2.12. 애플릿 뷰어 창에서 WelcomeApplet 애플릿 보기

첫 번째 명령은 이미 우리에게 친숙합니다. Java 언어 컴파일러를 호출합니다. WelcomeApplet에 포함된 애플릿 소스를 컴파일합니다. java, WelcomeApplet 바이트코드 파일 생성. 수업.

그러나 이번에는 Java 언어 인터프리터를 실행하지 않습니다. 대신, appletviewer 프로그램을 호출합니다. 이 프로그램은 빠른 애플릿 테스트를 위해 특별히 설계되었으며 Java SDK에 포함되어 있습니다. 클래스 파일에서는 작동하지 않지만 HTML 파일에서는 작동합니다. WelcomeApplet.html 파일의 내용은 목록 2-3에 나와 있습니다.

목록 2.3
WelcomeApplet.java 파일


WelcomeApplet



이 애플릿은 책에 있는 것입니다.

코어 자바 케이 호스트만그리고
게리 코넬 Sun Microsystems Press에서 발행.






소스.





HTML을 알고 있다면 몇 가지 사실을 알게 될 것입니다. 표준 명령 HTML 언어그리고 애플릿 뷰어에게 WelcomeApplet, class 파일에 코드가 포함된 애플릿을 로드하라고 지시하는 애플릿 설명자가 있습니다. appletviewer 프로그램은 애플릿 태그를 제외한 모든 HTML 언어 태그를 무시합니다.

Java 2 언어를 지원하는 브라우저에서 HTML 파일을 볼 때 다른 HTML 언어 태그가 인식되지만 한 가지 문제가 있습니다.

Netscape 6 브라우저, Mozilla 및 Opera 브라우저 버전은 다음과 같이 Java 2 언어를 지원합니다. 윈도우 환경, Linux 플랫폼에서는 이 기능이 선택 사항이지만. 애플릿을 실험하려면 가장 많이 다운로드하면 됩니다. 최신 버전 Java를 지원하는지 확인하세요.

일부 브라우저 버전 인터넷 익스플로러 Java 언어를 전혀 지원하지 않습니다. 다른 버전은 아주 오래된 버전만 지원합니다. 가상 기기자바 마이크로소프트(자바 가상 머신). 운영 체제를 실행하는 Internet Explorer 브라우저를 사용하는 경우 윈도우 시스템, http://java로 이동합니다. 해. com/get Java를 선택하고 Java 플러그인을 다운로드하세요. Internet Explorer 브라우저에 Java 2 기능이 추가됩니다.

OS X를 실행하는 Macintosh 플랫폼에서는 Java 기능이 이미 Internet Explorer 브라우저에 통합되어 있습니다. 특히, 이 글을 쓰는 시점에서 이 브라우저는 J2SE 버전 1.3을 지원합니다. OS 9만 지원 오래된 버전 1.1.

Netscape 4 브라우저를 사용하는 경우 Netscape 4 브라우저에서 제공하는 Java 2 언어 지원을 활용할 수 있습니다. 자바 프로그램플러그인. 그러나 애플릿 핸들을 사용하여 로드된 애플릿으로 작업할 때 브라우저는 아직레거시 Java Virtual Machine을 사용합니다. 따라서 HTML 파일을 다시 작성하고 애플릿 설명자 대신 다소 불편한 내장 설명자를 사용해야 합니다. 이 접근 방식은 만족스럽다고 할 수 없습니다.

브라우저가 Java 2 플랫폼을 지원하는 경우 해당 브라우저에 애플릿을 로드해 보십시오. 이렇게 하려면 다음 작업을 수행하십시오.

브라우저를 실행하세요.

메뉴에서 파일 -> 파일 열기(또는 이에 상응하는 항목) 옵션을 선택합니다.
CoreJavaBook/vlch2/WelcomeApplet 디렉터리로 변경합니다.

대화 상자에 WelcomeApplet .html 및 WelcomeAppletPlugin.html 파일이 표시되어야 합니다.
설정과 일치하는 파일을 다운로드하세요. 브라우저는 주변 텍스트와 함께 애플릿을 로드합니다. 그림 1에 표시된 것과 비슷하게 보일 것입니다. 2.13.

이 응용 프로그램이 실제로 대화형이며 인터넷과 상호 작용한다는 것을 쉽게 알 수 있습니다. "Cay Horstmann" 버튼을 클릭하세요. 애플릿이 브라우저를 강제로 엽니다. 웹 페이지케이 호스트만. "게리 코넬" 버튼을 클릭하세요. 애플릿이 다음을 위한 창을 엽니다. 이메일에는 Gary Cornell의 이메일 주소가 이미 포함되어 있습니다.

그림 2.13. 브라우저를 사용하여 WelcomeApplet 애플릿 실행

이 버튼 중 어느 것도 애플릿 뷰어에서는 작동하지 않습니다. 이 프로그램은 메일을 보내거나 웹 페이지를 표시할 수 없으므로 단순히 사용자의 요청을 무시합니다. 애플릿 뷰어는 격리된 애플릿을 테스트하는 데 적합하지만 애플릿이 실제로 인터넷 및 기타 프로그램과 상호 작용하려면 애플릿을 브라우저에 로드해야 합니다.

애플릿은 다음에서 실행할 수 있습니다. 텍스트 에디터또는 통합 개발 환경. Emacs 편집기로 작업할 때 메뉴에서 JDE -> Run Applet 옵션을 선택합니다.

TextPad 편집기로 작업할 때 도구 -> Java 애플릿 실행 옵션을 선택하거나 키보드 단축키를 사용하십시오. . 현재 디렉토리에 저장된 모든 HTML 파일이 표시되는 대화 상자가 열립니다. 키를 누르면 , TextPad 편집기는 자동으로 최소한의 HTML 파일을 생성합니다.

Sun ONE Studio 환경에서는 애플릿 설명자와 함께 HTML 파일을 로드하기만 하면 됩니다. 이 환경에는 해당 웹 페이지에서 애플릿을 실행하는 작은 브라우저가 포함되어 있습니다. 또는 마우스 오른쪽 버튼으로 클릭파일에 마우스를 대다 소스 코드애플릿을 실행하고 탭의 "Executor" 속성 값을 다음으로 설정합니다.
"애플 처형".

Welcome 애플릿의 코드는 목록 2.4에 나와 있습니다. 안에 이 순간그냥 훑어볼 필요가 있습니다. 10장에서 애플릿 만들기로 돌아갑니다.

javax.swing.* 가져오기;
import java.awt.*;
java.awt.event.* 가져오기,
java.net.* 가져오기;

공개 클래스 WelcomeApplet은 JApplet을 확장합니다.
{
공개 무효 초기화()
{
컨테이너 contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());

JLabel 라벨 = new JLabel(getParameter("greeting") ,
SwingConstants.CENTER);
label.setFont(new Font("Serif", Font.BOLD, 18));
contentPane.add(label, BorderLayout.CENTER);

JPanel 패널 = new JPanel();

JButton cayButton = new JButton("케이 호스트만");
cayButton.addActionListener(makeURLActionListener
("http://www.horstmann.com");
Jbutton garyButton = new Jbutton("게리 코넬");
garyButton.addActionListener(makeURLActionListener
("mailto:garyOthecornells.com"));
panel.add(garyButton);
contentPane.add(panel, BorderLayout.South);
}
공개 ActionListener makeURLActionListener(fina1 문자열 u)
{
새로 반품하다
액션리스너()
{
공개 무효 actionPerformed(ActionEvent 이벤트)
{
노력하다(
getAppleContext().showDocument(u);
}
catch(예외 e) (e.printStackTrace(); )
{
이자형. printStackTrace();
}
}
} ;

이번 장에서 우리는 자바 언어로 작성된 프로그램을 컴파일하고 실행하는 메커니즘에 대해 배웠습니다. 이제 우리는 Java 언어에 대해 배우기 시작할 3장으로 넘어갈 준비가 되었습니다.

그래픽 인터페이스, 그림 및 이미지를 애플릿으로 구현할 수 있습니다. 애플릿은 인터넷 서버에서 호스팅되고, 네트워크를 통해 클라이언트로 전송되고, 자동으로 설치되고, HTML 문서의 일부로 브라우저에서 실행되는 Java 언어 클래스로 구현되는 그래픽 애플리케이션 유형입니다. 애플릿을 사용하면 시간이 지남에 따라 내용이 변경되는 문서에 필드를 삽입하고 "크립 라인", 메뉴, 애니메이션을 구성하고 클라이언트 페이지에서 계산을 수행할 수 있습니다. 애플릿은 HTML 문서가 표시되거나 appletviewer 프로그램에 의해 표시될 때 브라우저에 의해 실행됩니다. 애플릿은 파일에 쓰거나 파일에서 정보를 읽을 수 없습니다. 클라이언트는 자신의 컴퓨터에서 "트로이 목마"를 실행하는 것을 원하지 않기 때문에 이러한 제한 사항은 클라이언트 컴퓨터의 보안 문제와 관련이 있습니다. 서버에서 다운로드한 애플릿(신뢰할 수 있는 애플릿)에 대해 클라이언트가 설정한 여러 보안 수준이 있습니다. 수업 애플릿애플릿과 해당 환경 간의 인터페이스를 제공합니다. 애플릿은 클래스의 자손입니다. 애플릿패키지에서 자바. 애플릿 AWT 패키지 또는 그 하위 클래스에서 J애플릿스윙 패키지에서.

여러 가지 클래스 메소드가 있습니다 애플릿, 웹 페이지에서 애플릿 생성 및 실행을 제어합니다. 애플릿에는 메소드가 필요하지 않습니다 기본(), 시작 코드가 메소드에 배치됩니다. 초기화(). 오버로드된 메서드 초기화()초기화를 수행하기 위해 애플릿이 로드될 때 자동으로 호출됩니다. 방법 시작()작업을 시작하기 위해 애플릿이 브라우저에 표시될 때마다 호출됩니다. 방법 멈추다()애플릿이 작업을 완료할 수 있도록 애플릿이 웹 브라우저의 보기를 떠날 때마다 호출됩니다. 방법 에스트로이()최종 리소스 할당 해제를 수행하기 위해 애플릿이 페이지에서 언로드되기 시작할 때 호출됩니다. 이러한 메소드 외에도 애플릿이 실행될 때 메소드는 페인트() 수업 요소. 방법 페인트() 명시적으로 호출되지 않고 다른 메서드(예: 메서드)에서만 호출됩니다. 다시 칠하다() 다시 그리기가 필요한 경우.

다음은 메소드를 사용하는 애플릿의 예입니다. 초기화() , 페인트() , 방법 색상 설정() 캐릭터 색상 설정 및 방법 drawString() 선 그리기.

/* 예 #1: 날짜 출력:날짜애플릿.자바 */

패키지 11장;

수입 java.awt.color;

수입 java.awt.그래픽;

수입 java.util.Calendar;

수입 java.util.Formatter;

수입 javax.swing.JApplet;

공공의 수업날짜애플릿 연장하다자플릿(

사적인포맷터 dateFmt = 새로운포맷터();

사적인포맷터 시간Fmt = 새로운포맷터();

공공의 무효의초기화() (

setSize(180, 100);

캘린더 c = Calendar.getInstance();

문자열 시대 = "";

만약에(c.get(Calendar.ERA) == 1)

dateFmt.format("%tA %td.%tm.%tY 연도 "

시대, c, c, c, c);

timeFmt.format("%t", c);

공공의 무효의페인트(그래픽 g) (

g.setColor(Color.RED);

g.drawString("애플릿이 " + timeFmt에 시작되었습니다,

10, getHeight()/2);

g.세트색상( 새로운색상(0,87,127));

g.drawString(dateFmt.toString(), 13,

getHeight() - 10);

쌀. 11.2.문자열 및 날짜 출력

날짜 요소는 클래스를 사용하여 액세스됩니다. 자바. 유틸리티. 달력. 표시되는 문자의 색상은 클래스 필드를 사용하여 설정됩니다. 색상.

컴파일 후 애플릿 바이트코드를 포함하는 클래스 이름이 태그에 배치됩니다. < 애플릿옵션 > 애플릿> HTML 문서. 예를 들어:

날짜애플릿.수업

너비=250 높이=250>

HTML 문서의 실행자는 링크에 해당하는 애플릿을 실행하는 브라우저입니다.

예제에서 사용된 방법뿐만 아니라 애플릿에 사용된 대부분의 그래픽 방법 색상 설정() , drawString() , – 추상 기본 클래스 메서드 자바. . 제도법. 수업 제도법드로잉을 위한 그래픽 컨텍스트를 나타내며, 이는 물리적 장치에 매핑됩니다. 애플릿 메소드는 클래스 객체를 얻습니다. 제도법(그래픽 컨텍스트)를 매개변수로 사용하고 현재 색상, 글꼴, 커서 위치를 함께 표시합니다. 컨텍스트 설정은 일반적으로 메소드에 의해 수행됩니다. 업데이트() 또는 페인트() .

다음은 클래스 메소드 중 일부입니다. 제도법:

drawLine(정수 x1, 정수 y1, 정수 x2, 정수 y2)- 선을 그어준다

drawRect (int x, int y, int 너비, int 높이)그리고 fillRect(int x, int y, int 너비, int 높이)– 직사각형과 채워진 직사각형을 그립니다.

draw3DRect(int x, int y, int 너비, int 높이, 부울 올림)- 3차원 직사각형을 그립니다.

drawRoundRect(int x, int y, int 너비, int 높이,int arcWidth, int arcHeight)- 둥근 직사각형을 그립니다.

drawOval(int x, int y, int 너비, int 높이)- 타원을 그립니다.

drawPolygon(int xPoints, int yPoints, int nPoints)– 좌표 배열로 지정된 다각형(polygon)을 그립니다. 엑스그리고 와이;

drawPolygon (다각형) – 객체가 제공하는 다각형을 그립니다. 다각형;

drawPolyline(정수x포인트, 정수y포인트, 정수n포인트) – 배열로 지정된 일련의 연결된 선을 그립니다. 엑스그리고 와이;

drawArc(int x, int y, int 너비, int 높이, int startAngle, int arcAngle)- 원호를 그립니다.

drawImage(이미지 img, int x, int y, Color bgcolor, ImageObserver 관찰자)- 이미지를 삽입합니다.

drawString(문자열 str, int x, int y)- 선을 그립니다.

setColor(색상 c), getColor()– 현재 색상을 설정하고 반환합니다.

getFont()- 현재 글꼴을 반환합니다.

setFont(글꼴 글꼴)- 새로운 글꼴을 설치합니다.

수업 방법 제도법클래스와 같이 그래픽을 표시하는 데 사용됩니다. 애플릿, 그리고 수업의 경우 J애플릿.

아래 예제 2-4에서는 클래스 메서드의 사용을 보여줍니다. 제도법철수를 위해 그래픽 이미지애플릿 창에.

/* 예 #2: 3D 직사각형:rRect. 자바 */

패키지 11장;

수입 java.awt.color;

수입 java.awt.그래픽;

수입 javax.swing.JApplet;

공공의 수업 ThrRect 연장하다자플릿(

공공의 무효의 draw3D(그래픽 g, 정수엑스, 정수와이, 정수너비, 정수키, 부울제기됨, 부울채워짐) (

g.draw3DRect(x, y, 너비 - 1, 높이 - 1,

g.draw3DRect(x + 1, y + 1, 너비 - 3,

높이 - 3, isRaised);

g.draw3DRect(x + 2, y + 2, 너비 - 5,

높이 - 5, isRaised);

만약에(채워짐)

g.fillRect(x + 3, y + 3, 너비 - 6,

공공의 무효의페인트(그래픽 g) (

g.setColor(Color.GRAY);

draw3D(g, 10, 5, 80, 40, 진실, 거짓);

draw3D(지, 130, 5, 80, 40, 거짓, 거짓);

draw3D(g, 10, 55, 80, 40, 진실, 진실);

draw3D(지, 130, 55, 80, 40, 거짓, 진실);

. 11.3. 3D 직사각형

비닐 봉투 java.awt이미지를 표시하는 데 사용되는 수많은 클래스가 포함되어 있습니다. 색상, 폰트, 영상, 모양, 캔버스등. 또한 이 패키지의 기능은 패키지를 확장합니다. java.awt.geom,java.awt.color,java.awt.이미지다른 사람.

/* # 3: 건설 피규어: 모양을 만듭니다.자바 */

패키지 11장;

수입 java.awt.color;

수입 java.awt.그래픽;

수입 java.awt.Graphics2D;

수입 java.awt.Shape;

수입 java.awt.geom.*;

수입 javax.swing.JApplet;

공공의 수업모양 만들기 연장하다자플릿(

공공의 무효의초기화() (

setSize(200, 205);

공공의 무효의페인트(그래픽 g) (

Graphics2D g2 = (Graphics2D) g;

g2.rotate(Math.PI / 6);

drawChessBoard(g);

//회전하다

g2.rotate(-Math.PI / 6);

g.setXORMode( 새로운색상(200, 255, 250));

모양 e= 새로운 Ellipse2D.Float(70, 75, 70, 50);

//타원 그리기

//체커보드 그리기

공공의 무효의 drawChessBoard(그래픽 g) (

정수크기=16;

~을 위한 (정수 y=0; 와이< 8; y++) {

~을 위한 (정수 x = 0; 엑스< 8; x++) {

만약에((x + y) % 2 == 0)

g.setColor(Color.BLUE);

g.setColor(Color.WHITE);

g.fillRect(75 + x * 크기, y * 크기 - 25, 크기, 크기);

g.setColor(Color.BLACK);

g.drawString( 새로운성격(

() ('8' - y)).toString(), 66, y * 크기 - 13);

g.drawString( 새로운성격(

() (y + 'a')).toString(),

79 + y * 크기, 8 * 크기 - 14);

쌀. 11.4.다양한 피규어 구성

// 예 # 4: 출력gif-이미지:이미지 그리기. 자바

패키지 11장;

수입 java.awt.그래픽;

수입 java.awt.이미지;

수입 javax.swing.JApplet;

공공의 수업이미지 그리기 연장하다자플릿(

사적인이미지이미지;

공공의 무효의초기화() (

img = getImage(getCodeBase(), "joli.gif");

공공의 무효의페인트(그래픽 g)(

g.drawImage(img, 0, 0, 이것);

태그 속성을 사용하는 경우 HTML 문서의 매개변수를 애플릿 코드로 전달할 수 있습니다. HTML 문서를 다음과 같이 만들어 보겠습니다.

애플릿 옵션

너비=250 높이=300>

애플릿>

그런 다음 매개변수를 읽고 처리하려면 b번호그리고 상태애플릿은 다음과 같아야 합니다:

/* 예 # 5: 매개변수를 애플릿에 전달: ReadParam.java */

패키지 11장;

수입 java.awt.color;

수입 java.awt.그래픽;

수입 java.applet.applet;

공공의 수업 ReadParam 연장하다애플릿(

사적인 정수 b번호;

사적인 부울상태;

공공의 무효의시작() ( // 독서 매개변수

param = getParameter("상태");

만약에(파라미터 != 없는)

상태 = 새로운불리언(param);

param = getParameter("bNumber");

만약에(파라미터 != 없는)

bNum = Integer.parseInt(param);

} 잡다(NumberFormatException e) (

상태 = 거짓;

공공의 무효의페인트(그래픽 g) (

더블 d=0;

만약에(상태) d = Math.pow(bNum, 2);

또 다른 g.drawString("오류 매개변수", 0, 11);

g.drawString("명령문: " + 상태, 0, 28);

g.drawString("값 b: " + bNum, 0, 45);

g.drawString("b 거듭제곱 2: " + d, 0, 62);

쌀. 11.5.매개변수를 애플릿에 전달하기

매개변수를 사용할 수 없는 경우 메소드는 getParameter() 보고 없는.

애플릿에서 컨트롤 구성 요소를 사용할 때는 패키지의 클래스를 사용하는 것이 일반적입니다. javax. 그네, 화면의 구성 요소는 Java를 통해 생성되며 플랫폼과 하드웨어에 최소한으로 의존합니다. 이러한 구성 요소 클래스는 j버튼, JCheckBox, JDialog, J메뉴, JComboBox, J메뉴, JTextField, JTextArea다른 사람. 구성 요소는 일반적으로 컨테이너(클래스 보유자) 이는 모든 그래픽 응용 프로그램의 암시적 개체입니다. 컨테이너에 대한 명시적인 참조는 다음 메서드를 사용하여 얻을 수 있습니다. getContentPane() .

// 예제 #6: 구성 요소가 포함된 애플릿: MyJApplet.java

패키지 11장;

수입 java.awt.컨테이너;

수입 javax.swing.JApplet;

수입 javax.swing.JLabel;

공공의 수업 MyJApplet 연장하다자플릿(

사적인 JLabel lbl = 새로운 JLabel("스윙 애플릿!");

공공의 무효의초기화() (

컨테이너 c = getContentPane();

쌀. 11.6.레이블이 있는 애플릿

이 프로그램은 텍스트 라벨을 배치합니다 JLabel애플릿의 양식에 클래스 생성자 JLabel물건을 받아들인다 해당 값을 사용하여 레이블을 만듭니다. 애플릿을 로드할 때 자동으로 호출되는 메소드 초기화()일반적으로 필드를 초기화하고 양식에 구성 요소를 배치하는 일을 담당합니다. 이를 위해 메소드가 호출됩니다. 추가하다()수업 컨테이너, 구성 요소를 컨테이너에 넣습니다. 방법 추가하다() AWT 라이브러리에서 수행할 수 있는 것처럼 즉시 호출되지 않습니다. 비닐 봉투 그네양식의 "콘텐츠 창"에 모든 구성 요소를 추가해야 합니다. 콘텐츠 창, 따라서 먼저 메서드를 호출해야 합니다. getContentPane()수업 J애플릿프로세스의 일부로 객체에 대한 참조를 생성하려면 추가하다().

// 예제 #7: 애플릿 수명주기:데모LC. 자바

패키지 11장;

수입 java.awt.color;

수입 java.awt.그래픽;

수입 javax.swing.JApplet;

공공의 수업데모LC 연장하다자플릿(

사적인 정수별X=

{ 112, 87, 6, 71, 47, 112, 176, 151, 215, 136 };

사적인 정수별Y=

{ 0, 76, 76, 124, 200, 152, 200, 124, 76, 76 };

사적인 정수나;

사적인색상 c;

공공의 무효의초기화() (

c= 새로운색상(0, 0, 255);

setBackground(Color.LIGHT_GRAY);

공공의 무효의시작() (

정수 j = i * 25;

만약에(제이< 255)

c= 새로운색상(j, j, 255 - j);

또 다른나는 = 1;

공공의 무효의페인트(그래픽 g) (

g.fillPolygon(starX, starY, starX.length);

g.setColor(Color.BLACK);

g.drawPolygon(starX, starY, starX.length);

공공의 무효의멈추다() (

쌀. 11.7.다각형 색상 및 애플릿 수명주기

글꼴 작업을 할 때 컴퓨터에서 어떤 글꼴을 사용할 수 있는지 확인하고 사용할 수 있습니다. 이 정보를 얻으려면 다음 방법을 사용하십시오. getAvailableFontFamilyNames()수업 그래픽환경. 이 메서드는 이 컴퓨터에 등록된 사용 가능한 모든 글꼴 계열의 이름이 포함된 문자열 배열을 반환합니다.

// 예제 #8: OS 글꼴 액세스: FonTS.자바

패키지 11장;

수입 java.awt.Font;

수입 java.awt.그래픽;

수입 java.awt.GraphicsEnvironment;

수입 javax.swing.JApplet;

공공의 수업글꼴 연장하다자플릿(

사적인문자열 글꼴;

공공의 무효의초기화() (

그래픽환경=

GraphicsEnvironment.getLocalGraphicsEnvironment();

글꼴 = ge.getAvailableFontFamilyNames();

setSize(700, 400);

공공의 무효의페인트(그래픽 g) (

정수 xSize = getWidth() / 170;

~을 위한 (정수나는 = 0; 나< fonts.length; i++) {

g.setFont( 새로운폰트(

글꼴[i], Font.PLAIN, 12)); // 이름, 스타일, 크기

g.drawString(글꼴[i],

170 * (i % xSize), 13 * (i / xSize + 1));

쌀. 11.8.글꼴 나열

안녕하세요, 독자 여러분.
오늘은 JAVA 애플릿에 서명하는 방법을 배우겠습니다. 우선, JAVA 애플릿은 서명될 때까지 기능이 제한되어 있다고 말씀드리겠습니다. 예를 들어 서명되지 않은 애플릿은 다음을 수행할 수 없습니다.

  • 클라이언트의 로컬 파일 시스템과 상호 작용합니다.
  • 다른 서버와 네트워크 연결을 설정합니다.
  • 클라이언트의 클립보드와 상호작용합니다.
  • 다른 사람들.
문제를 해결하기 위한 몇 가지 옵션이 있습니다.
1. 각 클라이언트의 로컬 컴퓨터에서 실행을 허용합니다. 이렇게 하려면 JRE가 설치된 폴더(기본적으로 C:\Program Files\Java\jre6\lib\security)에 있는 java.policy 파일을 편집하면 됩니다. 그리고 필요한 권한을 추가하세요. 예를 들어, 가능한 모든 것을 허용하려면 다음 줄을 삽입해야 합니다.

부여( ... 권한 java.security.AllPermission; )

그리고 hackmeplease.com 사이트에 대해 클립보드 작업만 허용해야 하는 경우:

codeBase "http://hackmeplease.com/*" 부여(허가 java.awt.AWTPermission "accessClipboard"; );

이 방법은 사이트의 최종 사용자 수가 제한되어 있고 각 컴퓨터에서 이 파일을 편집할 필요가 없는 경우에만 편리합니다. 게다가 이 솔루션의 보안성은 그다지 높지 않습니다.

2. Java 애플릿에 서명합니다. 그러면 우리는 무엇을 입력으로 갖게 될까요?
- JDK 및 JRE를 설치했습니다.
- 애플릿의 jar 파일(쓰기의 일부 기능이 있습니다.) 소스 코드, 아래 참조);
- 클립보드로 작업하고 싶습니다. 이렇게 하려면 올바르게 작동하는 라인이 필요합니다.

툴킷 툴킷 = Toolkit.getDefaultToolkit();
클립보드 클립보드 = toolkit.getSystemClipboard();

이 행이 호출되면 서명되지 않은 애플릿에서 다음 예외가 발생합니다.
java.security.AccessControlException: 액세스 거부됨(java.awt.AWTPermission accessClipboard)

그럼 시작해 보겠습니다.
0. JDK의 BIN 폴더(예: C:\Program Files\Java\jdk1.6.0_23\bin)로 이동합니다.
I. 인증서의 로컬 저장소(키 저장소)를 만듭니다.
keytool -genkey -keystore .keystore -alias "Terrasoft" -validity 99999

99999 - 인증서 유효 기간(월)
.keystore - 생성할 키 저장소의 파일 이름입니다.

명령이 성공적으로 실행되면 시스템은 저장소의 비밀번호와 인증서에 대한 일부 정보(성명, 회사 이름, 도시, 국가 및 혈액형)를 묻습니다.

결과적으로 .keystore 파일이 생성됩니다. 이것은 다양한 애플릿에 서명할 저장소입니다.
II. JAR 파일을 JDK의 BIN 폴더에 복사합니다. 다음 명령으로 서명합니다.
jarsigner.exe -keystore .keystore ClipboardLibrary.jar "Terrasoft"
여기서 Terrasoft는 인증서의 별칭 이름입니다.
.keystore - 저장 파일 이름;
ClipboardLibrary.jar은 JAR 파일의 이름입니다.
시스템에서 비밀번호를 묻는 메시지가 표시됩니다. I단계에서 입력한 비밀번호를 입력합니다.

준비된 것 같은데... 네, 지금은 순진해요...
따라서 우리 애플릿이 포함된 페이지를 시작하면 사용자는 다음과 같은 친숙한 메시지를 받게 됩니다.

이는 "사용자 여러분, '예'를 누르고 시스템에 작별 인사를 하세요. 우리가 원하는 대로 할 수 있기 때문입니다."라는 의미입니다.
그런데 NOT VERIFIED(확인되지 ​​않음)에 주의하세요. 신뢰할 수 있는 인증서가 없다는 의미입니다. 신뢰를 얻으려면 인터넷의 특별 서비스에 연락하고 돈을 지불해야합니다.

그러나 우리 양에게로 돌아갑니다. 클립보드에 액세스할 때 다음 형식의 예외가 다시 발생합니다.
java.security.AccessControlException: 액세스 거부됨(java.awt.AWTPermission accessClipboard)

불쌍해. 글쎄, 지금은 효과가 없었습니다. 나중에는 효과가 있을 것입니다. 안녕히 가세요.

농담. 사실, 제가 본 모든 애플릿 서명 튜토리얼이 여기에서 멈췄습니다. 마찬가지로 서명된 애플릿은 아무것도 두려워하지 않습니다. 그들 모두가 부끄러워하게 해주세요.
간단히 말해서, 클립보드 액세스가 작동하려면 다음과 같은 페인트 작업을 수행해야 합니다.

III. 소스코드를 변경하세요.
뷰를 호출하는 대신:
클립보드 = toolkit.getSystemClipboard()
다음과 같은 호출을 작성해야 합니다.
clipsboard = (클립보드) AccessController.doPrivileged(new PrivilegedAction() ( public Object run() ( return toolkit.getSystemClipboard(); ) ));
그런 다음 JAR을 다시 컴파일하고 2단계를 반복해야 합니다(끝부터 제 메시지를 읽으신 분들 - 존경합니다).

그게 다야. 작동해야합니다. 나는 이것이 누군가에게 도움이 되기를 바라며, 그 사람은 나만큼 이런 말도 안되는 일에 그의 인생을 많이 소비하지 않을 것입니다. 내가 악당들이 인생에서 당신을 부끄러워하지 않도록 문제를 기다리십시오 (C). 방송에서 다시 만날 때까지.

기사에서는 수정 방법을 알려 드리겠습니다. 자바 오류애플릿이 로드되지 않았습니다. 10년이 넘도록 있어왔습니다. 많은 수의웹 기술. 예를 들어 멀티미디어 및 간단한 게임플래시를 사용하였고 보안 요구사항이 높은 작업에는 ActiveX와 Java를 사용하였습니다. 그러나 개발된 Microsoft ActiveX가 오랫동안 망각에 빠졌다면 Java EE는 오늘날에도 계속해서 관련성이 있습니다. 가치 있고 단순한 것이 없다는 것이 아닙니다. 최종 사용자유사품(몇 년 전에 등장함)의 문제는 일부 조직이 이러한 기술을 기반으로 한 애플리케이션 개발에 수만 달러, 수십만 달러를 투자했지만 이를 거부할 수 없다는 것입니다. 그렇기 때문에 사용자가 특정 서비스에 접속하려고 하면 다음과 같은 메시지가 표시될 수 있습니다. 자바 애플릿로드되지 않았습니다. 그를 만난 경우 어떻게 해야할지 아래에서 고려해 보겠습니다.

일부 VTB24 클라이언트는 온라인으로 VTB24에 로그인하려고 할 때 오류가 발생합니다. 이는 Java 애플릿이 시스템에 설치되어 있지 않거나 비활성화되어 있다는 사실과 관련이 있습니다.

이 Java 다운로드 오류를 수정하고 문제 없이 계정 제어판에 로그인하려면 몇 가지 간단한 단계를 따라야 합니다.

Java 애플릿이 로드되지 않은 경우 수행할 작업

우선 설치를 하셔야 합니다 소프트웨어. 다운로드되었지만 활성화되지 않은 경우에는 어쨌든 다운로드하십시오. 가장 많이 설치되도록 하십시오. 신선한 버전. 이를 위해:

  1. 공식 웹사이트의 Java 다운로드 페이지를 방문하세요.
  2. 리소스가 결정해야 합니다. 운영 체제다운로드 링크 제공 원하는 버전에 의해;
  3. 빨간색 "Java 무료 다운로드" 버튼을 클릭하세요.
  4. 그 후 다운로드 프로세스가 즉시 시작됩니다.
  5. 다운로드한 파일을 실행하고 지침을 따르세요.
  6. 브라우저를 다시 로드하세요.

주목해야 할 점은 구글 크롬(버전 42부터) Java 애플릿은 회사에서 해당 기술이 더 이상 사용되지 않는다고 간주하므로 공식적으로 지원되지 않습니다. 따라서 Java를 사용하려면 FireFox와 같은 다른 웹 브라우저를 시작하십시오.

Java 관련 문제를 방지하려면 다음 단계를 따르십시오.

  1. Firefox를 실행합니다(빠진 경우 공식 사이트에서 다운로드하여 설치하세요).
  2. 프로그램 메뉴를 열고 "추가 기능"을 클릭하십시오.
  3. 해당 페이지에서 "플러그인" 탭으로 이동하세요.
  4. "Java 플랫폼 모듈" 항목 반대편에 스위치가 있습니다. 스위치를 "항상 활성화" 위치로 이동합니다(이미 활성화된 경우 아무 작업도 수행하지 않음).
  5. 브라우저를 다시 시작할 수 있습니다.

이 단계를 완료한 후 관심 있는 사이트로 이동하십시오. 모든 기능(물론 다른 타사 기술을 사용하지 않는 경우)이 작동하고 Java 애플릿을 로드하는 데 오류가 발생하지 않습니다.

자바 없이도 가능한가요?

Java EE를 기반으로 생성된 웹 애플리케이션(VTB24 뱅킹 클라이언트의 경우처럼)을 사용할 필요가 없다면 해당 애플릿이 필요하지 않습니다. 점차적으로 대기업조차도 이제 더 관련성이 높은 솔루션으로 전환하고 있습니다. 웹 기술, 최종 사용자가 서비스 기능과 훨씬 쉽게 상호 작용할 수 있도록 합니다.

접촉 중