12/07/02 20:30:35.97
JAVAで正確な10mmを印刷するには何ピクセル必要ですか?
JAVAで印刷部分を実装中なのですが、Printableをimplementsして実装しています。
印刷内容は
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
のGraphicsに投げると印刷されるので
Graphics2D g2 = (Graphics2D)graphics;
と2Dにキャストして、その後RectangleやLineなどで描写しています。
RectangleやLineは座標や幅を指定して長さや大きさを決めますが、印刷時に正確なミリ単位のラインなどを引きたい場合と考えています。
JAVA印刷における、LineやRectangleでミリ単位の指定方法がありましたら、教えていただきたいです。
75:デフォルトの名無しさん
12/07/02 20:49:28.42
jdbc driverをロードする際にclass.fornameでロードしますが、なぜわざわざリフレクションを使うんですか?
インスタンス化せずにstaticイニシャライザを実行したいからってことですかね
76:デフォルトの名無しさん
12/07/02 21:37:10.99
ついでにもうひとつ質問をさせていただきます。
Java@ResultSet == C#DataTableという認識であっていますか?
77:デフォルトの名無しさん
12/07/02 21:37:26.05
引数がすっげえ多いクラスがあって、どうにかならないかと思ったら
①テレスコーピング・コンストラクタ
コンストラクタをオーバーライドしまくっておく
②Jave Beans
とりあえず Object obj = new Object()で生成して
あとのメンバ変数はsetMemberで設定する
という方法があるのは分かりましたが、3つ目の方法としてBuilderパターンがあると知りました。
ですがBuilderパターンのメリットがよく分かりません。
結局は、void main (Strings[] args)側で、コンストラクタメソッドを呼び出して引数渡すんですよね?
78:77
12/07/02 21:51:24.53
なお、今作ろうとしているプロジェクトは、
・データ登録用の基本クラス
・基本クラスから独自メンバーを持つ継承クラス1
・基本クラスから独自メンバーを持つ継承クラス2
・基本クラスから独自メンバーを持つ継承クラス3
がございます。
79:デフォルトの名無しさん
12/07/02 21:59:25.73
>>77
Builderパターンって初期化の面倒なクラスを、Builderクラスで初期化するだけじゃないの?
そもそも、数回しか使わないのにデザインパターンって使う必要あるのかなと思った
80:デフォルトの名無しさん
12/07/02 22:29:41.50
Builderはオブジェクト生成のインタフェースと実装を分離したいときに使うものだよ。
DBアクセスとか帳票出力とかデバイスドライバみたいな、
同じ手順で異なるオブジェクトを作りたくて、それを利用する側にオブジェクトの作り方の違いを意識させたくない時に使う。
それが77の用途にあってるのなら使うといいよ。
81:デフォルトの名無しさん
12/07/02 22:33:34.45
>>74
PageFormat#getImageableHeight() あたりから計算するしか。
82:デフォルトの名無しさん
12/07/02 22:40:30.25
OSGiて使える?有望?
83:デフォルトの名無しさん
12/07/02 22:54:31.89
>>79
>>80
ありがとうございました
84:デフォルトの名無しさん
12/07/02 23:11:58.99
いえいえ
85:74
12/07/02 23:38:04.79
>>81
ありがとうございます。
ただ、getImageableは環境によってまちまちになるのと、あくまで描写エリアという考え方なので違うかなと。
1/72インチを単位として~という部分から、72ppiと仮定して実装してみたものの、印刷時に数ミリずれたりなど違うようです。
そもそも、RectangleのWidthやLine座標の1の違いが、1ピクセルなのかすら判断できず困っています。
難しいです。。
86:デフォルトの名無しさん
12/07/02 23:39:33.56
>>85
そんなあなたにJNI
87:デフォルトの名無しさん
12/07/03 00:07:40.50
>>77
ビルダーがぴったりと思われ
Effective Java 2nd ed. の Item 2
英語でいいなら書籍でググれば出てくる
デザインパターンというよりは、
名前付き引数やその省略時のデフォルトの値を付けられないJavaのイデオムとして使われる
欠点は、コード量が多くなること。それが許容できないなら、そのままで
88:87
12/07/03 00:14:21.84
すまんが
>英語でいいなら書籍でググれば出てくる
と言ったが、大事な2ページが飛ばされてるなw
名著だから買っとけ
89:デフォルトの名無しさん
12/07/03 00:35:46.03
>>82
よろしく
90:デフォルトの名無しさん
12/07/03 00:47:18.76
Jenkinsその他、Java系サーバがことごとくうるう秒で狂った話、
技術上の詳細まだ上がってないみたいだけど誰か知らない?
前スレでJavaにうるう秒は関係ないって言ってた奴出てこいよー。
91:74
12/07/03 01:04:00.25
>>86
JAVA単体では実現できないってことですか…
他の言語を覚えるのはともかく、いまからネイティブでのアクセスの仕方を学んだりするのは、かなりハードル高いですね。
92:デフォルトの名無しさん
12/07/03 06:33:03.42
>>90
俺だが何か?
93:デフォルトの名無しさん
12/07/03 06:47:02.43
Eclipse で以下のコードがコンパイルできないのですが、何が間違っているのでしょうか?
import java.util.ArrayList;
public class Hoge {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(42);
arrayList.add(123456);
int[] as = (int[])arrayList.toArray(new int[0]); // ここでビルドエラー
System.out.println(as[0]);
System.out.println(as[1]);
}
}
94:デフォルトの名無しさん
12/07/03 07:10:59.98
>>93
エラーメッセージぐらい書きなさいよ
ArrayListはObject型しか使えない
ArrayList<Integer>で変数宣言してるのに
なぜプリミティブ型のintに戻すのかよくわからない
intって書いてるとこをIntegerにすれば動くが
このプログラムでArrayListを使う意味もよくわからないな
95:デフォルトの名無しさん
12/07/03 07:47:07.97
>>90
それLinuxの問題。
96:デフォルトの名無しさん
12/07/03 08:35:45.43
>>87
>>88
ありがとうございます。
ただ、自分が作りたいものはデータ登録用のクラスなんですけれど、
全てのメンバーが、入力必須項目で空白(null)は弾くようにしているか、自動的に他のメンバーから計算される類のもので
よく考えれば、コンストラクタ呼び出し方に複数のバリエーションはありえないかもしれません・・
97:デフォルトの名無しさん
12/07/03 12:11:21.71
初めまして.
とあるプログラムを作っています.
出力が
1.0
1.0
1.0
0.5
0.2
0.14
0.07
0.049
0.035
1.0
1.0
1.0
0.5
0.2
0.12
0.12
0.036
0.048
となるようにプログラムを作ったはずなのですが,
最後4行が,
0.12000000000000001
0.12000000000000001
0.036000000000000004
0.04800000000000001
となってしまいます.
何度見直しても原因がわかりません.eclipseでもideoneでも結果は同じです.
教えていただけませんか.
URLリンク(ideone.com)
98:デフォルトの名無しさん
12/07/03 12:27:23.88
計算機イプシロンでぐぐれ
99:デフォルトの名無しさん
12/07/03 12:51:58.17
ググって計算機イプシロンの意味はなんとなくわかりました。
しかし、0.12000000000000001において
0.00000000000000001が計算機イプシロンだとおもうのですが、何故それが計算されて、足されたのか分かりません。
また、プログラムをどのように修正すれば
得たい結果が得られるでしょうか。
100:デフォルトの名無しさん
12/07/03 13:14:30.90
0.12を2進数に変換してみようか
101:デフォルトの名無しさん
12/07/03 14:35:49.46
十進数ならキリの良い小数でも、二進数だと循環小数だったりするから。
java.math.BigDecimalなら十進数で計算できて、有効桁数や丸めルールも
好きに設定できるから、使うといいよ。
102:デフォルトの名無しさん
12/07/03 15:51:09.10
Javaのdoubleは
0.11999999999999999555910790149937383830547332763671875
と
0.12000000000000000943689570931383059360086917877197265625
の間の数が用意されていない。
ソースに「0.12」と書くとJavaコンパイラは勝手に前者に書き換えてしまう。
そして後者が君の答えに一番近かったと判断されたのだろうね。
どうしても100等分した12にきっちりこだわるのなら、
double使ったプログラムごと捨てて作り直した方がいい。
103:デフォルトの名無しさん
12/07/04 00:42:42.59
>>102
double使って金がらみの計算するなんて自殺行為だよね。
何でdoubleなんかつかうんだろ。
104:デフォルトの名無しさん
12/07/04 01:14:46.34
金がらみの計算なんて何処にも書いてないが
105:デフォルトの名無しさん
12/07/04 02:05:02.20
>>104
別に書いてなくてもいいでしょ。
106:デフォルトの名無しさん
12/07/04 04:53:01.75
これはひどいw
107:デフォルトの名無しさん
12/07/04 05:06:07.83
URLリンク(ideone.com)
小町算なんだが、見てもさっぱりわからん。
どなたか解説して頂けませんか?
108:デフォルトの名無しさん
12/07/04 05:32:50.62
何が分からないのかによる
日本語が分からないのかJavaが分からないのか、
分かるところから書いてけ
109:デフォルトの名無しさん
12/07/04 09:59:32.26
TomcatでWebアプリを作っている場合で
セッション情報の一覧みたいなものは取得できるものでしょうか?
セッション情報のログイン情報を見てログインユーザー一覧などの
取得を想定しています。
110:デフォルトの名無しさん
12/07/04 10:15:37.42
>>109
自分のAPのサーブレットが入り口なのだからメモリかDBにでも必要な情報を書き込めば
111:デフォルトの名無しさん
12/07/04 10:18:13.52
>>110
やはり自分で管理するしかないですか・・・
112:デフォルトの名無しさん
12/07/04 15:09:56.98
あーあ…