Java標準低速GUI 6 AW ..
326:デフォルトの名無しさん
07/11/13 00:22:01
>>323
paintComponentについては暗黙の了解?
説明としては抜けてる。ソース嫁といわれりゃあっそう。
327:デフォルトの名無しさん
07/11/13 00:34:39
>>326
paintComponentについてはJComponentのドキュメントを読めば理解できるかと。
328:デフォルトの名無しさん
07/11/13 00:36:15
>>321
それ勘違いしてるぞ
ファイナライザとか関係ない
329:デフォルトの名無しさん
07/11/13 00:42:26
何でよ
330:デフォルトの名無しさん
07/11/13 00:43:16
なんでφならいざが?
331:デフォルトの名無しさん
07/11/13 01:08:35
>>310-311
Nimbusはイメージを使わずに、すべてJava2Dで書かれてるから、解像度に依存しないのがいいよね。
332:デフォルトの名無しさん
07/11/13 01:13:28
>>316
動作確認してみた。いいね!
やり方もエレガントだと思う。
アイコンもついてたら完璧かも。
333:デフォルトの名無しさん
07/11/13 01:25:17
>>331
うん。
作ってるアプリが終盤で、外観の体裁ととのえてるとこなんだけど、
今無理してL&Fいじくるより、Nimbusが標準になるまで待ったほうがトクだろうなぁ。
L&Fを自分で作ったりカスタマイズしてももすぐに時代遅れになるしね。
Metalも出てきた当時はけっこうクールに見えたし。
L&Fは服きせかえるみたいに使い捨てていきたい。
334:デフォルトの名無しさん
07/11/13 01:46:39
disposeは後始末
自前でgraphicsを生成した場合必須
ファイナライズの話はFileのIOをcloseしないというのと同じ話
そしてかってに呼び出し側でcloseしたらあかんだろというのと同じ
335:デフォルトの名無しさん
07/11/13 20:01:22
>>325
> Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
いっぱい作成できると、なんとなく、うれしいジャン?
とりあえず、「多数の Graphics オブジェクトを作成する可能性があります」の誤訳に一票
336:デフォルトの名無しさん
07/11/13 20:14:10
久しぶりに覗いたぜ。
invokeLaterはinvokeLater間違えてAWTのSystem Queueに送ったことあるorz
MIDPのGraphicsにdisposeがなくてどうやってメモリ空けようか悩んだことがあるorz
Nimbusのマルチバイト化けは直ったらしいがあれ重くないか?スケーラブルなLaF目指してるんだろうけど・・・。
ただでさえ、未だにjavaは重いという迷信が信じられてるからなぁ。
337:デフォルトの名無しさん
07/11/13 20:18:53
迷信というかJFileChooserは今でもひどくない?
ファイル多いとファイルリストの取得とは別の何かで重くなってる印象が・・
338:デフォルトの名無しさん
07/11/13 22:27:10
>>337
JavaSE6u2からすごいことになった
どうすればあそこまで悪化できるのかと
339:デフォルトの名無しさん
07/11/13 22:52:07
>>338
今はソース見れるんだから自分で調べられるよ
340:デフォルトの名無しさん
07/11/13 23:51:12
今OpenJDKで公開されてるソースと今公式ビルドに使われてるJDKのソースは違うぞ。
jdk6がOpenJDKベースになるのはまだ先。
341:デフォルトの名無しさん
07/11/14 00:16:14
>>339
そういう意味じゃないだろ
342:デフォルトの名無しさん
07/11/14 03:38:43
>>337
今までひどすぎるとまでは感じなかったんだが、そんなにたくさんのファイルリストを
出すという局面に遭遇してないだけだったりする。
100個くらいリストが出ててもなんともないと思うんだが、いくつくらいだとひどいことになるの?
343:デフォルトの名無しさん
07/11/14 07:17:29
なんでファイル列挙系はバグが入りやすいんだろうな。
なんか共通したミスでもあるんだろうか?
344:デフォルトの名無しさん
07/11/14 07:27:12
ネットで調べると、でかい圧縮ファイルがあるとおかしくなるらしいね
345:デフォルトの名無しさん
07/11/14 09:30:48
>>336
7年後サクサク動くニンバスみて、軽いけどもう古いよなこのLaFとかいってるような気がすれ
346:デフォルトの名無しさん
07/11/14 09:32:31
ニンバスかっけぇんだけどさ、どうもスクロールバーが馴染めない…
347:デフォルトの名無しさん
07/11/14 09:47:09
文字はみんな□になってるけどSwingSet2のデモみるかぎり、遅いとは感じないな。Nimbus。
そんでこれいつからリリースされるのかな。
348:デフォルトの名無しさん
07/11/14 12:36:16
>>342
u2以降は1個の表示でもすごい遅い
u1まではさくさく
まぁ遅いといわれたり直ったりエンバグ繰り返してるのがJFileChooserだから・・・
349:デフォルトの名無しさん
07/11/14 16:43:44
JFileChooserはネイティブ頼りなんだっけ?エンバグの発生率は仕方ないと思う。
350:デフォルトの名無しさん
07/11/14 17:18:38
デスクトップのzipをどけると改善するみたい。開発で頻繁にテストする人はzipを
一時的にどけておくといいかも。
351:デフォルトの名無しさん
07/11/14 19:29:57
つーことは、JFileChooserはファイルの中身を調べるようなことまでやってるのかな。
352:デフォルトの名無しさん
07/11/14 19:34:34
Windowsのエクスプローラとか、Javaのクラスパス解決処理みたいな
どっかのAPIを流用したことによる副作用とかいうオチだったらちょっと笑える
353:デフォルトの名無しさん
07/11/14 19:45:28
DirectXでIMEの例があるから笑うに笑えない・・・。
354:デフォルトの名無しさん
07/11/15 16:57:27
>>351
実行形式の場合、そのファイルのリソースとしてアイコンが格納されているんだから、
API経由か直接かは知らんけど、当然ファイルの中身は見てるはず。
で、PEとかELFとか、実行形式のフォーマットを決め打ちできない分、
アイコン読み取りが複雑になってるんじゃなかろうか。
355:デフォルトの名無しさん
07/11/15 17:06:04
JFileChooserのアイコンってFileSystemView#getSystemIconでしょ
これが遅いってことか?
356:デフォルトの名無しさん
07/11/15 21:18:41
>>354
つまり世の中のGUIは全てファイル選択ダイアログは遅くて使い物にならない、と
それにu1まではそんなに遅くなかった
1.4.2はいくつかのバージョンが遅いけど
357:デフォルトの名無しさん
07/11/15 22:11:41
URLリンク(sourcepost.sytes.net)
質問です
イベントでコンポーネントを追加したいんですが、追加と同時に表示させるにはどうすればいいんでしょうか?
repaint()ではダメみたいです
358:デフォルトの名無しさん
07/11/15 22:19:39
>>357
jPanel1.revalidate()
359:デフォルトの名無しさん
07/11/16 00:00:48
ああ、Swingか・・・。
360:デフォルトの名無しさん
07/11/16 00:51:25
>>357
HelloボタンをaddしたあとでMyFrame#pack()を呼ぶ
361:デフォルトの名無しさん
07/11/16 01:08:45
追加はされてるけど、flowレイアウトで1つしか表示できないサイズだから消えてるようにみえるだけ
>>358で正しいよ
362:デフォルトの名無しさん
07/11/16 01:24:19
revalidateだけでは>>357のソースでは「追加と同時に表示させる」ことにはならないから>>360で正しいよ。
363:デフォルトの名無しさん
07/11/16 01:27:07
>>362
おまえはバカか
それはレイアウトマネージャの問題であってrevalidate()で十分尽くされているんだから358が正しいんだよ
364:357
07/11/16 01:31:12
レス感謝です
>>361
revalidate()って意味ありますか?
revalidate()せずに、pack()だけで思い通りに表示されました
365:デフォルトの名無しさん
07/11/16 01:39:53
>>364
いろいろ作っているうちに分かるよ。pack()でレイアウト変更後の再描画なんてよっぽど
異常なUIでもない限りやらないよ。pack()の方でフレームを広げてボタン押してみ。
366:357
07/11/16 02:01:39
たとえば、ウインドウを最大化してるにも関わらずpack()でウインドウが小さくなるのはおかしいということでしょうか?
367:デフォルトの名無しさん
07/11/16 02:33:01
それでいいならいいけどさ。
368:デフォルトの名無しさん
07/11/16 03:04:30
JFileChooser パフォーマンス問題
URLリンク(blogs.sun.com)
369:デフォルトの名無しさん
07/11/16 05:59:08
jdk6uN b07では直ってるらしいよJFileChooser問題
URLリンク(download.java.net)
370:デフォルトの名無しさん
07/11/16 06:06:06
>>369
Bug ID: 6578753
Votes 65
Synopsis JFileChooser in 6u2 slow on Windows
Category java:classes_swing
Reported Against
Release Fixed
State In progress, bug
Related Bugs 6491795 , 5050516
Submit Date 10-JUL-2007
371:デフォルトの名無しさん
07/11/16 09:37:29
アプリの二重起動についてなんだが、二重起動を確認したらそこでシャットダウン
するのはよくある方法だと思うんだけど、たとえばNetBeansはもっと賢いやり方
をしている。
NetBeansが動いている状態で、それが最小化した状態でタスクバーにあるとする。
その状態でNetBeansのアイコンをクリックするなりして二重に起動しようとすると、
二重起動にはならずに、タスクバーにあるものが画面に現れる。
これってどうやったらできるのかな・・・。
372:デフォルトの名無しさん
07/11/16 10:52:18
>>371
Javaにはミューテックスなかったっけ?
373:デフォルトの名無しさん
07/11/16 11:34:11
排他制御用のオブジェクトは同一VM上の同期に使うやつで
プロセス間は別の仕組み考えないとダメ。
374:デフォルトの名無しさん
07/11/16 11:36:21
>>371
起動用のアプリを別に分ける。
というか、そのためにexeを用意しているようなもん。
375:デフォルトの名無しさん
07/11/16 11:55:44
んじゃあ手動でミューテックス作っちゃうとか。
テキストファイルで現在起動中のプログラム・インスタンス数を数えておいて、
起動時に中身が1なら起動しない。
もし>>371のいうような挙動をしたいなら、プログラムでミューテックスファイルを監視しておいて、
ファイルの中身が2になった瞬間タスクバーからプログラムを出せばいい。
ここまで書いて思ったんだが、Swingでタスクバーから出すとかそういうそうさって出来たっけ?
376:デフォルトの名無しさん
07/11/16 12:02:05
自プロセスのウィンドウを最小化解除するだけなら Frame#setState でできる
でもそのファイルを監視ってのはどうするんだ
タイマで1秒ごとにタイムスタンプを確認するとかか
377:デフォルトの名無しさん
07/11/16 12:09:54
>>376
ファイルやフォルダで変更があったときにイベント起こすような機能なかった?
378:デフォルトの名無しさん
07/11/16 12:13:16
>>377
NIO2で追加予定。
標準APIでなくてもいいなら、JConfigとかには付いてたと思うし
>>376のやり方で自力で実装してる人も多いんじゃないかと。
379:371
07/11/16 19:25:50
一眠りして考えたんだが、
アプリが独自にポート開いて監視しておく。
別プロセスでアプリが起動したら、そのポートを叩く。
応答が返ってきたら、そのプロセスはシャットダウン。
応答した側のプロセスはFrame#setState
でいけそうな気がするんだが、けっこうめんどくさいね。
もっと簡単にできないもんだろか。
380:デフォルトの名無しさん
07/11/16 19:36:00
Windowsファイアウォールとかにブロックされそうだが
381:デフォルトの名無しさん
07/11/16 19:48:42
ファイルサーバとかでもたまに思うんだけど、
OSはロックサーバが標準で付いててほしいんだよな
CVSのロックサービスだってそのためについてるんでしょ。
AbstractFactoryパターンでインタフェース書いて、Winだけ実装作ろうかな
382:デフォルトの名無しさん
07/11/16 20:36:05
Preferencesを使うってのはどうかな。
383:デフォルトの名無しさん
07/11/16 20:42:19
URLリンク(sdc.sun.co.jp)
# 複数の VM による同時アクセスを、この API でより強力にサポートしないのはなぜですか。
同様に、複数の設定の更新を結合して単一トランザクションに組み込み、
すべて更新するかまったく更新しないセマンティクスを適用しないのはなぜですか。
この API は、持続性のある基本的なデータ記憶域として使用し、データベースの代わりとしては使用しません。
この API は、標準の設定/構成リポジトリ上に実装できるようにすることが重要です。
これらのリポジトリのほとんどでは、データベースのような機能は提供していません。
これらのリポジトリは、この API の設計目的を満たしています。
384:デフォルトの名無しさん
07/11/16 22:05:37
>>380
ファイアウォールの設定はユーザの責任じゃないかい。
385:デフォルトの名無しさん
07/11/16 22:08:21
なんにせよファイルにフラグを記録するやり方だと、アプリが異常終了して、
フラグの書き換えができなかった場合、次に起動しようとすると困ったことに
なりやすい。
386:デフォルトの名無しさん
07/11/16 22:10:30
プラットフォームネイティブのMutexやセマフォを使うか、
オンメモリデータベースを使うってのがいいのかも。
387:デフォルトの名無しさん
07/11/17 01:29:41
ファイルチューザ同等の機能を持つファイルチューザを独自に作る場合、
こうやらねーとすっげー遅くなるぜ?っていうTips教えてくれ
388:デフォルトの名無しさん
07/11/17 02:04:22
>>387
普通に作れば遅くならんだろ…
JFileChooserはネイティヴLaFに近づけるために
いろいろ細工してるのが裏目に出てるだけだと思うぞ
389:デフォルトの名無しさん
07/11/17 02:25:54
URLリンク(touch.moe.hm)
こんな上下2ペイン構成のGUIアプリケーションを作りたいと思ってます
上ペインのJButtonをクリックすれば、下ペインのJPanelが切り替わるように作ればいいと思うんですが
普通どのようにやりますか?
■作ったサンプルではこのようにしてます
初期化で空のpanel1をつくり、その上にpanel2をadd()する
別のボタンが押されたら、panel1に載っているpanel2をremove()、panel3をadd()、validate()
ちょっとわかりづらいかもしれませんが、もっといいやり方ありそうでしょうか
390:デフォルトの名無しさん
07/11/17 02:29:27
っ CardLayout
391:デフォルトの名無しさん
07/11/17 02:39:43
TabbedPaneで、タブにアイコン貼付ければいいような気がした。
392:デフォルトの名無しさん
07/11/17 04:22:23
>>390
使ったことないけどカードレイアウトに同意
393:デフォルトの名無しさん
07/11/17 05:09:46
>>388
Fileが遅くなってるから、普通に作ったら遅くなるよ。
しったか乙。
394:デフォルトの名無しさん
07/11/17 05:12:23
JFileChooserの速いバージョンを作りたければ、FastFileを使うといいよ
395:371
07/11/17 10:35:15
>>379のやり方実装してみたけど、うまくいくみたい。
396:デフォルトの名無しさん
07/11/17 10:40:08
>>395
やってみた事ないけど、
途中でトラぶってコネクションクローズの前に死んだ場合は二重起動しちゃうの?
397:デフォルトの名無しさん
07/11/17 10:44:33
>>396
ローカルホストの接続でとらぶるって、どんなときにとらぶるかな。
そこらへんの想定外のことがあるかどうかは気にはなってんだけど。
398:デフォルトの名無しさん
07/11/17 10:54:59
>>397
他のアプリがそのポートを使っていて重複する場合
ファイアーウォールが入っていてはじかれる場合
今どきめずらしいけどLANがついてないマシンだとどうなるっけ?
399:デフォルトの名無しさん
07/11/17 15:21:39
> 今どきめずらしいけどLANがついてないマシンだとどうなるっけ?
頭大丈夫か?
400:デフォルトの名無しさん
07/11/17 17:21:11
スタンドアロンのPCがあるからネットワークサービス止めて試してみようか?
たぶん、接続段階で例外投げられたはずだけど。
jarでクレw
クローズ処理をfinalyでやってるなら途中でシャットダウン入るとfinalyブロック中断されるからそれでもアウトだね。
401:デフォルトの名無しさん
07/11/17 17:46:33
イーサネットがあってもなくてもlocalhost(127.0.0.1)にアクセスできるだろ…
# TCP/IPを外してあればできないのか?
402:デフォルトの名無しさん
07/11/17 17:49:59
ネットワーク完全にとめるとループバックももちろん完全にだめ
Win95以前はまずループバックアダプタいれての開発がデフォだったな
403:デフォルトの名無しさん
07/11/17 17:56:04
そういうアダプタ用MACアドレスもあるのかな?別に無くても困らないけど。
404:デフォルトの名無しさん
07/11/17 18:15:28
>>402
そもそも Win95 ってデフォルトのインストール
だと TCP/IP が組込まれてないようなOSだろ…
405:デフォルトの名無しさん
07/11/17 18:27:56
独自のネットワークサポートするから良いんです。
ゲイツ「インターネットなんて一般人にはやんねーよw」
時代の産物だからな。時代の流れか。
406:デフォルトの名無しさん
07/11/17 20:13:33
JDK1.5がそもそもWin95だともう動かんのじゃね?
とくにGUIまわり。
407:デフォルトの名無しさん
07/11/17 20:40:37
URLリンク(java.sun.com)
Win95はサポート外だね
408:デフォルトの名無しさん
07/11/17 20:43:39
サポートの話なんて誰もしてないだろと
409:デフォルトの名無しさん
07/11/17 21:24:54
設定でTCP/IP無効にしたらダメなんじゃねぇの?
410:デフォルトの名無しさん
07/11/17 21:57:44
アプリの性質にもよるわな。
DBやネットに接続するようなアプリなら、イーサカードが使えない環境に
インストールされることなんて無いしさ。
411:デフォルトの名無しさん
07/11/17 22:11:04
「カードがない環境ではlocalhostもアクセスできない」
というのが当然みたいにいってるが、だれか試したことがあるのか?
その理屈だとNICがない環境ではローカルでのサービスは動かんのだが。
412:デフォルトの名無しさん
07/11/17 22:53:06
>>411
NICないと実際IPサービスはうごかんよ
ループバックいれてれば動くが
という常識的な流れだろ
413:デフォルトの名無しさん
07/11/17 22:57:37
>>407
あんまり関係ないけど・・・、SunはMacのJVMはやってないんだね。
Macはどこがやってるんだろ。Macユーザじゃないからうといんだわ。
Winが80%をしめてるといわれるわりに、周囲にはMac使いが多くて、
じゃあその人たちにも使えるようにとJavaで作り始めたんだが、
肝心のSunはサポートしてないんだね。
414:デフォルトの名無しさん
07/11/17 22:59:52
まあいいじゃん。今時カード入ってないマシン使ってる人なんて
ごくごく少数。クレームついても仕様ですで押し通せば。
415:デフォルトの名無しさん
07/11/17 23:02:33
>>413
Macはアップルがやってる
6がまだ出てこない…
416:デフォルトの名無しさん
07/11/17 23:11:12
>>415
そうなんだ。ありがーと。
6をはやくだしてほしいわ。5で動くようにと思ってたんだけど、
6を知るとついつい6の機能を使ってしまったような・・・
417:デフォルトの名無しさん
07/11/17 23:43:28
NetBeans6 + JavaSE6 + glassfish2の組み合わせの軽さは異常
418:デフォルトの名無しさん
07/11/18 00:40:44
>>416
ついこの前にそれではまった…
JFileChooser で FileNameExtensionFilter 使ってて
Mac OS X で動かねーって言われるまで気が付かなかった
# Apple は 6 を出す気があるんだろうか…?
419:デフォルトの名無しさん
07/11/18 00:44:26
Mac なんて捨てていいよ
420:デフォルトの名無しさん
07/11/18 01:03:20
Macの6はDPのままだにぃ。
Cocoa-Javaバインディングも放置になったし、やる気なさそう。
421:デフォルトの名無しさん
07/11/18 01:19:05
OpenSource版ががんばってくれるんじゃね?
422:デフォルトの名無しさん
07/11/18 01:42:24
多少のタイムラグはあってもMacでも6は出るだろうし、
7でも8でも出てくると思うけどね。
Javaはいつも明日の言語なんだよな。w
明日はごちそう、でも今日は無い。w
423:デフォルトの名無しさん
07/11/18 01:44:33
AppleはJavaに対してなかなか気合いが入ってると思うけどなぁ。
ただ、やろうとしていることに作業が追い付いてないだけで・・・。
424:デフォルトの名無しさん
07/11/18 02:05:50
前は気合い入ってたんだけど、新しめの機能のフレームワークに対応する
Javaバインディングを出すのはもうやめてる。
LeopardではBridgeSupportでなんとかできるのかもしれないけど。
425:デフォルトの名無しさん
07/11/18 02:09:41
てかMacOS Xてunix互換なんだろ?CPUもIntel系にしたのに既存のコード使えないのか?
426:デフォルトの名無しさん
07/11/18 02:18:14
>>423
時間が経つごとに気合がなくなっていってるっぽいよなぁ
>>425
CPUがインテルでもベースがUNIXでも肝心なGUIライブラリは別物なので結局移植作業は必要
427:デフォルトの名無しさん
07/11/18 02:20:29
プロセスとかファイルシステムとかあたりはunix互換でも、
グラフィックとかサウンドとかあたりは全然別物だし・・・
428:デフォルトの名無しさん
07/11/18 02:38:18
追加機能が増えたりバージョンあがるごとに仕様かわったりで
追従していくの大変すぎるんじゃないのかなぁ。
JVMさえ開発すればどのマシンでも動きますなんてただの宣伝文句で、
それ作ろうとしたらすげー大変だと思うよ。
429:デフォルトの名無しさん
07/11/18 13:28:02
技術者の量・質を考えたらAppleがJavaを管理するのは無理そうだな
できあいの既存のものを改造していくのには慣れていても、
継続的にある規格に互換させていく作業ってのはやってこなかっただろうし。
430:デフォルトの名無しさん
07/11/18 14:37:15
>>428
それが基本ソフトとよばれるものなんだけどな
互換性をいかに維持するか
新しいOSごとにアプリ全部作り直しなんてやってられん
このスレ的にはApple捨ててよで結論でてるだろ
5.0のときの対応も遅かった
431:デフォルトの名無しさん
07/11/18 14:41:36
マック使う人はアポー謹製ソフトさえありゃ満足なんだから放置しとけばいい
432:デフォルトの名無しさん
07/11/18 16:17:40
デザイナはAdobe製ソフトも入ってないと困るよ
433:デフォルトの名無しさん
07/11/18 20:54:18
mac osxはカーネルより上のレイヤーはXですら自前だからなぁ。
GUIが自前とか言う次元超えてるよ。
434:デフォルトの名無しさん
07/11/19 00:29:34
>>431
V2Cが無ければとても困ると思うの
435:デフォルトの名無しさん
07/11/19 03:17:02
なんとかとハサミは使いようというじゃない。w
436:デフォルトの名無しさん
07/11/19 10:31:31
せっかちな人にはJavaは向かないね
437:デフォルトの名無しさん
07/11/19 13:22:30
マック信者をJavaで逆洗脳してみたいwww
438:デフォルトの名無しさん
07/11/19 13:46:40
Mac信者かつJava信者ですが何か?
でもCocoa-Javaはいらないと思ってる。
そういうのはRubyとかでいいんじゃないかな。
Javaはクロスプラットホームが基本です。
クロスプラットホームだけど、Macでは見た目を良くする。
URLリンク(developer.apple.com)
その他のプラットホームでは、Nimbusに期待してる。
URLリンク(nimbus.dev.java.net)
どっちも解像度に依存しないし、スモールサイズなんかは共通して使える。
439:デフォルトの名無しさん
07/11/19 14:33:56
6での大幅な改善点がデスクトップアプリの強化(大量にバグもちだが)と
大幅な高速化(1.3.1から1.4.0より大きな変化)だから
もうすぐ1年たつというのにMacに6がきてないのは苦しい
440:デフォルトの名無しさん
07/11/19 15:16:27
アップルの独自実装だからmac版が早くなるか分からないんじゃない?
糞実装を何とかしてくれればそれで良いと思うが。
441:デフォルトの名無しさん
07/11/19 19:21:46
まあぶっちゃけV2Cが1.4.2で動く事からも
Macが6をサポートしなくても当分困らないんだよな
5.0が動くだけでも十分じゃね
442:デフォルトの名無しさん
07/11/19 20:59:51
そんな後ろ向きな姿勢じゃいかんよ
443:デフォルトの名無しさん
07/11/21 21:07:37
JTreeで幹や葉をクリックしたり、矢印キーで移動させたときに
選択している幹や葉のファイルを別のJListに表示したい。
この場合、イベントはvalueChangedでいいんでしょうか?
それとなにか注意点とかありますでしょうか
444:デフォルトの名無しさん
07/11/22 00:03:52
データ転送じゃね?
445:デフォルトの名無しさん
07/11/22 12:44:57
>>443
マニュアル読んで判断したならいいでしょ
あとvalueChangedってメソッド名だけ出しても普通の人はわからんと思うよ
446:デフォルトの名無しさん
07/11/22 15:08:37
下手にJTreeのvalueChangedいじったらパフォーマンス落ちね?
447:デフォルトの名無しさん
07/11/22 15:31:17
上手にいじれば良い
448:デフォルトの名無しさん
07/11/22 19:38:15
それが出来るならこんなところで確認してないと思うが?
まあ、ドキュメント読めば分かることだが。
449:デフォルトの名無しさん
07/11/22 23:58:16
JFrameの下部にStatusBarを取り付けようとしています。
単純にBorderLayout.SOUTHで問題はないのですが、BorderLayout.SOUTHに当たる領域は後々別に使用するかもしれないので、完全に別領域として下部に取り付けたいのです。
イメージ的にはsetJMenuBar()と同じような感じです。
どのような実装がよいでしょうか?
450:デフォルトの名無しさん
07/11/23 00:10:09
JPanel に BorderLayout をセットして JFrame の CENTER に置く
JFrame の SOUTH をステータスバーのために使って、
JPanel の SOUTH を後々別に使用するときのために取っておく
451:デフォルトの名無しさん
07/11/23 00:13:45
そのようにした場合、ステータスバーをセットするJFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得後貼り付けないといけないので避けたいです。
他にはないでしょうか?
452:デフォルトの名無しさん
07/11/23 00:25:57
>JFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得
いや、最初から、JFrame じゃなくて JPanel の CENTER に入れればいいじゃん。
わざわざ取得っていうか、JPanel 作ったときにそれをフィールドに持っとけばいいだけでそ?
本当にどうしても JMenuBar のように振舞わせたくて他に方法がないというなら、出来ることは出来るけどちょっと面倒い。
JRootPane の中の layeredPane と glassPane と、layeredPane の中の contentPane と JMenuBar (と自分の statusBar) をレイアウトするレイアウトマネージャを書いて、JRootPane のレイアウトマネージャをそれで置き換える。
453:デフォルトの名無しさん
07/11/23 00:27:53
Windowsに限定しちゃうかも知れないけど、
%USERPROFILE%\Local Settings\Application Data
↑のディレクトリの中に変なGUID名のディレクトリが作られてて
中を見るとJ2SDK5.0のインストーラみたいなのが入ってる。
うちの環境にはJDK6も入ってるけど、5系だけゴミ?があるので気になります。
これって削除しちゃっていいのかな?
454:デフォルトの名無しさん
07/11/23 00:34:12
>>452
そうなのですが、どうしてもメニューバーのように扱いたかったので・・
やはりかなり面倒なことになるようですね。
丁寧に教えていただきありがとうございました。
455:デフォルトの名無しさん
07/11/23 00:40:36
ボーダーレイアウトでいいだろ
面倒ではないだろと
456:453
07/11/23 00:44:03
質問・相談スレに書くつもりが誤爆してました。
こちらはクローズします。ごめんよぅ。
457:デフォルトの名無しさん
07/11/25 00:15:06
質問相談スレで聞いたところ、こちらで聞いたほうが良いと教えていただい
たので質問させていただきます。
現在、携帯電話でいうフレーム撮影機能をPC上でJAVAを用い、作りたいと考え
ております。USBカメラから動画キャプチャを行い撮影ボタンを押すとその時の
静止画がJPEGで保存するところまでは作ったのですが、写真フレーム(gif)を
動画上に表示する方法がわかりません。API集の方も探してみたのですが、見つ
けることができませんでした。誰か方法について教えてもらえませんでしょう
か??よろしくお願いします
初心者でして簡単なソースなどつけていただけると助かります。
458:デフォルトの名無しさん
07/11/25 00:18:56
一番簡単なのは
・ImageのロードにはImageIOを使う
・JLabelを貼り付けてそれにImageをセットする
ネットで初心者かどうかってのは意味ない文章だからやめたほうがいい
知っているか知らないかだけだから
459:デフォルトの名無しさん
07/11/25 00:23:38
JMF使ってる?
460:デフォルトの名無しさん
07/11/25 00:23:49
動画を描画するコンポーネントのpaintComonent(...)をオーバーライドして
super呼んだ後に、drawImage(...)でOKじゃね?
461:デフォルトの名無しさん
07/11/25 00:35:49
いや
>USBカメラから動画キャプチャを行い撮影ボタンを押すとその時の
>静止画がJPEGで保存するところまでは作った
ここにJMF使ってるならJMF流儀の動画の描画の仕方があるから動画のキャプチャをどうやってるかでやり方が決まる。
462:デフォルトの名無しさん
07/11/25 01:30:58
JMFをつかっています。
キャプチャ部分となりますと
new Timer(100, new ActionListener(){
try {
player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
} catch(Exception e){
System.out.println(e);
System.exit(1);
}
player.start();
ここになりますでしょうか。
ご教授よろしくお願いします
463:デフォルトの名無しさん
07/11/25 02:44:57
>写真フレーム(gif)を動画上に表示する
これがやりたいんだよね?
ならEffect実装してProcessorからTrackControl取り出してTrackControl#setCodecChain(Codec[])で実装したEffectセットしてやれば良い。
んでProcessor#getVisualComponent()で取得したビジュアルコンポーネントを適当に張り付ければ良い。
あとはJMFのページのチュートリアルとかサンプルコード読んで。
464:デフォルトの名無しさん
07/11/27 20:21:48
日本語を入力時、「確定はされていない文字列入力状態中」(Windowsでは文字の下に破線が引いてある状態)を調べる方法はありますか?
465:デフォルトの名無しさん
07/11/27 20:22:47
ImmGetCompositionString
466:デフォルトの名無しさん
07/11/27 20:23:19
ごめん、ここJavaだったorz
467:デフォルトの名無しさん
07/11/27 20:34:01
Component に addInputMethodListener を仕掛けておけば取れるみたい?
468:464
07/11/27 20:44:22
>>467
InputMethodEvent#getCommittedCharacterCount()
で判別できそうですね。
ありがとうございました!
469:デフォルトの名無しさん
07/11/29 15:28:42
Java Web Startのアプリで、jnlpファイルの中で
<security>
<all-permissions/>
</security>
を設定していて、jarにはオレオレ証明書でサインしている。
確かにファイルアクセスなど自由にできるから、
この設定は有効化されているはずなんだが、
Point p = MouseInfo.getPointerInfo().getLocation();
で
Exception in thread "AWT-EventQueue-0"
java.security.AccessControlException: access denied (java.awt.AWTPermission watchMousePointer)
が出るのって、これはどういうことなんだろ。
JWSで動かさなければこのエラーは出ないんだが。
470:デフォルトの名無しさん
07/11/30 14:03:31
>>469
JWSのバグでね?
そのクラス1.5からのやつだからもしかしたら・・・
471:デフォルトの名無しさん
07/12/01 00:09:26
frameにタブだけ貼り付けたの作ると、
初めに、タブのタイトル部分に選択状態みたいなのが行くんだけど、
それをタブに貼ってある、jCheckBoxに初めから行くようにしたいんだけど、
windowsのアプリはそうなるようなんで。
どうやったら出来ますか?
472:デフォルトの名無しさん
07/12/01 00:49:32
フォーカスのトラバーサルいじるAPI群なかったけ?
473:デフォルトの名無しさん
07/12/01 00:54:40
初期状態ってことならオープン時にフォーカスセットしてあげれば?
474:471
07/12/01 01:19:46
jCheckBox.requestFocusInWindow();
よく分からないけど、setVisible(true)した後しかフォーカスがいかないな…
475:デフォルトの名無しさん
07/12/01 01:19:51
>>471
つrequestFocusInWindow()
俺はタブはいつもsetFocusable(false)するなぁ。
476:デフォルトの名無しさん
07/12/01 01:26:01
>>474
つaddAncestorListener()
ancestorAddedでrequestFocusInWindow呼んでみそ
477:デフォルトの名無しさん
07/12/01 01:27:34
ふつーにオープン時でいいとおも
478:デフォルトの名無しさん
07/12/01 01:28:59
>>477
それだとタブで切り替えたときにフォーカスが移らないってことだとおも
479:471
07/12/01 01:59:35
>>476
おーサンクスサンクス。
これで完璧だわ。AncestorAdapterは何故かないんだな
480:デフォルトの名無しさん
07/12/01 02:59:55
アダプタクラスは実装するメソッド数が少ないか
そのインターフェースの多くが実装される可能性が高いリスナーは
利便性が低いからアダプタクラス用意しないって方針だよ。
481:デフォルトの名無しさん
07/12/01 10:36:16
JPopupMenuの使い方なのですが、ポップアップメニューの対象によってメニュー内容を変えたい場合、一般的にどのような方法を取るのがよろしいでしょうか?
単純に対象を毎回チェックしてその対象に必要なメニューを構成する、というのはどうも気持ちが悪くて・・
482:デフォルトの名無しさん
07/12/01 12:02:52
リスナーのフィールドにして遅延生成すればいいだけじゃない?
483:デフォルトの名無しさん
07/12/01 12:35:03
対象の種類ごとにJPopupMenuを予め作っておく・・・・のはムダが多いか
484:481
07/12/01 12:48:32
>>482
遅延生成とはどういうことを指すのでしょう
やはり表示毎に必要なメニューを生成という意味でしょうか?
>>483
例えば対象の種類にあらゆる属性があり、その属性ごとに必要なメニューがある場合、その組み合わせをあらかじめ作っておくのは好ましくないかと・・
485:デフォルトの名無しさん
07/12/01 12:55:47
じゃあ、すべての項目を含めたJPopupMenuを1個用意しておいて、各JMenuItemのsetVisibleを切り替えるとか
486:デフォルトの名無しさん
07/12/01 14:24:05
>>478
そういう意味だったのか
あの日本語からはそこまで理解できなかったよ
487:デフォルトの名無しさん
07/12/01 14:28:15
>>481
表示される項目が全て画面に収まるのならすべていれる。
そして選択可能不可能で調整したほうがいいんじゃない?
コンポーネントによってメニューがかわるより、メニューは同じで選択可能か不可能かのほうが
ユーザーに優しいとおもわれる。
この選択肢は下のほうにあるとか上のほうにあるとかコンポーネントごとにかわっていたら厄介だ。
488:デフォルトの名無しさん
07/12/01 15:01:14
JFrameの上には、とりえあえずJPanel置くべきですか?
489:デフォルトの名無しさん
07/12/01 15:04:11
packの仕組みをしっているのならおいたほうがいい
そうでなくともパネルに機能単位でのせていったほうが楽になるかな
グループレイアウトを使うのなら場合によってはなくてもいいかも
490:481
07/12/01 15:52:06
>>485
>>487
とりあえず全部登録しておくのが楽なようですね。
場合によってsetVisible、setEnabledで使い分けようと思います。
ご意見ありがとうございました。
491:デフォルトの名無しさん
07/12/01 18:02:09
>>480
そうなんだ〜。まぁ、よく使うなら自分でAdapter作ればいいしね〜。
492:デフォルトの名無しさん
07/12/02 18:44:49
LinuxのSwing上でトラックポイントのセンターボタンでスクロールしたときに
コンテキストメニューが開いちゃうんだけど、心当たりがある人いる?
JavaはSunの1.6.0_03
493:デフォルトの名無しさん
07/12/02 19:12:28
これかな?
URLリンク(sdc.sun.co.jp)
>・Windows では、マウスボタン 2 マウス UP でメニューがポップアップする
>・Motif では、マウスボタン 3 マウス DOWN でメニューがポップアップする
494:デフォルトの名無しさん
07/12/02 21:54:41
以下の挙動で、困っています。
JNLPでデスクトップにショートカットアイコンを作成し、
そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、
「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。
ここで「詳細」ボタンを押すと、次のような情報が表示される。
※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。
InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
で、問題なのは、ここで、ドラッグアンドドロップしたファイルが、
何の断りもなく、いきなり 削除 されてしまう、ということなのです。
この不具合は、あらゆる全てのJNLPアプリで、全てのOSで再現しました。
こうした挙動を防ぐような、何らかの対策をすることは可能でしょうか?
495:デフォルトの名無しさん
07/12/03 00:20:49
>>494
MacOSX Leopardでやろうとしましたが再現しませんでした。
何よりファイルにDnDができない。
URLリンク(bugreport.sun.com)
で報告してください。
報告時は具体的な再現方法と再現環境を書いておくのが吉です。
ありとあらゆる、というのはちょっと曖昧すぎます。
496:デフォルトの名無しさん
07/12/03 01:24:26
ごめん、たしかに、MacOSでは試していない。
あと、64bit用のJREやSolarisでも試せていない。
こちらで試したのは、Windows Vista, Windows XP SP2, UbuntuLinux(7.04)の上で、
1.4.2_16,1.6.0_03,1.6.0_10-ea(いずれも32bit用)。
ここまでやって、いずれの環境でも再現した。
いま、Java7でも試そうとしているところ。
Javaキャッシュビューアで、インストール済みのJNLPアプリについて
「選択されたメニューのショートカットを作成」または、
右クリックメニューで「ショートカットの作成」で、
ショートカットがデスクトップにすることができる。
そうして作られたショートカットに、
ユーザが何かのファイルを放り込むと、
そのファイルが勝手に削除されてしまう、ということ。
ユーザがデスクトップ上のメモ帳のショートカットにファイルをDnDして
開こうとして、まちがって隣のJNLPアプリのショートカットにドロップしたところ、
そのファイルが勝手に削除されてしまう、という感じ。
> 何よりファイルにDnDができない。
たぶん、そういう挙動が正常なのだと思う。
497:デフォルトの名無しさん
07/12/04 11:36:46
質問です。JButtonがアイコンであるGIFファイルの縦横サイズより結構大きくなってしまうのですが、コンパクトにする方法は無いでしょうか?
498:デフォルトの名無しさん
07/12/04 12:06:32
>>497
JButtonのjavadocを隅から隅まで読んで
しかるのちにボーダーのマージンを設定したらいいよ
499:デフォルトの名無しさん
07/12/05 14:21:41
>>498
497です。できました。ありがとうございます。
500:デフォルトの名無しさん
07/12/06 02:03:22
JFrameでgetContentPane()をしなくてもよくなったは、いつからですか?
自動的に転送されるようになったってのを読んだのですが。
501:デフォルトの名無しさん
07/12/06 02:06:17
5.0
502:デフォルトの名無しさん
07/12/06 02:10:45
即レスthx
503:デフォルトの名無しさん
07/12/07 22:41:46
シューティングを作りたいと思ってます
メイン画面とスコア画面があって、
それぞれJPanelを継承したクラスを作ってMainPanel,SubPanelと作ろうと思ってるんですが、
この方法は値の受け渡しが面倒くさくなったり、重くなったりしますか?
普通はひとつのゲームは大体1パネルですかね?
504:デフォルトの名無しさん
07/12/07 22:43:16
普通はゲームにSwingなんて使わなくないか?
ましてシューティングで・・・
505:デフォルトの名無しさん
07/12/07 22:45:12
Javaの勉強もかねて作ってます
最近はSwingもだいぶ早くなったと聞いたんですが...
506:デフォルトの名無しさん
07/12/07 22:51:48
ゲームなら、Frameに直接描けばいいと思う。
BufferStrategyを使うのも良し。
507:デフォルトの名無しさん
07/12/07 22:52:23
400x300で24fpsくらいで試してみるといいよ。
Swingはシングルスレッドだから、パッシブ連打でも問題ないはず
508:デフォルトの名無しさん
07/12/07 23:00:08
パッシブ連打とは?
509:503
07/12/07 23:01:39
Frameに直接書くってことはpaintComponentメソッド内に
メイン画面用とスコア画面用の描画処理が混在してるってことですよね?
そうすると片方の画面の背景だけ変更するなどの処理とかがややこしくはならないですか?
パネルで分けるとコードがすっきりする気がするんですが
510:デフォルトの名無しさん
07/12/07 23:05:41
パッシブ・レンダリング=描画イベントによる受動的なレンダリング(repaint())
アクティブ・レンダリング=自発的に描画を実行するレンダリング(Toolkit.sync(), BufferedStrategy)
511:デフォルトの名無しさん
07/12/08 00:30:40
>>503
つまりWindowシステム普及前のゲームプログラミングが難しかったと思ってる?
んなことないよ
練習がてらというのならSwingつかってもいいけどメリットはあんまないとおもうよ
JLabelのアイコン指定でキャラ表示とかSwingというフレームワークで
描画や再移動とかそういうことでしょ?
途中でもっといいものを、もっと本格的なものを、となって挫折しそう
あとpaintComponentではゲームのレンダリングの処理はいれないことね
512:デフォルトの名無しさん
07/12/08 00:31:36
さらに付け加えるとパッシブレンダリングはいわゆるトリプルバッファを使わないといけないから注意ね
ダブルバッファじゃダメ
513:503
07/12/08 00:51:35
全体的な流れとしては、レンダリング(描画?)は各オブジェクト(敵、弾)のクラスのdrawメソッド(メソッド名は自由?)などで行い、
paintComponentはそれを呼び出すだけ。で、必要に応じてrepaint()を行うとpaintComponentが再描画されるという感じでしょうか?
514:デフォルトの名無しさん
07/12/08 00:59:58
paintのタイミングは自前のrepaintだけじゃないからそれはやっちゃだめ
ウインドウの重なり具合とかOSが画面をいきなりリフレッシュしたりとかあるから
各オブジェクトにdrawのインターフェースを実装させるという考え方はあってる
レンダリングは自前でAというバッファへしてるとすると、
その間描画はBというバッファからイベントでフロントへ描画させる
Aのレンダリングが終わったらAとBをいれかえて、次のフレームの描画はBへ行う
バックバッファへのレンダリングとフロントへのレンダリングが重なる場合もあるという考え方ね
515:503
07/12/08 01:09:30
ダブルバッファがいまいち理解できてないのでもうちょっと勉強してみます。
答えてくださった方どうもありがとうございました
516:デフォルトの名無しさん
07/12/08 01:16:16
本当はJavaでゲーム作成というスレがあったんだけど最近おちちゃったんだよな
ゲーム製作板とかいろいろと斜め読みしてみるといいかも
517:デフォルトの名無しさん
07/12/08 03:09:19
Javaでゲームってのはなかなか前衛的でおもしろいと思うんだが、
如何せんパフォーマンスが悪いのが致命的なんだよな。
いくら努力しても、一定以上FPSが上がらんとなるとどうしても敬遠したくなる。
518:デフォルトの名無しさん
07/12/08 06:27:05
勉強として作るプログラムも題材の選び方はかなり重要だよ。
努力するほど深まって発展していく題材と、
底の浅いところですぐに打ち止めになるのがある。
519:デフォルトの名無しさん
07/12/08 08:27:04
勉強の段階なら、何を作っても勉強になる。
520:デフォルトの名無しさん
07/12/08 08:28:32
Javaでエロゲぐらいなら作れそうじゃね?
521:デフォルトの名無しさん
07/12/08 09:47:04
アクションだろうがパズルだろうがなんでもできるんじゃないの。
ブロック崩しやテトリスくらいなら楽勝。
ゲーム専用機であるようなハデなアクションゲームを作りたいならお門違い。
522:デフォルトの名無しさん
07/12/08 09:49:46
あと速く動かしたいなら画面小さくすればいいんだよ。256 * 192とか。w
昔のアーケードゲームの解像度はせいぜいその程度だったしさ。
523:デフォルトの名無しさん
07/12/08 11:36:49
シューティングやアクションはともかくとして
リアルタイムシミュレーションとか向いてると思うけどな>java
スレッド周りとか楽々作れるし
524:デフォルトの名無しさん
07/12/08 12:55:52
ゲ制作板で話せ
525:デフォルトの名無しさん
07/12/08 14:32:05
>>517
まじていってるの?
526:デフォルトの名無しさん
07/12/08 14:33:14
リアルタイムのアクションものも余裕で出来るよ
IntelCore2/2GHzでJavaで動かすとCネイティブだと1.6GHzくらいの速度になるけど
それが問題になることはまずあるまい
527:デフォルトの名無しさん
07/12/10 01:17:57
[MainFrame.java]
public class MainFrame extends JFrame {
public MainFrame() {
MainPanel mp = new MainPanel();
Container contentPane = getContentPane();
contentPane.add(mp);
}
public void main(String[] args) {
MainFrame frame = new MainFrame();
frame.setVisible(true);
}
}
[MainPanel.java]
public class MainPanel extends JPanel implements ActionListener{
public MainPanel() {
SubPanel sp = new SubPanel();
}
public void actionPerformed(ActionEvent e) {
setBackground(Color.BLACK);
}
}
[SubPanel.java]
public class SubPanel extends JPanel {
public SubPanel() {
JButton b = new JButton("メインパネルの色変更");
b.addActionListener();
}
528:デフォルトの名無しさん
07/12/10 01:23:46
↑の様な構成で作りたいんですけど、うまくいきません。
ようするにSubPanelのインスタンスからMainPanelのインスタンスへ
アクセスするにはどうすればよいのでしょうか?
MainFrameでMainPanelのインスタンスをpublicでstaticにしたりいろいろやったのですが、
うまくいかないのでどなたか教えてください。
529:デフォルトの名無しさん
07/12/10 01:47:12
>>528
SubPanelにボタンのaddActionListenerを委譲して
MainFrameからやりたいことを教えてあげればいいんじゃないの?
530:528
07/12/10 03:21:26
>>529
すいません 委譲がいまいちわからないんですが、SubPanelとMainFrameにaddActionListener()メソッドを作り、MainFrameにactionPerformedメソッドがあるような感じですか?
今までは↓のような形で出来るかなとやっていたんですが、うまくインスタンスにアクセスできていないみたいなんです。
もし↓で出来たとしてもなにか強引過ぎる気がします。もともと構成がありえないんですかね?
[MainFrame.java]
public class MainFrame extends JFrame {
public static MainFrame frame;
public static MainPanel mp;
public MainFrame() {
mp = new MainPanel();
Container getContentPane.add(mp);
}
public void main(String[] args) {
frame = new MainFrame();
}
}
[MainPanel.java]
public class MainPanel extends JPanel implements ActionListener {
public MainPanel() {
sp = new SubPanel();
this.add(sp);
}
public void actionPerformed(ActionEvent e) {
setBackground(Color.BLACK);}}
[SubPanel.java]
public class SubPanel extends JPanel {
public SubPanel() {
JButton b = new JButton("メインパネルの色変更");
b.addActionListener(frame.mp);}}
531:デフォルトの名無しさん
07/12/10 10:02:09
MainPanelはPaintComponentをオーバーライドしないといけない気がする…
532:531
07/12/10 10:06:52
やっぱ要らないか
533:デフォルトの名無しさん
07/12/10 10:45:47
>>530
設計方針とか変更不可のクラス等の制約条件とかが分からないけど
手っ取り早くやるならMainPanelとSubPanelの親子関係がそのままなのを前提に
b.addActionListener((MainPanel)getParent());
534:デフォルトの名無しさん
07/12/10 11:19:28
俺なら
SubPanel#addColorChangeActionListener(listener){b.addActionListener(listener);}
を作る方を選ぶかな。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4901日前に更新/252 KB
担当:undef