Java Language
アプレット
サーチ…
前書き
アプレットは公式リリース以来Javaの一部であり、何年もJavaとプログラミングを教えるために使用されてきました。
近年、アプレットや他のブラウザプラグインから、ブラウザをブロックしたり積極的にサポートしていないブラウザプラグインからの移行が積極的に進んでいます。
2016年に、オラクルは、プラグインを廃止する計画を発表しました。プラグインフリーWebへの移行
より新しい、より良いAPIが利用可能になりました
備考
アプレットは、通常はWebブラウザ内で実行されるJavaアプリケーションです。基本的な考え方は、サーバーと対話して情報を転送する必要なく、ユーザーと対話することです。このコンセプトは、インターネット通信が遅くて高価だった2000年頃に非常に成功しました。
アプレットはライフサイクルを制御する5つのメソッドを提供します。
メソッド名 | 説明 |
---|---|
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
からjavax.swing.JApplet
ます。
Java 1.2以前では、Swapp APIアプレットの導入はjava.applet.Applet
から拡張されました。
アプレットはmainメソッドを必要としません。エントリポイントは、ライフサイクルによって制御されます。それらを使用するには、HTML文書に埋め込む必要があります。これは、そのサイズが定義されているポイントでもあります。
<html>
<head></head>
<body>
<applet code="MyApplet.class" width="400" height="200"></applet>
</body>
</html>
GUIの作成
アプレットを使用してGUIを簡単に作成できます。彼らはContainer
ように動作し、 awt
またはswing
コンポーネントをとる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()
メソッドを使用します。 2番目のパラメータは、ブラウザに新しいウィンドウ_blank
を使用するように、またはアプレット_self
を表示するようにブラウザに指示し_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アプレットは異なるリソースを読み込むことができます。しかし、彼らはクライアントのWebブラウザで実行されているので、これらのリソースにアクセス可能であることを確認する必要があります。アプレットはローカルファイルシステムとしてクライアントリソースにアクセスできません。
アプレットが格納されている同じ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 */ }
}
}