1 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 22:36:21 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 ttp://pc11.2ch.net/hp/ Webプログラミング ttp://pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 ttp://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド ★★Java質問・相談スレッド134★★ pc12.2ch.net/test/read.cgi/tech/1258793926/ 次スレは>>950 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 ttp://www.wikiroom.com/java/
152 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:41:07 ] javax.swing.text.AbstractDocument#putProperty(Object key, Object value) javadocを読んでみましたが、putPropety()がどのような働きをするのかわかりません ひとまず、改行関係でputPropety()を使っているな〜程度のことはわかります ヒントをください
153 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:51:08 ] >>152 簡単なプログラムを組んでテストしてみるとか
154 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:06:25 ] >>150 解析ツール側での正規表現。
155 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:19:39 ] String[] args → 「文字列型の、配列の、args」 String args[] → 「文字列型の、args、は配列要素でしたプギャー」
156 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:11:31 ] 自前実装したPaintインスタンスをGraphics2D#setPaint()で与えると極端に重くなるようです。 何か解決策はあるのでしょうか?自分で書いたことがある人などいらっしゃいましたらよろしくお願いします。 よくわかりませんが、アンチエイリアスOFFと組み合わせると遅くなるようです。(ONだと速かった) コードは下記になります。sdk 6 ttp://codepad.org/exP0Y1C3
157 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:12:38 ] ※グロ注意です
158 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:50:51 ] >>155 同じもので初期から許されてはいたんですけどね 結局グループで作ることを前提にしてるかどうかの違いですよね
159 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 01:27:05 ] >>146-148 なにこの煽り?笑ってしまった 機会があったら使ってみたい
160 名前:デフォルトの名無しさん [2010/01/15(金) 03:00:50 ] >>145 迷惑です。
161 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:22:56 ] 楽しいか?
162 名前:デフォルトの名無しさん [2010/01/15(金) 09:07:53 ] これでfalseって出るんだけどどういう可能性が考えられる? ソースファイルはutf-8 Pattern pattern = Pattern.compile("H");//UNICODE_CASE指定してもfalse Matcher matcher = pattern.matcher("Hello World."); System.out.println(matcher.matches());
163 名前:162 mailto:sage [2010/01/15(金) 09:18:34 ] 自己解決
164 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:52:30 ] >>156 そういうものです 元々Java2Dは遅かったのですが、特定の状態 (特定のStroke、特定のPaint、特定のComposite等) の場合は 本来のJava2Dパイプライン (Stroke#createStrokedShape, Paint#createContext, PaintContext#getRaster, Composite#createContext, CompositeContext#composite等) をすっとばして直接描画を行う最適化がなされ、ハードウェアアクセラレーションも効いて速くなります 自作のクラスに対してはそのような裏技を使えないので、従来通りの処理が必要になり、遅いままです 別のBufferedImageに描いてからそれをTexturePaintするとか、円形のクリッピング領域を設定してdrawImageするとか、 自作のクラスを使わずに済む方向を模索した方がよいです
165 名前:デフォルトの名無しさん [2010/01/15(金) 10:55:10 ] 解決経緯を書けやゴルァ!
166 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:15:02 ] >>162-163 自己解決してるがfindを使えと
167 名前:162 mailto:sage [2010/01/15(金) 12:00:35 ] ".*H.*" にしたら見つかりました いくつかの解説サイトでは"H"だけで見つけれるみたいに書かれてますが 解決手段が見つかったのでこれ以上考えても仕方ありません。
168 名前:デフォルトの名無しさん [2010/01/15(金) 12:08:09 ] interfaceでメンバ変数作ると、static finalだからinterfaceですぐ代入しないといけませんよね? つまり、実装クラスでinterfaceで定義されたメンバ変数に代入する事は出来ませんよね? あと、interfaceでstaticなメソッドを宣言(staticなアクセサを作りたい)する事は出来ませんよね? 要するに、interfaceにstaticなフィールドを作りたいんだけど、 値は実装クラスによって異なる。(一度定義すれば変わらない) interfaceにstaticなアクセサか実装クラスから代入出来るstaticなフィールドを宣言したい。 これが可能なのかどうか、代わりにどんな手段があるのか教えて下さい。
169 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:09:15 ] >>167 だから、findを使えと
170 名前:168 [2010/01/15(金) 12:12:07 ] 追加で状況説明。 絶対に変わることの無い定数が各実装クラス全てにあって、 定数だからstaticなアクセサ(あるいはフィールド直)で参照したいんですが、 同時に各実装クラスにあるんだからinterfaceにまとめたいんです。 staticにしなければ可能ですが、その定数を取得するためだけに実体化はめんどくさい。
171 名前:sage [2010/01/15(金) 12:13:22 ] >>156 例えば、createBufferStrategy(3)とか、 createBufferStrategy()の引数を変更してみては? それにカスタムPaintをテストしたいだけなら、 Paintのテスト自体には不要なBufferStrategy等の 余計な処理をしないで、paint系メソッドをオーバーライドした JComponentを使用してみては? paint系メソッドをオーバーライドしたJComponentで 同等のコードを試したら、さくさく動きましたよ。
172 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:25:24 ] >>168 もうちょっと詳しく。 interface A {} class B implements A { static final int X = 10; } class C implements A { static final int X = 20; } のようにAの各実装クラスごとに値の異なる定数があって、この2つのXをなんとかしてAにまとめて class D { public static void main(String[] args) { System.out.println(A.X); } } のようにstaticにアクセスしたいってこと?
173 名前:168 [2010/01/15(金) 12:31:10 ] >>172 YES! 今試してるんですが、interfaceで定義したstatic変数は、 実装クラスの同名static変数と同一で、 片方の値を変えればもう片方も変わります。 staticだから当然ですが。 実装クラス毎に異なる値で、でも全ての実装クラスが同じ名前でアクセス出来るstatic変数を持ちたい。 interfaceにまとめないのなら話は簡単ですが、 まとめれないとなると、interface型で実体化して参照したコードでそのstatic変数は使えない事になります。 ちなみに出来ればアクセサを介したい。
174 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:32:18 ] 質問です。 今、ミニゲーム集のタイトル画面のようなものを作成しているのですがゲームの選択のところで悩んでいます。 「タイトル画面内のゲーム名の書かれたボタンを押す」→「そのゲームを起動する」のような処理を行いたいのですが、どういった方法があるでしょうか? 理想としてはボタンのアクションにjarファイルの起動を関連付けられれば一番良いのですが・・・。 もし、これらの方法を知っている方がいらしたら教えていただけないでしょうか? よろしくお願いします。
175 名前:168 mailto:sage [2010/01/15(金) 12:36:48 ] >>172 あ、1箇所訂正があります。 参照するコードは、 A.Xだけではなく、B.X 、 C.X もありえます。
176 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:52:13 ] なんでstaticでアクセスしたいんだ?
177 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:52:55 ] >>168 staticってことは、何も実体化してなくてもアクセスできるわけだけど その場合、何が得られることを期待しているのでしょうか つまり、何もnewせずにmainでいきなり public static void main(String[] args) { System.out.println(A.X); } ってやると、何が出力されることを期待しているのでしょうか 10? 20? それとももっと何か別のもの? あるいは、何もnewしないうちは0で、BかCをnewした時点で値が確定してほしいとか?
178 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:54:24 ] static finalなフィールドって実装クラスで上書きできねんだっけ?
179 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:06:56 ] オブジェクト型ならfinalって参照先の固定でしょ? 初期値がnullなら一回だけnewやらを許可しないんだっけ? 今試せないから知らないけど。 プリミティブ型なら無理そうだけど。
180 名前:168 mailto:sage [2010/01/15(金) 13:10:03 ] >>177 class B,Cでstatic finalな変数Xをそれぞれ定義します。 class B,Cをインスタンス化して参照するクラスがあります。 class Aを期待して参照するメソッド(以下RefAメソッド)もあります。 RefAに対しては、RefAの該当メソッドを利用するクラスが、 BとCどちらのオブジェクトを渡すか選べる事になります。 もしmain()からいきなり呼ぶとすれば、 B.XかC.Xになります。(mainは他からメソッドとして呼び出されないため) このときB.XとC.Xは同時に利用する可能性がありますが、 異なる値を設定出来ない問題が発生します。 同じ名前で実装クラス毎に異なる値を持ちたいと言う事です。 そうすれば、BでもCでもどちらでも渡せるメソッドを書く事が出来ます。 そういう値をstaticにする事は可能なのかな、ということです。 現状のアイデアとしては、 Aにはstaticなフィールドを作らずに非staticなアクセサだけを定義しておいて、 B,Cにstaticなフィールドを定義し、同時に非staticなアクセサも実装する事です。 こうすればA型を期待したコードもかけるし、 B,Cに対してstaticな参照も出来ます。 と言うかこれが答えで良いかもしれません。
181 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:27:55 ] public interface I { public static final int a = 100; } public class C1 implements I { public static final int a = 200; } public class C2 implements I { public static void main(String[] args) { System.out.println(C1.a); System.out.println(C2.a); } } 実行結果 200 100 これでええんかな?
182 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:33:45 ] interfaceのstaticフィールドとかenumが無かった頃の遺産でしょ
183 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:42:21 ] >>181 同じ a でも C1 経由でアクセスするとオーバーライドされた値を参照する。
184 名前:168 mailto:sage [2010/01/15(金) 14:03:42 ] >>181 それは実行結果が両方200になるはずです
185 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:04:29 ] >>184 なんないよ、試してごらん
186 名前:168 mailto:sage [2010/01/15(金) 14:11:11 ] すみません勘違いしてました、異なる値持てますね。 interfaceにだけstaticな変数が宣言されてると 実装クラスもinterfaceのを指すけど、 実装クラスで改めて宣言されると個別の値をもてるようです。
187 名前:デフォルトの名無しさん [2010/01/15(金) 14:41:36 ] static final な 配列ってどうすれば内部データ変更されずにすみますか? ArrayListとかHashMapと同じで中身は変えられてしまうんですよね。
188 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:15:49 ] ArrayList<StaticFieldClass> でいいんじゃないの? class StaticFieldClass{ static final int a = 1; } とかやっとけば
189 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:22:34 ] とかやっとけば
190 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:28:45 ] >>187 配列の中身を直接見せないようにし、必ずgetXxxメソッド経由でアクセスさせる
191 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:36:49 ] >>188 でFAだろ >>190 とか要素を直接見せない手段を示して無いし
192 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:40:04 ] 示して無いね
193 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:57:41 ] finalとかの言語的な規制が働かないって話なのに 参照する側に性善説期待して終了か
194 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:05:13 ] 188をどうやって使うのかがわからん…
195 名前:デフォルトの名無しさん [2010/01/15(金) 16:07:47 ] swingのJTableでテーブルつくたんだけど、 そのテーブルの上にテキストフィールドって作れますか?
196 名前:デフォルトの名無しさん [2010/01/15(金) 16:07:50 ] >>194 俺もわからん・・・
197 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:10:08 ] class StaticFieldClass{ final int a = 1; } こうだなやるなら
198 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:20:29 ] >>197 Integerで良いんじゃね?
199 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:27:02 ] 回答者が無能すぎ…
200 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:28:09 ] >>199 が良回答をすればいいと思うよ
201 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:30:26 ] 無能なりにがんばって回答してみるスレでもあると思う
202 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:33:11 ] 配列なら int[] getIntArray(){ return (int[])array.clone(); } List なら List<Data> getDataList(){ return Collections.unmodifiableList(list); } バイト配列なら read only な ByteBuffer のみを見せるのでも良い。
203 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:45:47 ] >>195 テーブルのセルに好きな部品を載せれるからそこにJTextFieldでも使えば良い TableCellEditorとTableCellRendererについて要調査
204 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:24:27 ] 他のクラスからrepaintを呼び出すにはどうすればいいのでしょうか?
205 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:48:01 ] へ?repaintはpublicメソッドでしょ?普通に呼べばいいと思うんだが。。。
206 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:28:36 ] 普通に、、、呼べば、、、いいと、、、思うんだが。。。
207 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:22:50 ] >>164 ありがとうございます。PaintでなくColorを継承したときにcreateContext呼ばれずにコンストラクタで指定した色が 描画に使われてたので、もしやと思ってましたが、やはりそうでしたか。実装で回避してみたいと思います。 >>171 トリプルバッファにすると速いですね!なんででしょう?でもメモリ(ビデオメモリ?)を食いそうですね。 今作ってるのはベクタ画像編集ソフトみたいなやつなんで、速度も正確さも重要なんです。
208 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 07:44:26 ] >>205 JDialogでダイアログを出して、別ソースで用意したパネルをのせています。 ダイアログ(パネル)上のボタン等で元のフレームのrepaintを行いたいのですが 「staticでないメソッドrepaint()をstaticコンテキストから参照することはできません」と出てしまいます。
209 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:12:37 ] repaintを呼び出したいクラスのインスタンスが必要。
210 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:15:20 ] アホばっか
211 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:43:58 ] 2ちゃんねるのdatをパースしたいのですが、高速にパースできる方法はありませんか?
212 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:47:38 ] 速いマシン使う。
213 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:51:59 ] ワープする
214 名前:デフォルトの名無しさん [2010/01/16(土) 15:11:58 ] Listクラスを使って表を作りたいのですが教えて頂けませんか?
215 名前:デフォルトの名無しさん [2010/01/16(土) 15:26:55 ] >>214 tablemodelを拡張する
216 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:28:05 ] ただ妙なこだわりで動作保障犠牲にするのはどうかとは思う
217 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:28:24 ] だな
218 名前:デフォルトの名無しさん [2010/01/16(土) 15:29:24 ] 当然速いマシン
219 名前:デフォルトの名無しさん [2010/01/16(土) 15:36:08 ] ミシンはダメだからなw
220 名前:デフォルトの名無しさん [2010/01/16(土) 15:36:17 ] >>211 Velocity
221 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:37:24 ] >>220 kwsk
222 名前:211 mailto:sage [2010/01/16(土) 15:41:57 ] >>220 velocityは逆に遅くなる気がしますが しかも、テンプレートエンジンはかなり面倒くさくないですか? >>221 氏ねカス
223 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:44:19 ] 教えない
224 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:52:31 ] 寒いお(´・ω・`)
225 名前:デフォルトの名無しさん [2010/01/16(土) 16:11:01 ] Apache Commons IO
226 名前:デフォルトの名無しさん [2010/01/16(土) 16:20:28 ] >>210
227 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:46:06 ] >>211 java.util.regexじゃだめなの? CharSequenceでなくReaderにマッチできる正規表現ライブラリとか どこかになかったっけなぁ…
228 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:33:37 ] java.util.Scannerは?
229 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 19:19:34 ] Effective Java まったくわからなくてわろた
230 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 19:24:28 ] わろたわろた
231 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 21:04:11 ] まだやるべき事があるってことがわかるのはいいこと
232 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 21:10:12 ] 中には全く分からない質問者も居ますからねえ
233 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 21:30:58 ] へえ
234 名前:デフォルトの名無しさん [2010/01/16(土) 22:26:56 ] ぬおぉぉぉぉぉぉぉぉ!
235 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:33:41 ] >>227 Jakartaのregexp?
236 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:57:40 ] datのパースくらい自分でやれよと。 <>が来たらStringBuilderをStringにして、配列に突っ込むだけじゃん。 問題にしてるのはHTML文字参照のパースの方じゃないのか? あれはトランプのスートのマークとか混じるから無理なんじゃね?
237 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:59:39 ] ( ̄ー ̄ )
238 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:28:18 ] 下の画像みたいな座標がある地図を作りたいのですが、 こういう方眼紙みたいなのは何を使えば表示できますか? gazo6.com/0up1/src/gazo65097.png
239 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:33:21 ] それくらい自分で描けよ。
240 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:35:43 ] >>238 普通にGraphicsを作って、drawLine。 もしくは方眼紙イメージ作っておいて、drawImage。
241 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:48:39 ] >>240 汎用性あるからクラス化しても良いかもね
242 名前:240 [2010/01/17(日) 00:18:01 ] すみません言葉が足りませんでした。 正確には、画像のように移動した軌跡の部分に色を付けたりしたいのですが、 マスの座標を指定して色を変えたりするにはどうすれば良いでしょうか?
243 名前:238 mailto:sage [2010/01/17(日) 00:18:42 ] ↑>>240 じゃなくて>>238 です
244 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 00:26:15 ] g.setColor(Color.RED); g.fillRect(x * width, y * height, width, height);
245 名前:238 mailto:sage [2010/01/17(日) 00:38:42 ] >>244 ありがとうございます。
246 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 00:44:03 ] ここアホしかいねぇ…さすがJava
247 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 00:58:06 ] α値つき画像をクリップボードからJavaアプリケーションに貼り付けたいんですが、 Javaアプリケーション同士のやり取りでは普通にDataFlavor.imageFlavorを指定してα値も保持できますが Java⇔その他のアプリケーションだとαが無視されます。やりようはないんでしょうか?
248 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 01:10:25 ] >>246 あれ? shape知らない?
249 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:11:40 ] >>247 C#(.NET)で同じ問題に出くわして調べたけど、 Windowsクリップボードの仕様らしく(Linuxとかは未調査)、 解決策が見つからなかった。
250 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:36:32 ] Photoshop とかα値付きでペーストできるからやりようはあるだろ。
251 名前:デフォルトの名無しさん [2010/01/17(日) 06:10:54 ] >>250 それって、Photoshopのデータをどのアプリにペーストするの?
252 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 08:52:14 ] >>250 いや、おれは使ったことが無い。