수색…


소개

애플릿은 공식 릴리스 이후 Java의 일부로 사용되어 왔으며 수년 동안 Java 및 프로그래밍을 가르치기 위해 사용되었습니다.

최근 몇 년 동안 애플릿 및 다른 브라우저 플러그인에서 멀어지고 일부 브라우저는 브라우저를 차단하거나 적극적으로 지원하지 않는 등 적극적으로 추진해 왔습니다.

2016 년에 오라클은 플러그인 비 사용 계획을 발표했습니다 . Plugin-Free Web으로 이동했습니다.

더 새롭고 우수한 API를 사용할 수 있습니다.

비고

애플릿은 일반적으로 웹 브라우저에서 실행되는 Java 응용 프로그램입니다. 기본적인 아이디어는 서버와 상호 작용하고 정보를 전송할 필요없이 사용자와 상호 작용하는 것입니다. 이 개념은 인터넷 통신이 느리고 비싼 2000 년경에 매우 성공적이었습니다.

애플릿은 수명주기를 제어하는 ​​다섯 가지 방법을 제공합니다.

메소드 이름 기술
init() 애플릿이로드 될 때 한 번 호출됩니다.
destroy() 애플릿이 메모리에서 제거되면 한 번 호출됩니다.
start() 애플릿이 표시 될 때마다 호출됩니다.
stop() 애플릿이 다른 윈도우에 의해 겹쳐 질 때마다 호출됩니다.
paint() 필요한 경우 또는 repaint() 를 호출하여 수동으로 트리거 될 때 호출됩니다.

최소 애플릿

아주 간단한 애플릿은 사각형을 그려 화면에 문자열을 출력합니다.

public class MyApplet extends JApplet{ 

    private String str = "StackOverflow";

    @Override
    public void init() {
        setBackground(Color.gray);
    }
    @Override
    public void destroy() {}
    @Override
    public void start() {}
    @Override
    public void stop() {}
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(1,1,300,150);
        g.setColor(Color.red);
        g.setFont(new Font("TimesRoman", Font.PLAIN, 48));
        g.drawString(str, 10, 80);
    }
}

애플릿의 메인 클래스는 javax.swing.JApplet 에서 확장됩니다.

Java SE 1.2

Java 1.2 이전에는 스윙 API 애플릿의 도입이 java.applet.Applet 에서 확장되었습니다.

애플릿에는 main 메소드가 필요 없습니다. 진입 점은 수명주기에 의해 제어됩니다. 이들을 사용하려면 HTML 문서에 임베드해야합니다. 이것은 또한 크기가 정의되는 지점입니다.

<html>
  <head></head>
  <body>
     <applet code="MyApplet.class" width="400" height="200"></applet>
  </body>
</html>

GUI 만들기

애플릿을 사용하여 GUI를 쉽게 작성할 수 있습니다. 그것들은 Container 처럼 동작하며 awtswing 컴포넌트를 취하는 add() 메소드를 가지고있다.

public class MyGUIApplet extends JApplet{

    private JPanel panel;
    private JButton button;
    private JComboBox<String> cmbBox;
    private JTextField textField;

    @Override
    public void init(){
        panel = new JPanel();        
        button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(((String)cmbBox.getSelectedItem()).equals("greet")) {
                    JOptionPane.showMessageDialog(null,"Hello " + textField.getText());
                } else {
                    JOptionPane.showMessageDialog(null,textField.getText() + " stinks!");
                }
            }
        });
        cmbBox = new JComboBox<>(new String[]{"greet", "offend"});
        textField = new JTextField("John Doe");
        panel.add(cmbBox);
        panel.add(textField);
        panel.add(button);
        add(panel);
    }
}

애플릿 내에서 열린 링크

getAppletContext() 메소드를 사용하여 링크를 열도록 브라우저에 요청할 수있는 AppletContext 객체를 가져올 수 있습니다. 이를 위해 showDocument() 메서드를 사용합니다. 두 번째 매개 변수는 브라우저에 새 창 _blank 또는 애플릿 _self 를 표시하는 창을 사용하도록 지시합니다.

public class MyLinkApplet extends JApplet{
    @Override
    public void init(){
        JButton button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                AppletContext a = getAppletContext();                 
                try {
                    URL url = new URL("http://stackoverflow.com/");
                    a.showDocument(url,"_blank");
                } catch (Exception e) { /* omitted for brevity */ }   
            }
        });
        add(button);
    }
}

이미지, 오디오 및 기타 리소스로드

Java 애플릿은 다른 자원을로드 할 수 있습니다. 그러나 클라이언트의 웹 브라우저에서 실행 중이기 때문에 이러한 리소스에 액세스 할 수 있어야합니다. 애플릿은 로컬 파일 시스템으로서 클라이언트 자원에 액세스 할 수 없습니다.

애플릿이 저장된 동일한 URL에서 자원을로드하려는 경우 getCodeBase() 메소드를 사용하여 기본 URL을 검색 할 수 있습니다. 애플릿은 리소스를로드하기 위해 getImage()getAudioClip() 메서드를 사용하여 이미지 또는 오디오 파일을로드합니다.

이미지로드 및 표시

public class MyImgApplet extends JApplet{

    private Image img;

    @Override
    public void init(){
        try {
            img = getImage(new URL("http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
        public void paint(Graphics g) {
            g.drawImage(img, 0, 0, this);
        } 
}

오디오 파일로드 및 재생

public class MyAudioApplet extends JApplet{

    private AudioClip audioClip;

    @Override
    public void init(){
        try {
            audioClip = getAudioClip(new URL("URL/TO/AN/AUDIO/FILE.WAV"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
    public void start() {
        audioClip.play();
    } 
    @Override
    public void stop(){
        audioClip.stop();
    }
}

텍스트 파일로드 및 표시

public class MyTextApplet extends JApplet{
    @Override
    public void init(){
        JTextArea textArea = new JTextArea();
        JScrollPane sp = new JScrollPane(textArea);
        add(sp);
        // load text
        try {
            URL url = new URL("http://www.textfiles.com/fun/quotes.txt");
            InputStream in = url.openStream();
            BufferedReader bf = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while((line = bf.readLine()) != null) {
                textArea.append(line + "\n");
            }
        } catch(Exception e) { /* omitted for brevity */ }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow