Head First Java 第2版
頭とからだで覚えるJavaの基本
(オライリージャパン)
Kathy Sierra (著) Bert Bates (著) 島田 秋雄(監修)
神戸 博之 (監修) 高坂 一城 (監修) 夏目 大 (翻訳)
開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Java (プログラミング言語)
- javac (コンパイラ)
- java (application launcher)
Head First Java 第2版 ―頭とからだで覚えるJavaの基本(Kathy Sierra (著)、Bert Bates (著)、島田 秋雄 (監修)、神戸 博之 (監修)、高坂 一城 (監修)、夏目 大 (翻訳)、オライリージャパン)の17章(プログラムの提供)、Java Web Start, .jnlpファイルを考えてみる。
おまけ
Java - GUIの基礎(内部クラス, アニメーション, 再描画, 塗りつぶし(repaint, fillRect, fillOval))で作ったのを、JWSを利用するプログラムを提供する手順で提供してみる。
コード(BBEdit, Emacs)
ch17/source/com/mkamimura/kamimura_blog/java/head_first_java/TestAnimation2.java
package com.mkamimura.kamimura_blog.java.head_first_java;
import javax.swing.*;
import java.awt.*;
public class TestAnimation2 {
JFrame frame;
int x = 50;
int y = 50;
public static void main(String [] args) {
TestAnimation2 gui = new TestAnimation2();
gui.go();
}
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
frame.setSize(500, 500);
frame.setVisible(true);
try {
Thread.sleep(10000);
} catch (Exception ex) {}
// 1
while (x < 400) {
x = x + 1;
y = y + 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
// 2
x = 50;
y = 100;
drawPanel.repaint();
while (x < 400) {
x = x + 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
// 3
x = 400;
drawPanel.repaint();
while (x > 50) {
x = x - 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
// 1
x = 400;
y = 50;
drawPanel.repaint();
while (x > 50) {
x = x - 1;
y = y + 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
// 2
x = 50;
y = 400;
drawPanel.repaint();
while (x < 400) {
x = x + 1;
y = y - 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
// 3
x = 400;
y = 400;
drawPanel.repaint();
while (x > 50) {
x = x - 1;
y = y - 1;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception ex) {}
}
}
class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.red);
g.fillOval(x, y, 50, 50);
}
}
}
ch17/classes/manifest.txt
Main-Class: com.mkamimura.kamimura_blog.java.head_first_java.TestAnimation2
<?xml version="1.0" encoding="utf-8"?> <jnlp codebase="http://mkamimura.com/kamimura_blog/java/head_first_java" href="TestAnimation2.jnlp"> <information> <title>TestAnimation2</title> <vendor>kamimura</vendor> <homepage href="http://sitekamimura.blogspot.com" /> <description>TestAnimation2 Java Web Start Demo</description> <icon href="../../../pictures/kamimura.png" /> <offline-allowed /> </information> <resources> <j2se version="1.3+"/> <jar href="TestAnimation2.jar"/> </resources> <application-desc main-class="com.mkamimura.kamimura_blog.java.head_first_java.TestAnimation2"> </jnlp>
入出力結果(Terminal)
$ ls -R TestAnimation2.jnlp~ classes source ./classes: TestAnimation2.jar com manifest.txt~ TestAnimation2.jnlp manifest.txt ./classes/com: mkamimura ./classes/com/mkamimura: kamimura_blog ./classes/com/mkamimura/kamimura_blog: java ./classes/com/mkamimura/kamimura_blog/java: head_first_java ./classes/com/mkamimura/kamimura_blog/java/head_first_java: TestAnimation2$MyDrawPanel.class TestAnimation2.class ./source: com ./source/com: mkamimura ./source/com/mkamimura: kamimura_blog ./source/com/mkamimura/kamimura_blog: java ./source/com/mkamimura/kamimura_blog/java: head_first_java ./source/com/mkamimura/kamimura_blog/java/head_first_java: TestAnimation2.java TestAnimation2.java~ $
0 コメント:
コメントを投稿