度々質問します。

ブラウザに表示させたイメージ画像(JPEG)を印刷した所、印刷できま
せんでした。
ちょうど他の方も印刷が出来ないと言うことで、ご質問されていまして、
参考になるURLにジャンプして色々見たのですが、正直よくわかりません。
本にもちょうど載っていたのですが、的外れな事が書かれているため、
参考にもなりません。

以下のソースは最初にA1.jpgを表示させ、その後「画像を変更」ボタンを
押すとB2.jpgに画像が変更されるものです。
やりたいのは、ボタンをもう一つ(印刷ボタン)追加して、そのボタンが
押された時に画像が印刷されるようにしたいんです。
基本的に画像のみを印刷したいと言う単純明快な形にしたいんです。

それで出来たらバカにでもわかるくらい簡単に書いていただけると助かります。

お手数ですがよろしくお願いします。


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.*;

public class Sample extends Applet
{
Button Henko;
Image image;
Color bgcolor;
Font font;

public void init()
{
setLayout(null);
bgcolor = new Color(240,248,255);
setBackground(bgcolor);
setForeground(Color.black);
font = new Font("Serif",Font.PLAIN,18);

image = getImage(getDocumentBase(),"A1.jpg");

Henko = new Button("画像を変更");
Henko.setFont(font);
Henko.setBounds(20,100,140,30);
add(Henko);

Henko.addActionListener(new Gazohenko());
}
public void paint(Graphics g){
g.drawImage(image,150,150,this);
}

public class Gazohenko implements ActionListener{
public void actionPerformed(ActionEvent e){
image = getImage(getDocumentBase(), "B2.jpg");
repaint();
}
}
}

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>実行しても全く無反応です。


>何がいけないんでしょうか?
>印刷のメソッドを記述したのに、印刷が出来ません。
とのことですが、どこまで上手く行って、どこで上手く行っていないのか位は分かりませんか?

デバッガの出力とか、JavaConsoleとか。ついでに環境も教えてください。

この回答への補足

基本的に処理事態はうまく流れています。どこかで止まってはないみたいです。
メインのプログラムにはボタンが二つあります。「データ表示」と「印刷」です。
二つのボタンは押された後の処理はほぼ同じです。「データ表示」は取得した
データと画像をフレームに表示する。「印刷」はデータ表示ボタンと同じく、
取得したデータと画像をフレームに表示させ、印刷し、その後フレームを閉じ
ると言う流れです。
今まででもプログラム中にどこかいけない所があると、そこを基点にプログラ
ムが一切動かないのですが、このプログラムはきちんと処理が流れます。
ただ印刷がされません。
つまり印刷ボタンを押し、フレームが一瞬表示され、その後フレームが閉じます。
その間の印刷と言うイベントが発生しません。
「if(printjob != null){」というIf文をコメントにして必ず印刷メソッドが
流れるようにしてもだめでした。


それでデバッグをやってみたのですが、今までやった事ないので、本を見な
がらやっていたのですが、全く意味がわからず、何が動いているのかが見え
ないです。
その為、どこがいけないのか?などの調査が出来ません。
とりあえず使い方をこれから色々探してみたいと思います。

それで以下のものはJAVAコンソールです。
一通り実行してみました。正直よく意味がわかりません。
これで何かわかるのでしょうか?
==============================================
? ヘルプ
c クリア
f ファイナライザの実行
g ガーベジ収集
m メモリ使用状況
q 終了
t スレッド一覧 list
==============================================
f実行
終了しています... 完了

g実行
ガーベジを収集しています... 完了

t実行
重要性 5 AWT-EventQueue-0
重要性 5 AWT-Windows
重要性 5 main
重要性 6 thread applet-fuji.class
重要性 6 TaskManager notify thread
重要性 6 Global Task Manager Thread #0
重要性 6 Global Task Manager Thread #1
※補足に書いたソースではSampleでしたが、実際記述している
 プログラム名はfujiです。


環境ですが、的外れかもしれませんがとりあえず一通り書きます。
OS Win95
IE Ver5.5
JDK Ver1.3
開発ソフト 特に使用していません。エディターでプログラムを記述

お手数ですがよろしくお願いします。

補足日時:2001/03/15 09:55
    • good
    • 0
この回答へのお礼

色々やりましが、結局出来ませんでした。

やり方を変えて、ブラウザから印刷できるようJavaScriptでやることに
しました。
色々ご迷惑をおかけしました。そしてありがとうございました。

お礼日時:2001/03/15 14:14

ちょっと調べてみたら不可能ではないらしいです。


参考URLから「印刷 - print」を探してください。

http://java-house.etl.go.jp/ml/archive/j-h-b/019 …

が直接的かな。。。

参考URL:http://java-house.etl.go.jp/ml/topics/

この回答への補足

教えていただいたURLにジャンプして、それと同じような感じで、
フレームの中にソースを記述しました。
それで無事コンパイルも出来ましたが、実行しても全く無反応です。
何がいけないんでしょうか?
印刷のメソッドを記述したのに、印刷が出来ません。

class Frame extends Frame{
public Frame(){
super("Print");

PrintJob printjob = getToolkit().getPrintJob(this,"Print", null);
if(printjob != null){
Graphics g = printjob.getGraphics();
this.printAll(g);
g.dispose();
printjob.end();
System.exit(0);
}
}
public void paint(Graphics g){
g.drawImage(image,50,250,this);
}
}

補足日時:2001/03/14 15:29
    • good
    • 0

そもそも、アプレットから(画像に限らず)印刷ってできるのでしょうかね?



アプレットってセキュリティ面で「危険かもしれないものは禁止する」という方針をとっていたと思います。ローカルファイルにアクセスできないのもそのためです。アプレットがプリンタにアクセスできると、ひたすらデータを送り続けてマシンをアップアップさせるアプレットを作ることも可能になりそうなので、先の方針からすると禁止されていても不思議じゃないように思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAUTOCADをPDF変換して印刷したいのですが

AUTOCADをPDFに変換して印刷たいのですが
PDFでPC上ちゃんと見える線が印刷するとその線だけ消えています。
ワイプアウトで一部隠れてるのが原因かと思ったのですが
ちゃんと出てる図面もあります。

PDFをどうにかして印刷できないでしょうか?

AUTOCAD2010でDWG to PDFでPDF変換してます。
Adobe® Acrobat® 8 Standard を使ってます。

よろしくおねがいします。

Aベストアンサー

AutoCAD2010より低いバージョンでの話になるので参考までに。

新規作成した時に最初にできる「0」というレイヤーは印刷のときに不具合をおこす場合があるようです。
(印刷時に印刷されない等)

一度「0」のレイヤー内のオブジェクトを新たに作ったレイヤーに移して見てください!

また、Adobe Acrobatがインストールされている場合は
DWG to PDFではなく、「印刷→Adobe PDF→ファイルへ出力にチェック」を試してください!こちらの方が線がきれいにでると思います。

以上。
健闘を祈ります!!

Qimport java.applet.Applet;について

ソースの先頭にimport java.applet.Applet;と書かれたソースをコンパイルすると、ローカルのjava.applet.Appletを読み込んで*.classを作るのだと思うのですが、java.applet.Appletが見つかりません。
普通はどのあたりにあるのでしょうか?

Aベストアンサー

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時には上記のJRE側の rt.jar が使用されます。

ですから、コンパイル時、あるいは実行時にそれぞれのディレクトリに rt.jar がないとエラーが発生します。

ちなみに rt.jar の中身を確認したいのであれば、下記のコマンドをコマンドプロンプトから実行し、出力先のファイルをテキストエディタで開くと確認できます。

 cd C:\j2sdk\jre\lib   ← ディレクトリ移動

 jar tvf rt.jar > C:\Temp\result.txt ← rt.jarの中身をテキストファイルに出力

 notepad C:\Temp\result.txt   ← メモ帳で出力結果を表示


 出力結果のファイルには、java.applet.Appletであれば "java/applet/Applet" のように "." が "/" に置き換わって出力されています。

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時...続きを読む

Qillustrator10、印刷可能範囲だけPDFに変換できますか?

よろしくお願いします。

友達にweb上でチラシを見てもらおうとしてます。

pdfに変換してweb上にアップして、友達の自宅PCにて確認してもらおうとしてますが、
PDF変換すると、画像がある範囲すべてがPDF変換されてしまいます。

プリンタで印刷できる範囲のみだけにしたいのですが、イラレで表示されている印刷可能範囲の点線の内側のみをPDF変換することは可能でしょうか?

Aベストアンサー

色々やり方はあると思いますが、私なら・・・。

1)まず、元データを「複製を保存」か「別名で保存」で保存しておきます。

2)で、すべてのレイヤーを1つにまとめて、印刷範囲の白ベタを作って【最前面】に配置します。

3)そのまま、すべてを選択して「メニューバー→オブジェクト→クリッピングマスク」を実行します。

4)これで印刷範囲のデータ出来上がり。

5)「別名で保存」か「データの書き出し」でPDFデータを作って終わり。

QAppletのpublic void paint(Graphics g)

は抽象クラスのGraphicsのオブジェクトを引数に持ちますが抽象クラスはオブジェクトを発生できないのに何故オブジェクトを渡せるのでしょうか?

Aベストアンサー

実際にパラメータとして渡されるのは、Graphicsのサブクラスのインスタンスだからです。

Graphics クラスは抽象クラスですが、そのサブクラスは抽象クラスとは限りません。

Qコンビニword印刷、PDF変換でok

コンビニでusbに保存したwordをPDFにへんかんすればどこのコンビニからでも印刷できますでしょうか?

パソコンは今ネット環境がありません
なのでusbを使い、印刷するしか方法が無く印刷したいものが3枚ほどなので漫画喫茶は高くなるし困っています。
詳しい方教えてください
ちなみにPDF変換をしないとwordはどこのコンビニも印刷不可ということでしょうか?

Aベストアンサー

PDFであれば、多くのコンビニで備えているマルチコピー機を使って印刷できます。
Windowsのエクスプローラーのようにフォルダーが表示されるので、
フォルダー内のファイル(PDF)選択も簡単です。
wordの印刷機能はありません。

QInteger.parseInt()について public static void main(String[] args) { int a =

初歩的な質問だと思うのですが、、、

public class TestTree {

public static void main(String[] args) {

int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

GreatTree myTree = new GreatTree(a, b);
myTree.makeTree();
myTree.makeGround();
}

}

というプログラムについて、Integer.parseInt()はどういう意味を持つのかがわかりません。ただ適当につけた名前だとは思えないです。教えてもらえたら幸いです。お願いします。

Aベストアンサー

> argsで入力されたものは例え数字でも文字列として扱われているから、それをintにしている。ということですよね?

引数として (String[] args) と設定されていますので、
おっしゃるとおり 引数 args[]配列に入っているものは、文字列です。

ポイントは、 「String[]」でしょうか。。

Qイラストレータ→PDF変換で、必要な部分だけ印刷したい

イラストレータCSで作成したものを、
イラストレータがインストールされてないパソコンから印刷したいため、
PDFファイルに変換して印刷しようと思っています。
しかし設定用紙サイズの枠外まで絵を描いてしまったので
PDFファイルにするとその印刷部分外まで一緒に保存されてしまい、
希望の用紙サイズとは全く違うサイズになっていまいます。

トンボなどは設定できるようですが、画像サイズの設定をして
そこだけPDF保存、ということは出来るのでしょうか?
若しくは印刷段階で「真ん中のここだけ印刷」みたいなことは出来るのでしょうか?
スライスを使用したりして多少の悪あがきはしてみましたが…
これが限界のようです。
何か良い知恵があれば是非是非ご教授のほどお願いいたします。

また、PDFファイルに変換すると絵全体が白っぽくなるのですが…
これの回避の仕方などはあるのでしょうか?
過去の質問を見たのですがMacでの質問しか見つけられなかったので、
これも一緒に質問させていただきます。

因みにパソコンはWin2000(イラレ搭載)とWinXP(印刷用)、
使用してるのはAcrobat Reader 5.0になります。
他足りない情報があればご指摘くださればすぐに補足させて頂きます。
どうぞよろしくお願いいたします。

イラストレータCSで作成したものを、
イラストレータがインストールされてないパソコンから印刷したいため、
PDFファイルに変換して印刷しようと思っています。
しかし設定用紙サイズの枠外まで絵を描いてしまったので
PDFファイルにするとその印刷部分外まで一緒に保存されてしまい、
希望の用紙サイズとは全く違うサイズになっていまいます。

トンボなどは設定できるようですが、画像サイズの設定をして
そこだけPDF保存、ということは出来るのでしょうか?
若しくは印刷段階で「真ん中のここだけ印刷...続きを読む

Aベストアンサー

「書類サイズ」が大きいのではないでしょうか。それを用紙サイズと同じにしてからpdfで保存すればその範囲のものしかできないと思います。
当方CSは使っていませんが同様では?違っていたらゴメンナサイ。

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

Qエクセルファイルを印刷のところからPDFに変換

こんにちは。
会社で私が使ってるパソコンだけが、ファイルメニューの印刷を選んで、出てきた印刷ウインドウの中にプリンターの名前と一緒にAdobe PDF とあるので、それを選択すると簡単にPDFファイルに変換出来ます。
これは他のパソコンには入っていないようです。他の人が同じようにしてくれと言ってきますが、私もどうしてこうなっているのか記憶にありません。何かのプラグインが入っているのでしょうか?

ウインドウズXP で オフィス2000です。

よろしくお願いします。

Aベストアンサー

Adobe Acrobat が導入されていると考えるのが普通でしょう。
http://www.kit-systems.co.jp/webkcore/maketemplate9/maketemplate9-2.htm

http://dopub.jp/aboutpdf.php
でそう表示されています。

ちなみに「CubePDF」ではAdobe PDFとは表示されず、CubePDFと表示されます。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1331cubepdf/cubepdf.html

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。


人気Q&Aランキング