[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] むりやり、NetScapeComunicator からアプレットの印刷




こんにちは、岸田です。

  事情があって、ウェブブラウザの印刷ボタンからアプレットを印刷するというこ
とについて調べています。
  インターネットエクスプローラーはブラウザの印刷ボタンからアプレットが印刷で
きるけれども、ネットスケープコミュニケータからだとアプレットがきちんとした
サイズで印刷できないということが、某MLにも書いてあるし、某ニュースグループ
にも書いてあるし、自分の環境 
WindowsNT, InternetExplorlar 4.0, Netscape Comunicater4.51 
でも確認しました。

それで、昨日からいろいろ試していて、ついに、Netscape Comunicater4.51 からも
アプレットの印刷ができました。ちょっと画像が大きくなってしまうけれども、
アプレット画面が欠けるということはありません。

どんなことをしたかというと printAll()メソッドの中に g.setClip()メソッドを
入れてみただけです。#ここまでたどり着くにはたいへんだった(笑)。

そこで、皆さんの環境ではどんなものでしょう?
次のプログラムを実行して、アプレットをウェブブラウザの印刷ボタンでアプレット
を印刷できるかどうか教えてください。

-------
import java.applet.*;
import java.awt.*;

public class TestApplet extends Applet {

    private int width;
    private int height;

    public void init() {
        width = getSize().width;
        height = getSize().height;
    }

    public void printAll(Graphics g) {
        g.setClip(0, 0, width, height);
        super.printAll(g);
    }

    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(0, 0, width, height);

        g.setColor(Color.red);
        g.drawLine(0, 0, width - 1, height - 1);

        g.setColor(Color.red);
        g.drawLine(0, height - 1, width - 1, 0);

        g.setColor(Color.blue);
        for (int i = 0;i < width; i += 10) {
            g.drawLine(i, 0, i, height - 1);
        }
        for (int i = 0;i < height; i += 10) {
            g.drawLine(0, i, width - 1, i);
        }

        g.drawRect(0, 0, width - 1, height - 1);
    }
}

-------
<html>
<applet codebase="." code=TestApplet.class width=400 height=400>
</applet>
</html>

-------

岸田ゆき枝
yukie@xxxxxxxxxx