トップページ⇒tech
1001コメント321KB

Java低速GUI Swing 2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
そんなSwingと引き続き付き合っていくみんなのスレッドです。

前スレ
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50

参考スレ
Java 高速GUI SWT 2
http://pc5.2ch.net/test/read.cgi/tech/1068349883/l50
0136デフォルトの名無しさんNGNG
V2CのJavaWebStartはサンドボックスも糞もねぇな(w
「このアプリは全てのアクセスを要求?」
手抜きすぎ。
0137デフォルトの名無しさんNGNG
>>136
え?
0138デフォルトの名無しさんNGNG
公開するJavaWebStartアプリとして、
jnlpで
<security>
<all-permissions/>
</security>
っていいんかな〜

って言いたかった。
せっかくJAVAのブラウザなんだからセキュリティー上クライアントのシステムリソースには触れて欲しくないのが心情。
アクセス履歴とかを残せなくなるのは仕方が無いが・・・。どうだろうか。

「アプリケーションは、あなたのローカルマシンおよびネットワークに対して無制限のアクセスを要求しています。」
ってきつくない?ブラクラだったら即死?
0139デフォルトの名無しさんNGNG
しかし全権限を要求しないJava WebStartアプリケーションというのを
あんまり見ないのも事実。
0140デフォルトの名無しさんNGNG
そうだったのか。スマソ。じゃいいよ。
0141JavaなんてうんこNGNG
ばーーーーーーーーーーーーか
0142デフォルトの名無しさんNGNG
>>141
なんだと
0143デフォルトの名無しさんNGNG
>>138
ダウンロード版があるんだから、あまり気にしてもしかたないよ。
0144デフォルトの名無しさんNGNG
ネイティブアプリなら承諾さえ求めないんだしね。
特定のフォルダだけアクセスできるモードがあれば便利かも。
0145デフォルトの名無しさんNGNG
秀和システムからVisualEditorの本が出ていたから早速試しているのだが
これはかなりいいね。今までサーバサイドJavaの仕事ばかりやってたので
Swingは敬遠していたのだが、これだけ簡単に作れるのなら面白そうだなと思った
0146デフォルトの名無しさんNGNG
VEで感動しているということはNetbeansではもっと感動するかもね
癖はあるけどまだまだこっちがいろんなところで強い
0147デフォルトの名無しさんNGNG
NetBeansの挙動は頭悪いけどな。
でも、NetBeans4.0でWebサービスが気軽に使えるようになるし、プロファイラも出るし、おもしろい状況になるかも。
0148デフォルトの名無しさんNGNG
おれはNetbeans 4.0beta2使ってパフォーマンスが格段に上がってて感動した。
これかなりいいよ。
0149デフォルトの名無しさんNGNG
このスレの名前どおりSwingを重視だとまだまだNetbeansだな
J2se1.4.2までしか安定版はないのが欠点だが

4.0はあまりに3.6と違いすぎるのも問題が多そうだ
0150デフォルトの名無しさんNGNG
みんなEclipseばっかり使っててNetBeansなんか使ってないからモウマンタイ
0151デフォルトの名無しさんNGNG
もう少し太字の文字をきれいに表示してくれると良いのだけど。
アンチェリはぼやけるだけで余計見にくかったりする罠。
0152デフォルトの名無しさんNGNG
>>151
J2SE5使え。
0153デフォルトの名無しさんNGNG
>>151
捩れる位に同意。


何とかしてくれ、Swing manども!
0154デフォルトの名無しさんNGNG
>>153
J2SE5使え。
0155デフォルトの名無しさんNGNG
>>152
>154
J2SE5ってTrueTypeレンダラ改善されたの?
全然気づかなかったんだけど。
0156デフォルトの名無しさんNGNG
少なくとも、NetBeansの太字はかなり改善される。
アンチエイリアスもきれいになる。
0157デフォルトの名無しさんNGNG
J2SE5って遅くなってない?>Swing
0158デフォルトの名無しさんNGNG
むしろ、NetBeansが軽く動くようになった気がするのだけど。
0159デフォルトの名無しさんNGNG
確かに、5.0 付属の SwingSet2 デモの太字はかなりきれいになっていた
0160デフォルトの名無しさんNGNG
>>157
さわってみたら?
0161デフォルトの名無しさんNGNG
Swingでネイティヴハンドルを取得するのってANIを使わんとできない?
0162デフォルトの名無しさんNGNG
Swingはハンドル持ってるのはFrameだけだからな
あとは自前ですべて処理

もし本当にいじりたいのならAWTのJNIサポートをみてみるといいよ
レンダリングをJNIで処理とかできる
0163デフォルトの名無しさんNGNG
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/awt/1.3/AWT_Native_Interface.html
これのことかな?
0164デフォルトの名無しさんNGNG
ずっといじってきたけどVMのコア自体は1.4から5.0で速度的に大きく変わった点はないかな
1.4.1ではもちろんShift_JIS方面の変更が大きいし、一部ハードウェアアクセラレーションを使った
機能が追加されて体感速度はあがったけどね。

1.4.2ではほんのすこしで5.0はコンパイルがききやすいヘビーな処理は1.4.2と変わらない感じ。
ただしgcの速度が大幅に改善されていることと、インクリメンタルが別物になったとか大きい変更点はある。
起動時間はWindows使ってる限り改善されているように感じないし。
0165デフォルトの名無しさんNGNG
コピペ楽しいか?
0166デフォルトの名無しさんNGNG
「Swingをテストしたけど、全然速さ変わってない」っていってるやつは、どういうテストしてんだかね。
0167デフォルトの名無しさんNGNG
>>166
JFrame一個上がってくるまでの時間(=ほとんどプロセス起動とクラスロードじゃん)
をはかっているんだろう。
0168デフォルトの名無しさんNGNG
Swingのもたつきを感じる部分はほとんどがその最初のクラスロード時だし
SystemLAFしか俺は使ってないがたしかに体感速度的には変わってないよ

JTableとか重そうなのをこれから調べてみるかな
0169デフォルトの名無しさんNGNG
まぁ、1.4.2から劇的に変わると思っていたJava2Dが
Windowsではほとんど変わってないのにショック受けたしな
OpenGLも手元の環境では有効にならないし・・・動いたという報告も聞いたことない

BufferedImageのキャッシュはやり方知っていれば1.4.2でも適切に処理ができた
それでも敷居が下がったのはいいだろうね
0170デフォルトの名無しさんNGNG
またコピペ厨か
0171デフォルトの名無しさんNGNG
マルチポストじゃないか?
0172デフォルトの名無しさんNGNG
ArithmetricExceptionたんハァハァ(*´Д`)
0173デフォルトの名無しさんNGNG
Swing アプレットで paint をオーバーライドすると
配置したボタンなどが消えてしまいますが、なぜでしょうか?
同じ事を awt ですると消えないです。
0174デフォルトの名無しさんNGNG
>>173
paintComponent(Graphics)をオーバーロードしたまい
0175デフォルトの名無しさんNGNG
Swingはフレームが自前で子ウィンドウの描画をしてるから。
0176デフォルトの名無しさんNGNG
ん?時代はSWTだってのに、まだSwingとか使ってる香具師がいるの?
0177デフォルトの名無しさんNGNG
ん?時代はRCPだってのに、まだ時代はSWTとか使ってる香具師がいるの?
0178デフォルトの名無しさんNGNG
SWTはEclipse専用
Swingとくらべて大幅に早いってわけでもないしな
そもそもカスタマイズしたGUIを作るのが大変
0179デフォルトの名無しさんNGNG
そこでAWTですよ。
0180デフォルトの名無しさんNGNG
Java に wxWidgets を組み込むとか、
そういう計画ってないの?
0181デフォルトの名無しさんNGNG
>>180
http://www.wx4j.org/
0182デフォルトの名無しさんNGNG
>>181
ありがとう。はじめて知ったよ。
これがまともに使えるようになったら Swing も SWT もいらない
ってなことになったりするのかなぁ。
0183デフォルトの名無しさんNGNG
>>182
ならないだろうね。
0184デフォルトの名無しさんNGNG
>>183 どうしてそう思う?
0185デフォルトの名無しさんNGNG
>>184
特に理由は無いよ。
続きはスレ違いだから他所でやってくれ。
0186デフォルトの名無しさんNGNG
>>185
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0187デフォルトの名無しさんNGNG
そういえばwxのスレ加速してるな
0188173NGNG
>>174
ありがとうございます。できました。
原因を聞いておきながら、実は解決策を望んでいたわけです。

しかし、また新たな問題が出ました。
JPanel のサブクラスの paintComponent(Graphics) で描画しようとしてますが
その上に乗っているラベルやボタンなどの上には描画できません。
どうすれば良いでしょうか?
ちなみに super.paintComponent() はやっています。
0189デフォルトの名無しさんNGNG
>>173
子コンポーネントが上に載ってるなら
そっちで上書きされるのがまともな挙動だと思うぞ

その上に描画したいのなら普通はGlassPaneとかでやるんじゃないかな
JFrame#setGlassPane(Component)ね
0190デフォルトの名無しさんNGNG
173はどうもGUIの考え方がおかしいな
0191173NGNG
>>190
すみません。やろうとしている事を言えば分かってもらえると思います。
今ゲームを作っています。そのゲームは 5*5 のマスがある盤が 2つあって
そこをそれぞれの戦車が自由に移動できます。
そして、相手の戦車に 2回弾を当てると勝ちです。
動作は 3つのコマンドを一気に入力して 2つの戦車を同時に動かします。
コマンドはガード、弱い弾、強い弾、移動があります。
ガードは弱い弾だけ跳ね返す事ができます。
コマンドは盤面の上にあるアイテムを取ると使えます。

あとの詳しい説明は GUI には関係ないので省略しますが、このゲームの構造から
盤をクラスにしました。しかし、弾を撃つアニメーションは 2つの盤をまたがって
しまいます。そこで、それらをパネルの上に置いてそのパネルに描画すれば良いのでは
ないかと考えました。
0192デフォルトの名無しさんNGNG
そういう用途なら、まさにGlassPaneが適している。
厳密に言うと、GlassPaneを使うよりは別のレイヤーに弾をおいた方が
よさそうだが。
LayeredPane, GlassPaneなどのキーワードでAPIドキュメントを調べるのだ。
0193デフォルトの名無しさんNGNG
Swingでやるならレイヤー勉強すればいいね

俺ならJava2Dで描画部分はまとめるけどね
0194デフォルトの名無しさんNGNG
>>191
> あとの詳しい説明は GUI には関係ないので

そこにある詳しくない説明もGUIには関係ないと思うのだが・・・
ま、オレも普通に1枚のパネルに描画するけどね。
0195デフォルトの名無しさんNGNG
>>191
動きのあるヤツなら、LayeredPaneなどSwingに重なり計算を任せずに
自前で重なり管理してやったほうがよくないか?
# スプライトクラスって誰か作ってないのかねぇ?
0196デフォルトの名無しさんNGNG
>>195
一番作っていて楽しい部分だからみんな自分用にガリガリ書いていると思われ
つーか、Java2D機能豊富で透過指定も余裕だからなぁ
そこまでほしいクラスでもないと思われ
0197デフォルトの名無しさんNGNG
ハードウェアのスプライト機能が使えるなら、必要だね。
0198デフォルトの名無しさんNGNG
Java2Dってハードウェアアクセラレーションつかってるの知らないやついたのか
0199デフォルトの名無しさんNGNG
JOptionPaneのように、
ダイアログを開いて、ボタンを押したときに呼んだ箇所へ値を返す仕組みは、
どのように作ればよいのでしょうか?
0200デフォルトの名無しさんNGNG
>199
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/JDialog.html
0201デフォルトの名無しさんNGNG
>>199
難しく考えないで。
いろんなやり方がありますから。。。
0202デフォルトの名無しさんNGNG
Java初心者の質問スレにもポストしましたがスルーされてしまったのでこちらで質問させてください。

SwingでJProgressBarを使った開発を行っているのですが、
データ処理中にProgressBarを動作させる方法がわからず困っています。
JProgressBar1.setValue(JProgressBar1.getValue() + 1);
こんなのをフツウの処理(Threadではない処理)の中でぐるぐる回すだけではダメなのでしょうか?
0203デフォルトの名無しさんNGNG
>>202
わずか2時間足らずの間レスがつかなかっただけでスルー扱いとは、随分と気が短いですね。
とりあえずこれでも読んで落ち着いてください。
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html
0204デフォルトの名無しさんNGNG
ちゃんとsetMinimumとsetMaximumしてるのか?
0205デフォルトの名無しさんNGNG
>>202
ちょっとググったら日本語のやつがみつかったけど?

ttp://taka-2.com/jclass/JProgressBar.html
0206202NGNG
>>203
>>205
をよんでみましたが私がやろうとしている処理ではプログレスバーを動かすことができませんでした。
処理中に画面が固まる。。。
というわけで
Runnableなクラスの中でぐるぐる回しつつ
jProgressBar1.paintImmediately(rectangle);
とかで強引にコーディングして逃げることができますた。お騒がせしますた。
0207デフォルトの名無しさんNGNG
それでいいだろもしかしてイベント中にすべての処理やろうとしてたとか?
0208デフォルトの名無しさんNGNG
SwingのGUI絡みの設定を変える時はinvokeLater()経由しないと駄目だったんじゃ
なかったっけ。
すみませんうろ覚えです。
0209デフォルトの名無しさんNGNG
ワーカスレッドから UIスレッドのUI部品を更新するときには invokeLater は必要
http://java.sun.com/developer/onlineTraining/GUI/Swing1/shortcourse.html#JFCProgress
0210デフォルトの名無しさんNGNG
202はまずスレッドから勉強するべし。
0211デフォルトの名無しさんNGNG
GUIをこれからやるならどの本がオススメでしょう
0212デフォルトの名無しさんNGNG
技術評論社のGUI徹底攻略とか?
0213デフォルトの名無しさんNGNG
>>21
あの変な表紙の本は?
0214デフォルトの名無しさんNGNG
>>211
Java GUIコンポーネント完全制覇
とか
0215デフォルトの名無しさんNGNG
>>213
萌え絵が表紙のやつ?おれは買ったよw
0216デフォルトの名無しさんNGNG
あの萌え絵の本は評判が良いらしく、売り切れてるな。

まあでも地味に「Java GUIプログラミング」がいいと思う。
0217デフォルトの名無しさんNGNG
そこらへんの3冊が定番かね?
0218デフォルトの名無しさんNGNG
>>216
買ったけど、地の文、漢字の誤変換大杉。萎える。
少数派だろうが、こういうのが気になる人は止めとけ。
初版だけかな?とりあえず校正の人は責任をとって欲しい。
0219デフォルトの名無しさんNGNG
萌え絵の奴ってそんなに良いのか!
CPUの創りかたも萌え絵だったけど良かったなぁ
0220デフォルトの名無しさんNGNG
何の本だったか忘れたが、導入部だけ萌え文で本文が目に悪い漢字専門用語のオンパレードの解説書に引っかかって、それ以外萌え本は眉唾
0221216NGNG
いや俺は実は持ってない。アマゾンでの評価がやたら高いので本屋に買いに行ったら
売り切れてて買ってない。

↓その本
ttp://www.amazon.co.jp/exec/obidos/ASIN/4839913862/qid=1101031176/br=1-2/ref=br_lf_b_1/249-4488755-1849164
0222デフォルトの名無しさんNGNG
値段が安いからいいね
Java GUIプログラミングと完全制覇のどちらも高いし
でも量考えるとGUIプログラミングの方がイイのかな
0223 NGNG
萌え本は字が小さくて自分にはパッと調べにくいから買うの止めた。
三分冊の本も冗長すぎる気がする。
完全制覇のやつもいいとは思わなかった。AWT用のコードと説明が長すぎ。
いくらAwtがもとにあるとはいえ、不要に厚くなって使いづらいしSwingの深い情報ないし。
CoreJavaのGUIの説明みたいなのがいい。
レイアウトマネージャーに限ってはプロフェッショナルJavaがいい。
0224デフォルトの名無しさんNGNG
やっぱりCore JAVAに行き着くのかw
0225デフォルトの名無しさんNGNG
グラフィックJava2
Vol.1 AWT編
Vol.2 Swing編「上」
Vol.2 Swing編「下」

値段は高いし、量も多いから読むの大変だけど
図書館に置いてあったから借りて読んでる
まぁ、俺は複数の本を少しづつ読みながら先に進んでるからお薦めという本はない
0226デフォルトの名無しさんNGNG
萌え絵の本って網羅してるのかな
0227デフォルトの名無しさんNGNG
萌え絵の本は網羅まではしてないらしいよ。
ただGUIプログラミング初心者のスタートラインとしては最適らしいぞ。
アマゾンの感想読んだだけだけど....
0228デフォルトの名無しさんNGNG
どれ読んだら良いんだよヽ(`Д´)ノウワァァン
0229デフォルトの名無しさんNGNG
>>228
どれでもいいよ。表紙で選べ
0230デフォルトの名無しさんNGNG
表紙で選ぶと「萌え以外」になるなあ。
0231デフォルトの名無しさんNGNG
お持ち帰りまでが大変だ
0232デフォルトの名無しさんNGNG
0233デフォルトの名無しさんNGNG
萌え絵が表紙の本なんて日常的に買ってるだろ
0234デフォルトの名無しさんNGNG
Java関連萌え書籍スレはここですか?
0235デフォルトの名無しさんNGNG
萌え絵の本って何?
0236デフォルトの名無しさんNGNG
これ?
「Javaアプリケーション作成講座〜Swingプログラミング徹底攻略〜」
http://book.mycom.co.jp/book/4-8399-1386-2/4-8399-1386-2.shtml
■ このスレッドは過去ログ倉庫に格納されています