[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 03/03 09:58 / Filesize : 99 KB / Number-of Response : 402
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java低速GUI Swing 8



1 名前:デフォルトの名無しさん [2008/11/21(金) 11:24:21 ]
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。

Java低速GUI Swing 7
pc11.2ch.net/test/read.cgi/tech/1204155623/
Java低速GUI Swing 6
pc11.2ch.net/test/read.cgi/tech/1190807478/
Java低速GUI Swing 5
pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
pc5.2ch.net/test/read.cgi/tech/1062271447/l50

150 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 16:56:28 ]
最初に>>149と同じようにrevalidateを試しましたが、他には
初めからsetVisible(false)でpanelにaddしておいて
スレッドでsetVisible(true)にするのもうまくいきました。

151 名前:148 mailto:sage [2008/12/27(土) 18:44:27 ]
>>149
>>150
返事ありがとうございます。

revalidateについて調べてみますね。
もし自分が理解できなかったら、>>150 さんの言う方向でやってみたいと思います。

ありがとうございましたorz

152 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 18:48:32 ]
JComponent#setVisible()を呼ぶともれなくrevalidateが呼ばれる件について

153 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 15:45:53 ]
Swingでインクリメンタルサーチを実現したいのですが、
便利なクラス(インクリメンタル用)みたいのものはあるでしょうか?
自力で実装しなければならないとき、ヒントになる手法があれば教えていただけないでしょうか?

154 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 16:15:20 ]
Swing Hacks

155 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:57:10 ]
どのコンポーネントでインクリメンタルサーチするの?

156 名前:デフォルトの名無しさん [2009/01/08(木) 00:23:41 ]
JFrame#setLocation()が効かないんだけど、同じ現象遭遇してる人いる?
JFrame#setVisibe(true)の前でも後でも全然きかない。

JFrame#setLocationByPlatform()もだめ。。

157 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 05:15:38 ]
使用環境も書かず、どう効かないか、最初からなのか何かのきっかけでそうなったのかも書かず。
ウインドウマネージャ次第では強制的に再配置している可能性も。

158 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:51:45 ]
>>153
>Swingでインクリメンタルサーチ

Googleのクエリ候補表示みたいな事を
コンボボックスでやりたいのかな?

それともいわゆるEmacsみたいなインクリメンタルサーチ
をJTextComponentで実現したいのかしら?



159 名前:156 [2009/01/08(木) 19:25:06 ]
>>157
すまん、
実行環境はWinXP、
開発環境はEclipse3.4
ビルドはJDK1.6.0_03、
実行JREは1.6.0_07に設定
現象は、どこにsetLocation()してsetVisible(true)しても画面左上にJFrameが表示されてしまう。
最初からです。

いかがなもんでしょう!?

160 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:39:57 ]
>>159

ComponentListenerを使って、
いつ誰が左上に動かしてるのか見張ってみるのはどうでしょう。

161 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:26:46 ]
レイアウトマネージャがよしなに配置してるだけじゃないの?
ソース晒せ。


ふるいやつだと、わざわざgetContentPane().setLayout()するのが面倒だなあ。
ヲレクラスで更にラップするのがめんどくさがりにはよさそうだ。

162 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 08:09:06 ]
update 7ってバグ多くなかったっけ?

163 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 08:39:20 ]
>>159
import javax.swing.*;
public class Foo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
//f.setLocation(300, 300);//どちらか
f.setLocationByPlatform(true);//どちらか
f.setVisible(true);
}
});
}
}
みたいに単純化したものでも同じ現象になる?
うちはWinXP+1.6.0_11だけど、setLocationでもsetLocationByPlatformでもきちんと機能する。
Windowsの標準シェルならウインドウマネージャが強制再配置するようなことはなさそうだし…

164 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 09:02:45 ]
そこでHashMapを使うんだ!

165 名前:デフォルトの名無しさん [2009/01/10(土) 06:09:58 ]
>>163
JFrameのコンテンツペインには何も追加しないの?
コンテンツペインに追加したコンポーネントのpreferredSizeに
スクリーンをはみ出さない程度のDimensionを設定したら、
setLocationがちゃんと効いた記憶があるんだけど。
違ってたらごめん。

166 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:08:05 ]
コンポーネントなしのタイトルバーだけのJFrameでもsetLocationは効くのが普通だけど
>>159のソースが分からないことには何とも言えんから問題の切り分けってことなら
>>163のようなものでも動作がおかしいのならJava環境かWin環境自体が変な可能性大だし
削ぎ落としたものは大丈夫なんだったら
JFrame自身の位置情報に影響を与えるようなコンテンツが入れられているか
自分でも知らないうちに別の場所で位置を書き換えているようなコードを入れているかなので
差し支えない範囲でソースを出してもらわないと他の人間には判断のしようがないと思う

167 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:00:09 ]
とりあえずソースを晒せ。それからだ。

168 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:31:55 ]
JFrame でアプリを作り、Mac で起動し、
Mac の上部から 「〜〜を終了」 を選んで終了した際に
ドキュメントが保存されていない場合には保存確認をとり、
キャンセルされたらアプリケーションの終了をキャンセルしたいのですが、
こういうことはどのようにすればいいのでしょうか?



169 名前:デフォルトの名無しさん [2009/01/11(日) 18:44:18 ]
JFrame#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)
とかじゃなかったっけ?
で、WindowListenerで閉じるときの処理を書く。

170 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:09:41 ]
それが、ウィンドウを閉じた時はそこにくるんですが、
「〜〜を終了」 の時はそこに来ないようなんです。

addShutdownHook なら一応保存確認することはできますが、
アプリケーションの終了をキャンセルすることまではできなくて、
どうしたものかと思っています。

171 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:00:30 ]
>>168
developer.apple.com/jp/qa/qa2001/qa1187.html

172 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:13:21 ]
>>171
ありがとうございます。できました!

173 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:20:49 ]
高橋麻奈の優しいJAVAで一通り覚えた。けどこれから何をすればいいのか分からん。
あれ。なんでJAVAを勉強しようと思ったんだっけwwwwwwww

174 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:07:56 ]
やさしいJavaとか書いたらまあ湧いてくるじゃないか…

175 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:33:09 ]
やさしいJavaと聞いてとんできました

176 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:35:42 ]
やらしいJavaですか?(*ノノ*)キャー

177 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:44:10 ]
エロく無いと学習意欲がわかない訳ですね。

マナタソに飽きたのなら他の娘に乗り換えてみるのも一つの選択肢。浮気性は嫌われるかもだが。
はじめてのJavaとか童貞が飛びつきそうなマヌアル本も必要な時期だなwww

178 名前:デフォルトの名無しさん [2009/01/13(火) 21:43:44 ]
もうすこしスレッドの扱いを楽に出来ないかね?



179 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:47:46 ]
楽になったじゃないか

180 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 04:50:22 ]
スレッドのどの部分が楽じゃないか書かないと分からないよ。
単に一般的でない変な使い方しようとしてるだけとか?

181 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:26:18 ]
個人的には ThreadLocal と ThreadPool あたりが導入された時点で割りと満足だなー

182 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 13:01:59 ]
ThreadPool ??

183 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 15:46:13 ]
>>182
java.util.concurret.ThreadPoolExecutor とその関連

184 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 16:22:01 ]
スレッドの仕組み的な話じゃないのか
描画スレッドとかさ

185 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:19:39 ]
ここでSwingWorkerが出てこないのがこのスレのレベルの低さ

186 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 02:39:01 ]
土方生活が長いとそんなものでも楽だと思うものなんでしょうか?

187 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 03:34:36 ]
SwingWorker最低限絞ったAPIだからな。
使うっちゃ使うが小規模なアプリだな。

188 名前:デフォルトの名無しさん [2009/01/16(金) 01:08:24 ]
JavaFXのスレが立たないのは、なぜなんでしょ?



189 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 03:34:42 ]
誰も使ってないからに決まってるじゃないか。


描画スレッドで特殊な用途?
サブミリナルでも埋め込みたいとか? ちらつき程度ならダブルバッファ使って描画してれば充分だろうし。

190 名前:デフォルトの名無しさん [2009/01/16(金) 23:59:30 ]
>>189
誰も使いたがらない理由は、たとえば何なんでしょ?

191 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:33:53 ]
・重い
・配布サイズでかい
・ツールが弱い

192 名前:デフォルトの名無しさん [2009/01/17(土) 00:57:37 ]
>>191
なるほど。
逆に軽くて、配布サイズ小さくて、ツールがよければ使うってことですかなぁ。

193 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 09:15:20 ]
名前が今一ってのもあるな。
FXよりはFAとかDXとかのほうがよかった感じ。

194 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:16:23 ]
FXとかFAとかDXとか言われると、PC98を思い出してしまうぜー。
PC98だと終わってしまうから、JavaNXでどーよ。

195 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:17:53 ]
FXって投機臭がする名前だ

196 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:25:10 ]
>>193
ぶっちゃけJavaがついてる時点で

197 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 11:56:13 ]
>>193
頓挫した「winFX」への当てつけじゃないの?

198 名前:デフォルトの名無しさん [2009/01/17(土) 16:27:39 ]
>>191
ttp://www.google.co.jp/trends?q=JavaFX%2CAdobe+Flex%2CMicrosoft+Silverlight&ctab=0&geo=all&date=all&sort=0

重くて、配布サイズでかくて、ツールがいまいち分かりにくいSilverlightが人気なのは、なんなんですかねえ。



199 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:30:15 ]
人気・・・・・あるのか・・・・?

200 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:42:49 ]
JavaFXと比べれば

201 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:47:23 ]
選択肢がなければ使わざるを得ない

202 名前:デフォルトの名無しさん [2009/01/17(土) 17:12:54 ]
>>199
あ、失礼、人気じゃないすね。Googleトレンドとかで、比較してみてということ

>>200
そいうことす

203 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:30:37 ]
Flexでいいじゃん。

204 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:28:05 ]
>>203
%%
%%


205 名前:デフォルトの名無しさん [2009/01/17(土) 22:51:56 ]
配布サイズって関係あるのか?毎日ダウンロードを繰り返すわけでもあるまいに。

206 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:03:45 ]
【初心者】Java質問・相談スレッド122【歓迎】
pc11.2ch.net/test/read.cgi/tech/1229255937/

次スレが無い

207 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:18:03 ]
>>206
気にするな

208 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:19:16 ]
本屋にjRubyの本有ったので眺めてみたら、rubyからswing呼べるのな。楽しそうだわwww



209 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:32:49 ]
JavaScriptからでも何でも呼べるじゃん・・・

210 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:05:44 ]
groovyからry

211 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:45:10 ]
PHPか(ry

212 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:46:24 ]
マジレスすると、言語を生かしたSwing呼び出しという点では、Groovyだな。
SwingBuilderはなかなかいい。

213 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 04:39:31 ]
Cからswing使ってる漏れはどうやら勝ち組(ry

214 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 06:39:50 ]
JTreeでソートしたくて

((DefaultTreeModel)getModel()).removeNodeFromParent(node);

これでノードを外して

parent.add(node);

これでノードを追加してソートしてたんよ

でも、これだと開いてるツリーが閉じてしまうんだ。
開いてるツリーそのままでソートする方法しらない?

215 名前:214 mailto:sage [2009/01/25(日) 23:43:39 ]
とりあえず、自己解決。

用意されてるメソッドでそれっぽいの見つけられなかったから、
現在展開してるパスを全部しらべて、ソートが終わってから開きなおすようにしたぜ。

216 名前:デフォルトの名無しさん [2009/01/26(月) 01:38:21 ]
久々にSwing使ってみたけど、相変わらず酷いなぁと思う

ここのスレの人はなぜSwingを使うのだろう
C#やVB.NETじゃダメなの?
LinuxやMacで動かしたいわけじゃあるまいし。

217 名前:デフォルトの名無しさん [2009/01/26(月) 02:09:41 ]
>>216
いや、Linuxでも動かしたい。

218 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 02:49:22 ]
>>216
いや、Solarisでも動かしたい。



219 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 05:32:01 ]
マクで動かそうと思うと大変だから止めとけ。あれは異世界。存在しない物として扱ったほうが平和。


swing程度で十分というのが大きい。awtでもむしろ十分だが。
まあvs使えないだけとも言うが。コントロールをちまちまマウスで配置するくらいならコードで記述したい訳だ。

220 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 19:21:07 ]
ポトペタなしのswingいじるのって、html手打ちするようなもんですよね

ポトペタありでswingいじったことないんですけど

221 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:35:16 ]
HTMLもアドビのソフトでちまちま設定するより、メモ帳で書いたほうが速いしなあ。

222 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:30:33 ]
HTMLは手打ち以外の選択肢はないな
大昔は必要がなかったし、今はカススタイラーゆえ意味がない

223 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:32:51 ]
ポトペタありのSwingってのもキモそうだな。
なんか、モデルやコントローラまわりで歪なコード吐きそうだ。

224 名前:名無しさんに接続中… [2009/01/27(火) 16:31:56 ]
SwingはなぜVBのようなデザイナーがないのだ?


225 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:54:49 ]
おまえらNetBeansを無視するなよ。
Swing+JSR295+JSR296と組み合わせてポトペタできるくらいにまでなってるんだぞ。
ttp://builder.japan.zdnet.com/sp/07ide/story/0,3800082821,20350058,00.htm

226 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:06:14 ]
HTMLも、業務アプリならポトペタがいいよなあ。

227 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:28:16 ]
まあそういうときはAdobe Dreamweaverが最低ラインだな。

228 名前:デフォルトの名無しさん [2009/01/29(木) 06:43:53 ]
swingはなぜ流行らないんだ?



229 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:25:30 ]
デカくて重いからでないかい

230 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:54:08 ]
>>228
GUIフレームワークで流行ってるのってなに?

231 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:59:55 ]
MFC、VB


232 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:01:37 ]
そこらへんは他に選択肢ないから使われてるだけじゃ

233 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:18:38 ]
そのとおりだと思うけど、
Swingはなぜそれらの代替になりえないのか・・・

速度か?やはり速度なのか?

234 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:20:45 ]
Mac版のリリースが遅すぎる!

235 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:21:56 ]
先に普及したものが圧倒的に強いし。
単にSwingに既存のものを置き換えるほどの魅力がなかったってだけでしょ。

236 名前:デフォルトの名無しさん [2009/01/29(木) 09:31:29 ]
>>233
自分は長いことWindowsアプリケーションを作ってきたんでつが、V2Cという2chビューワを使い始めてSwingアプリの軽快さにびっくりしたです。
V2Cが純Swingじゃなかったらスミマセン

237 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:37:22 ]
いや、純だよ。
やっぱJavaはもうちょいデスクトップアプリケーション強化して、それと速度に関してもどうにかアピールしないとなぁ

238 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 13:26:10 ]
javaはもっさりってのが一般的な常識だからかもしれんね
あと、表示が微妙にださかったり

俺はjavaしかまともに使えないから、swingをやってみた。
swingでダメだったらMS製品買えばいいかなーって感じで。

java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね



239 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 14:11:25 ]
>>238
> java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね
じゃあ Express Editions でも入れて C# とかやればいいと思うよまじめな話


240 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 15:46:58 ]
Linux系のGUIをJavaでSwingでってわけにはいかんのか?
用途としてはもうそっちしかなかろう

241 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:03:25 ]
Hashtableが保持している値をJTableに表示させていて、
Hashtableの内容が変更されたら、それと連動してJTableの表示も変更されるようにしたいのですが
何か常套手段みたいなのが有るんでしょうか?


242 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:55:15 ]
>>241
レンダラーやエディターで意図したものにあってるかな?

243 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 19:24:19 ]
>>241
10msおきにHashtableを監視してJTableにイベントディスパッチジョブ投げるスレッドを常駐させる。

Hashtable派生させたりMapやTableModelでラップしてもいいなら、他にも手はある。

244 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 19:25:19 ]
BeansBindingとかでなんとかならんの?
使ったことないけど

245 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 20:25:16 ]
>>243
あ、言われちゃった。
手抜き実装だけどこんな感じ。2秒ごとにMap操作して、JTableが更新される。
bucyou.mydns.jp/up_source2/codeview.php?u=ok&fn=2
>>244
ならんはず。

246 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:17:11 ]
Hashtable使うのをやめる

247 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 04:09:12 ]
10msおきに監視ってコスト高そうだ。負荷凄いだろwww
変更する処理にトリガ噛ませてイベント受け取るようにしたほうがよく無いか?


ウェブ系とかjava前提の製品とかだとインストーラからjava GUIだったりはするね。
インストーラ作成用との便利なフレームワークとかあるんだっけか?


表示が微妙にださいってのは人それぞれだからなあ。窓すらださいって言い出すマカみたいな変人も居るし。マルチモニタとかにすら対応できてないマクのほうがださいだろって感じだが。


GCがアレなのか、使ってるともっさり感が増すし、メモリも喰いまくってるのが駄目だな。
それ故、MFC, VBにすら負けてしまう。java使いが作る側には不満無いけどね。純粋にアプリユーザの側にはjavaじゃないほうが快適。


248 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 07:39:08 ]
>>247
>変更する処理にトリガ噛ませて
それが243の言ってる”Hashtable派生させたりMapやTableModelでラップ”で、
その実装が、244のソースだろ。

MFC、VBには負けるかもしれないけど.NetのWinFormsとはいい勝負だと思う。
場合によってはSwingのほうが速いし。軽い。



249 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:30:43 ]
>>247
スレチだがマルチモニタ環境ってのはMacのほうが歴史がずっと長いんだけどな…
Windows XPじゃマルチモニタでカラープロファイルを別のをあてる、とかはできないしね。Vistaは知らん。
まー最近はWinのドライバのほうがマルチモニタでできること多いけれどもw

250 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:38:42 ]
winのマルチモニタはMEからだっけ?98からだっけ?

個人的に、Macが先でMSがそれを追いかけたってのは、MSが先行するより信憑性がたかいw

251 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:52:35 ]
ちょっと調べてみたが、
win98からマルチモニタ対応、しかしMacの対応時期がわからんかったw

252 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 13:35:57 ]
助けて下さい。

画像を拡大表示しているのですが、アニメーションGIFの拡大表示で困っています。

JLabelのアイコンにアニメーションGIFを設定すると、
フレーム切り替えのたびに以下のメソッドが実行されます。

public void paint(Graphics g)
public boolean imageUpdate(....

この時、毎回アニメーションGIFの画像を拡大してると表示がもっさりしてしまいます。
だから、一度拡大表示したフレームは拡大したイメージを保存しておいて、再利用したいのです。

そこで問題になるのは「表示しようとしてるのは何フレーム目なのか?」
これが分からないことなんです。

何か分かる方法しってる人いませんかorz

253 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 16:59:16 ]
カラープロファイルなんて印刷屋でもない限りどうでもいいだろ。

問題なのはメニューとか操作GUIの設計。
マクの実装だと、メニューはメインモニターにしか表示されないはず。
窓や犬は、メインウィンドウ自体にメニュー付いてるから、メインモニターとかサブモニターとか関係無く自由に使える。

254 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 17:45:12 ]
winも結構トンチンカンな動きするソフトいたよな

サブモニタで右クリックしたら、メインモニタにメニューが出たり、
サブモニタで最大化したら、メインモニタで最大化したりw

サブモニタで最大化したら、メインモニタの解像度に広がった時は非常に困ったw

255 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:29:06 ]
サブモニタから起動したJARアプリのスプラッシュは、
やっぱりサブモニタに出て欲しいなあ。アプリはちゃんとサブ側に出る。
あ、当方WinXP+Sunの1.6系Java。

そのへん、Macはどうなんでしょ。

256 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:39:50 ]
サブモニタから起動したかってどうやって判断するんだろ?

257 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:48:28 ]
> アプリはちゃんとサブ側に出る。
前回終了時の表示位置覚えてるだけじゃなくて?

258 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:00:26 ]
サブモニタから。。。起動?

俺のwinはタスクバーがサブモニタにあるんだが、これだと全部サブモニタに出ないとおかしくなるぜ

>>257でいいと思う



259 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:37:13 ]
Windowsの流儀は知らないけどタスクバーがある方を
プライマリモニターと呼ぶわけじゃないんだ?

260 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:52:01 ]
winのタスクバーはメインもサブも移動可能
てなわけで、俺のタスクバーはサブモニタに配置してあります

メインかサブかは、画面の解像度とか設定する画面で設定できるっす

261 名前:255 mailto:sage [2009/01/30(金) 22:56:24 ]
・サブモニタのデスクトップ上のJARファイルをダブルクリック
・サブモニタに移動したエクスプローラからJARファイルをダブルクリック

いずれもサブモニタにアプリが出る。
ジオメトリ関連でやってることはsetLocationByPlatform(true)のみ。
これを外してもやはりサブモニタに出る。

サブモニタのコマンドプロンプトからjava.exe経由で起動すると
さすがにメインモニタにアプリが出た。
サブモニタのNetBeansから起動してもやっぱりメインモニタ。

262 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:03:33 ]
>>261
おもすれー

ちょっと試しになんか作ってみよう

263 名前:デフォルトの名無しさん [2009/01/30(金) 23:09:57 ]
皆さんに聞きたいのですが、javaでどんなデスクトップアプリつくってますか?

今自分はタスク管理系アプリを作成しています。
メモ帳でいいじゃんはいいこなしでw

264 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:22:40 ]
>>263
社内用にファイル処理系のアプリ。

265 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:33:15 ]
>>263
エロ画像を楽しく閲覧するためのツール

266 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 00:11:06 ]
>>263
2chのスレッド監視してエロ画像勝手に収集するツール

267 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 00:30:01 ]
>>263
携帯電話とmacとwinでスケジュールを一元管理するソフト

268 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 00:50:08 ]
ADVエンジン



269 名前:デフォルトの名無しさん [2009/01/31(土) 01:01:11 ]
>>263
無駄にリッチなUIをもつ画像ビューワー

をJavaFXでつくりたい。

270 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:00:02 ]
Swing学習中なんだけど、ドローツールみたいなのを作るとき、以下のどれがいい?
1) Canvasみたいなコンポーネントを作って、図形を全部自前で管理する。
2) 図形の種類毎にコンポーネントを作って、Panelとかに貼り付ける。
3) それ以外。思い付かないけど。


271 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:29:30 ]
1かな。
ありがちなパターンだとShapeクラスを作ってそのクラスを継承したクラスを作る。
でJPanelを継承したShape描画用のコンポーネントを作って、paintComponentですべてのShpaeを描画する。

272 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:16:09 ]
>>270
ネットワーク・グラフ描画用のライブラリをいくつか使ったことがあるんだけど、
そのどちらでもない設計が多かった。>>271が近い。

図形の管理はドロー用コンポーネントが行い、
実際の描画は図形オブジェクトに委譲している、と言えばいいかな。

図形の種類ごとにクラスを作るのは2と一緒だけど、
これらのクラスは独自のクラス階層を構成していて、
つまりJComponentのサブクラスではないので、そのままではSwingに乗っからない。
代わりに、図形を載せて描画する専用のSwingコンポーネントがある。
このドロー用コンポーネントは、paintComponentをオーバライドしていて、
addされた図形オブジェクトすべてに対して、paint系メソッドを呼ぶようになっている。
これらの図形クラスのpaint系メソッドは、各図形のための適切な描画を行うことになっている。

図形の追加の度にドロー用コンポーネントを変更しなくていいので、すっきりする。
Open-Closed Principleに合致しているね。

ライブラリによっては、図形クラスのpaint系メソッドがさらに別のオブジェクトに委譲可能で
ここがAdaptableだったり(JListのレンダラみたいなの)、
図形クラスを、Swing非依存のモデルクラスと、Swing依存のビュークラスに分けて設計していたり、
さまざまだった。
この手のライブラリはいろいろあるので、見てみるといい刺激になると思う。
挙げるなら、OpenJGraphとかJGraphとかJungとかかな。

273 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:59:22 ]
「もしやJComponentを再発明しているのでは?」と思ったら、
思い切って資産捨てて透過JComponentベースで作り直す勇気も必要かも。

ドローツールとのことなので、まずは
・位置サイズのgetset、
・可視性のgetset、
・クリップしたGraphicsを渡すpaint
ぐらいの軽い独自インタフェースで十分だと思うけど。

274 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:07:19 ]
>>271-272
thx! 「グラフィックJava2」とか「Filthy Rich Clients」とか
引っくり返しながらいじってるんですが、既存コンポーネント以外
の話になると極めてプリミティブな部分しか載ってなくて、
どういう風に設計すればよいか、という部分については頭を
かかえてたので参考になります。

275 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:16:38 ]
>>273
や、今のところ、「JComponentのサブクラス作って、その上にマウスで
Rectangleが描けるようにナッター\(゚∀゚)/」というレベルなので……。

その先に進もうとして、「これをつかんで移動させたり変形させたりしよう
と思ったら、図形もJComponentのサブクラスにした方がええんちゃうか?」
というのが質問の発端です。

276 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:37:47 ]
JDrafterを参考にするといいかも

277 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:09:59 ]
>>276
宣伝乙。

278 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:36:34 ]
いや、宣伝じゃないよ
あれは素直にすごいだろ
jadで十分読めるから読んでごらん



279 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 02:05:58 ]
スプラッシュなんてちゃんと見ないからどうでも良いな。
むしろ消せるオプションを標準実装にして欲しいくらいだ。気持ち程度、余計な事をしない分、起動が速く成るだろうし。


窓は融通が利くけど、マクはマクらしいとアポーが決めてるアプリの使い方しか出来ないように強制されてるのが嫌。
俺が買ったものくらい自由に使わせろって。

280 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:12:19 ]
>>240
既存のフロントエンドをSwingに移行させるんなら
そこそこ市民権を得そう。

281 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 05:31:37 ]
>>279
JavaSE6の機能でスプラッシュ出してるなら、起動速度は変わらない

282 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:00:55 ]
つかスプラッシュ消えるの速すぎてタイトル嫁ねえw
一定以上の時間指定したい

283 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:12:28 ]
起動をもっさり遅くすればいいんじゃね?

起動すればソフトのタイトル見えるんだし、わざわざ邪魔なスプラッシュ表示しとく意味ねえよ

284 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:38:01 ]
java6のスプラッシュはVM起動時に表示されるんであってアプリ起動時に表示される訳じゃないからアプリをもっさりさせても意味ないよ。

285 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:40:56 ]
まじかよw

スプラッシュって起動中だからちょっとまっててな。ってニュアンスが一番よさげなのにw

286 名前:デフォルトの名無しさん mailto:sag [2009/02/02(月) 13:44:23 ]
きっとスレ違いでは無いはず・・・。

#include<gcj/cni.h>
#include<javax/swing/JFrame.h>
#include<javax/swing/JButton.h>
#define JS(str) ::JvNewStringUTF(str)
int main(void)
{
 ::JvCreateJavaVM(NULL);
 ::JvAttachCurrentThread(NULL,NULL);
 {
  JFrame *frame=new JFrame(msg);

  frame->add(new JButton(JS("Okey")));
  frame->setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE);
  frame->pack();
  frame->setVisible(true);
 }
 ::JvDetachCurrentThread();
 return 0;
}

JFrameが表示された後、即main関数を脱出してしまう。
当然といえば当然だが、これを上手いこと防ぐ方法は無いか?

287 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:02:38 ]
frame->setVisible(true);の後ろに↓を足したらいいんじゃね?

try {
while (frame->isVisible()) {
Thread->sleep(1000);
}
} catch (InterruptedException e) {
// 華麗にスルー
}


288 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:39:52 ]
>>282
Frameの表示を遅らせれば?



289 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:08:46 ]
>>287
スレッドで分離する方法とかもあるんだけど、
定石的な方法は無いだろうか?

>>288
どういう事?いまいち想像が付かないが。

290 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:24:38 ]
>>289
普通にjavaだけでやる分には、main抜けても問題ないからわかんないっす。

そして、俺も助けて欲しいことが。

ttp://sandalman-no-blog2.blogspot.com/2008/01/java6-jtree_03.html
ここのソースなんだけど。

JTree内でDnDすると、ツリーが閉じてしまうんだ。
JTreeの以外からドラッグしたのをJTreeにドロップする分には閉じない。

JTreeからJTreeにDnDするとドロップされた側が閉じてしまう。
わけわかんねーっす、誰か助けて。

291 名前:290 mailto:sage [2009/02/02(月) 22:39:56 ]
自己解決したっす。

// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();

292 名前:290 mailto:sage [2009/02/02(月) 22:41:26 ]
途中送信orz

node.removeFromParent();
((DefaultTreeModel) tree.getModel()).reload();



// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();

こうしたら閉じなくなったっす。

node.removeFromParent();ってなんか使いにくいんですかね?

293 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 04:35:28 ]
ほんとに助けてほしいなら、わかんねーすっとかムカつく言葉遣いやめておいたほうがいいな。

294 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 09:55:01 ]
別スレの空気嫁とかいいながら煽る人よりは

295 名前:288 mailto:sage [2009/02/03(火) 14:44:18 ]
>>289
スプラッシュが消えるのはFrame等が表示されるまでだから。
下のを-splash:temp.pngとかで適当にスプラッシュ表示させてみ。

import javax.swing.*;
public class SplashTest {
public static void main(String[] args) throws Exception {
Thread.sleep(5000);

SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.add(new JLabel("てすと"));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}

296 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:47:24 ]
というか、スプラッシュの表示時に表示したい時間分、sleepすれば
いいだけなんだけどな。

297 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:28:43 ]
そのスプラッシュ超いlらないなw

298 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:36:09 ]
5分ぐらいスリープしとくとちょうどいいんじゃないかな



299 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:08:46 ]
どん兵食うのにか?

300 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:20:25 ]
それだ!
スプラッシュにラーメンタイマー機能をつければいい!!

で、何の話だっけ?

301 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 02:12:04 ]
どんべえも最近は3分じゃねぇの?ってとこまでは読んだ。

302 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 02:15:24 ]
5分か3分か選べるオプションをつければ完璧という事は魂で理解できた

303 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 02:18:00 ]
ていうか、スプラッシュに「閉じる」ボタンがあれば誰も困らないのに…

304 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 04:22:44 ]
スプラッシュが閉じるときに、音を鳴らす必要があるな。

305 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:05:07 ]
蓋を閉めてジャヴァアプリを起動する必要があるけどな。

306 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:02:17 ]
4分を舐めると火傷するぜ・・・

307 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:04:42 ]
>>306
頭使えよ

5分設定で起動してから1分後にお湯を入れればいいんだ

308 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:19:52 ]
じゃあ1分くらい用意してくれよ



309 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 18:06:37 ]
www.cupnoodle.jp/mvm/index.html
もうお前らこれ使えよ…

310 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 18:27:57 ]
これじゃスプラッシュでないじゃん

311 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:01:30 ]
すみませんが、質問させてください。
Swing Application Frameworkをバリバリ使ってます、方ってこのスレでいますでしょうか?

創るJavaでJavaを再学習しているのですが、実際のアプリSwingだといろいろ管理が面倒だな、と思っていたときに
上記のフレームワーク見つけたのですが、1.03になってもあまり流行っている感じがなかったので
問題があったのかぁ、と思ったので・・・・

使っている方で、「この辺が便利だよ」、とか「これが使えない」とかありましたら教えていただけないでしょうか?

312 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:57:39 ]
>>311
使ってないけど、J2SE7に含まれるらしいよ
けど誰か忘れてたけどアプリケーションクラスがシングルトンになってる時点でだめだとか書いてたような・・・

313 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:27:34 ]
ポップアップメニューのsetLightWeightPopupEnabledに相当するメソッドは
JMenuにはないでしょうか?

ポップアップメニューにJMenu追加して分岐させたら、
分岐させたメニューが表示できませんでしたw

setLightWeightPopupEnabled使わないとポップアップメニューを出せないような作りが悪いのかもしれませんが。
もしあったら教えてください。

314 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:41:38 ]
>>313
JMenu#getPopupMenu() で取ってきたポップアップメニューに setLightWeightPopupEnabled

315 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:47:57 ]
>>313
どう考えてもSwingの描画ぶっ壊してるから他の部分でも見えてないだけで問題があるかと。

316 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:01:10 ]
>>315
はい、継承してコネコネしてるJLabelの上だとポップアップメニューがでないんです。
いつか直さないと。

>>314
ありがとうございます。
JMenuの中にpopupMenuがあって気になってましたが、それでいけそうな気がします。

317 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:35:27 ]
>>314
めでたく上手くいきました。
ありがとうございました。

318 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:16:44 ]
アプリケーション終了時に、ウィンドウの位置とサイズを記憶したいです。(次の起動時に復元するため)

この時、最大化した状態で終了すると、元に戻すボタンを押した時のサイズを取得できません。
この元の位置(できればサイズも)を最大化してる状態で取得する方法はないでしょうか?

※自分でやった事
ComponentAdapter#componentMovedを使って、
getExtendedState() == NORMALの時に位置を記憶させてみたものの、
最大化した時にgetExtendedStateがNORMALの状態で動いてしまい、
位置を-4,-4で記憶してしまいます。

マルチモニタでも動かしたいため、0以下の値を弾くわけに行かなくて困っています。

componentResizedが動く時はgetExtendedState() == MAXIMIZED_BOTHになっているため、
サイズはなんとか記憶させることができました。



319 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 18:12:18 ]
EDTの簡単な取得方法はありませんでしょうか?

320 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:23:34 ]
6u12でAWTとSwingの限定的な混在がサポートされたな。

321 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:02:12 ]
>>319
EDTを取得して何すんの?
↓でできるけど

import javax.swing.SwingUtilities;

public class GetEDT {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//↓こいつがEDT
Thread edt = Thread.currentThread();
System.out.println(edt);
}
});
}
}


322 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:27:51 ]
>>321
それは分かりますが、単純にEDTが走ってればそれを返して、動いてなければnullみたいなのがありそうだなーと思っただけです。
確かに用途は少ないですね。
Thread#setUncaughtExceptionHandler()をEDTに設定したかったのですが、すでに取得する方法があればそれを使用しようと質問しました。
わざわざくだらない質問に答えていただきありがとうございました。

323 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 23:04:02 ]
>>322
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/awt/EventQueue.html#isDispatchThread()
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Thread.html#currentThread()


324 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:58:11 ]
>>312
OpenSwingはどうなん?


325 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:02:26 ]
>>323
それAWTのシステムキューだろ。

326 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:23:34 ]
JTextComponent でスペースバーが押されたらアクションを実行し、
その際空白文字は入力されないようにしたいのですが、
以下のようなやり方(いちおう動く)でよいのでしょうか?
もっと一般的な方法はあるでしょうか?

Keymap keymap = textComponent.getKeymap();

// スペースバーにアクションをマッピング
KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0);
keymap.addActionForKeyStroke(stroke, action);

// スペースバーが押されても空白文字が入力されないようにする
keymap.setDefaultAction(new DefaultEditorKit.DefaultKeyTypedAction() {
    @Override public void actionPerformed(ActionEvent ae) {
      String cmd = ae.getActionCommand();
      if (!cmd.equals(" ")) {
        super.actionPerformed(ae);
      }
    }
  } );


327 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 20:08:46 ]
>>326

コピペでスペースが入ってきてもやっぱり弾くのかな。
ならばjavax.swing.text.DocumentFilterで弾くのが楽じゃない?

328 名前:sage [2009/02/10(火) 21:13:11 ]
>>326
Documentに、特定の文字列が挿入されるのを防ぐ場合には、通常DocumentFilterを使う。

Documentにスペースが挿入されても構わなくて、キーボードからの入力のみフィルタするなら、
KeyListenerを使ったり、processKeyEvent(),processKeyBinding()等をオーバーライドして
実装することもできるけど、いずれもコードが汚くなるから、326の処理でいいと思う。

あとは、瑣末な問題だけど、個人的には、ActionEvent#getActionCommand()の戻り値が
nullでないとは規定されてないから、if (!cmd.equals(" ")) を!" ".equals(cmd)にするか、
if (cmd != null && !cmd.equals(" "))に変更するぐらいかな。



329 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:12:34 ]
>>326
おれが作るならばDefaultKeyTypedActionの継承はしないで
keymap.getDefaultAction()して保存おいてスペース以外ときは
そっちに移譲するようなActionにするかもしれない。なんとなく。

330 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:25:06 ]
>>325
ttp://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/SwingUtilities.html#isEventDispatchThread()
> 現在のスレッドが AWT イベントディスパッチスレッドの場合に true を
> 返します。JDK Version 1.3 以降、このメソッドは
> java.awt.EventQueue.isDispatchThread() を呼び出すだけです。

なので、EDTの判定に用いるのは間違いじゃない。

331 名前:326 mailto:sage [2009/02/11(水) 00:24:39 ]
>> 327
今回はキーが押された場合のみを処理したいので
DocumentFilter は使えないのですが、
回答ありがとうございます。

>>328 >>329 を参考にして
こんな感じにしてみました。

final Action defaultAction = keymap.getDefaultAction();
keymap.setDefaultAction(new AbstractAction() {
    @Override public void actionPerformed(ActionEvent ae) {
      String cmd = ae.getActionCommand();
      if (!" ".equals(cmd)) {
        defaultAction.actionPerformed(ae);
      }
    }
  } );

UIによって独自のデフォルトアクションが
セットされるかもしれない(?)ので、
>>329 の案のほうがよいかと。


332 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 00:30:05 ]
まずEDTといってもシステムキューの方かSwingEDTの方なのかはっきりしてもらわんとなぁ。
単にEDTと言ったらjavaの場合SwingEDTの方を指す場合が多いからややこしい。

333 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:47:13 ]
>>332
システムキューって何ぞ?
用語が一般的過ぎて、ぐぐってもそれらしきものが引っかからん。
説明資料へのリンク希望。
AWTイベントキューとは違うもんなんだよね?

334 名前:sage [2009/02/11(水) 10:31:21 ]
>>331
Actionに委譲するのは良いんだけど、
>UIによって独自のデフォルトアクションがセットされるかもしれない
ということを考慮するなら、委譲するActionの参照を保存してたらダメでしょ。
UI変更時に、上記のコード自体が再実行されるなら、アリだけど。

335 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:23:09 ]
>>333
同じ、AWTのEDTの事をAWT event queues systemと表記する場合とSystem Queueと表記する場合がある。
今はどうなってるが知らんが。


336 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:36:49 ]
>>335
んー、そうすると、昔は知らんが、今はシステムキュー==AWTのEDT==SwingのEDTなんじゃ?
>>330に書いたように、Java1.3 以降は
javax.swing.SwingUtilities.isEventDispatchThread() == java.awt.EventQueue.isDispatchThread()
なんだし。

337 名前:326 mailto:sage [2009/02/11(水) 23:57:03 ]
>>334
説明不足でしたが
updateUI() をオーバーライドして
super.updateUI() の後に処理を書いているので
たぶん大丈夫だと思います。


338 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:59:44 ]
こういうタイポとかでdeprecatedなメソッドはさすがに廃止してもいんじゃなかろうか。
java.sun.com/javase/ja/6/docs/ja/api/java/awt/FontMetrics.html#getMaxDecent()



339 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:48:12 ]
廃止したら、古いアプリケーションが動かなくなるからな。
ところで Cloneable はスペルミスなのに
Closeable は間違いじゃないんだな。
ややこしい。


340 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 13:56:33 ]
互換用のjarを用意して、コンパイル時にはエラーにしてしまえばいいのに。

341 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 18:53:19 ]
コンパイルエラーにする代わりに警告を出してるんでしょ。
問題ないと思うけど。


342 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:16:20 ]
>>340
互換用のjar吐くフリーソフトとか作ったら需要あるかな。
メソッドシグネチャだけコピーして、どれを呼んでもErrorなげる実装とかいうやつ。

343 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:18:34 ]
JDKのライセンス違反になるからダメ。

java.*、javax.*、sun.*以下のクラスは変えちゃいかんのよ。
勝手にクラス追加するのも禁止されてる。

344 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 17:34:57 ]
JEditorPaneで単純にHTMLを表示する場合なんだけど、
<a href="#hoge">Hoge</a>
. . . . . .
<a name="hoge">ここにくる</a>

とやって、ページ内でジャンプさせることってできないんだっけか?

345 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:54:43 ]
>>344
クリック監視はHyperlinkListenerで。
そこからJEditorPane#scrollToReference("#hoge")でなんとかなんないかな。

346 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:42:27 ]
>>345
ありがとう!
これから試してみる。

347 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:07:18 ]
>>345
ありがーと!
うまくいった。
JEditorPane#scrollToReference("hoge")
で、#はいらないようです。

348 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:28:04 ]
うふっ



349 名前: mailto:sage [2009/02/26(木) 20:25:14 ]
JLabelがクリックされたとき、JLabelではなく親のコンポーネントがクリックされたことにしたいのですが
どういしたらいいでしょうか。

350 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 20:39:23 ]
>>349
あほらしい方法だけど
public void mouseClicked(MouseEvent e) {
JComponent c = (JComponent)e.getSource();
for(MouseListener l :c.getParent().getMouseListeners()){
l.mouseClicked(e);
}
}

351 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:34:16 ]
俺なら親のaddMouseListenerをオーバーライドしたいな

352 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:48:15 ]
俺俺なら親にディスパッチする

353 名前:sage [2009/02/26(木) 22:54:12 ]
俺俺俺も親にディスパッチするな。
350 みたいに実装するなら、MouseEventを変換してやらないと。



354 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:57:08 ]
まぁ俺の方がディスパッチするけどね。

355 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:07:01 ]
ディスパッチってどうやってするねん?

俺も>>350みたいにリスナーぶち込みで対処したことがある

356 名前:sage [2009/02/26(木) 23:17:41 ]
>>355
java.awt.Component#dispatchEvent(AWTEvent)嫁。

357 名前:349 mailto:sage [2009/02/27(金) 00:35:17 ]
getParent().dispatchEvent(event);が一番短くかけるみたいですね。

>>350から355のみなさん、どうもありがとうございました。

358 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 01:09:26 ]
普通に JLabel の親に対して
addMouseListener(MouseEvent) を呼べば
>>349 に書かれてるような挙動になるけど。




359 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 01:40:53 ]
c.addKeyListener(new KeyAdapter() {
  public void keyPressed(KeyEvent e) {
    c.removeKeyListener(this);
  }
});

どさくさにまぎれて、一度だけ実行されるリスナーの小技。(流れ上、マウスリスナでないのは手抜き)
めったに使う機会がないと思うけど。。

360 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 01:54:28 ]
それいけるんだ
Iteratorのループで出来ないかと思ってた〜

361 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 12:05:56 ]
JComponent.setFont(new Font("メイリオ", Font.BOLD, 42))
とすると一回目だけすごく遅いんですが、フォントの読み込みは
何かテクニックがあるんでしょうか?

362 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 17:07:54 ]
アプリケーション起動時にあらかじめ読み込んでおくくらいしかないよ
いずれにせよロード時間はかかる

363 名前:デフォルトの名無しさん [2009/03/01(日) 17:17:19 ]
Java SE Development Kit (JDK) 6 Update 11
Eclipse3.4.1
WindowsXP SP3

上記の環境があり、そこでGUIアプリをJavaで作成しようと思っています。
Swing(?)ってのをElipseのメニューから探したのですが、見当たりません。

JavaSEをアンインストールして、JavaEEをインストールするのが妥当な選択なのでしょうか?
それともplug-inがまた別にあるのでしょうか?

364 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:39:46 ]
>>363
LANケーブルを抜いてクビをククルのが最速

365 名前:デフォルトの名無しさん [2009/03/01(日) 17:49:20 ]
>>364
最速か否かは聞かれてないだろww

366 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:54:37 ]
exlipseの標準環境だと、swingアプリはメモ帳でhtml手打ちするようなのりで、
自分でソースコード書いて全部作ることになるっす。

net beansとかいうの使うと、VBみたいなポトペタを標準でできるらしい
eclipseもプラグイン導入するとポトペタできるらしい
が、swingでポトペタやったことないんでわかりません。

367 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:23:02 ]
>>366
Swingやるなら現状ではNetBeans一択らしい。
EclipseプラグインのVE(VisualEditor)は使いもんにならんそうな。
俺はEclipseで手打ちしてるけどナー。
# EcilpseからSwingアプリを起動すると、フォント構成ファイルが無視されて、
# 日本語じゃないフォントで日本語がレンダリングされるという問題も……。
# おかしいなー、フォント構成ファイルの読み込み自体は正常に行われてるんだが。

368 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:00:47 ]
つ jigloo



369 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:02:05 ]
じぐるーも重いしすごくグループレイアウトが使いにくいしだめだよなぁ

370 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:51:25 ]
NetBeansでGUI作って、Eclipseに持ち込んでる俺。
他にもいるでしょ、こんな人。

371 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 23:11:34 ]
>>367
VEは使ってみて、脱力した。
正直、自分の脳内でレイアウト組んだほうがマシ。
最近は更新もされてないんじゃなかったっけ?

372 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:20:54 ]
swingの印刷機能って、コンポーネント上の文字がカクカクになって印刷されるんだけど、
これって普通なの?

373 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 08:18:06 ]
>>372
アンチエイリアスかければ?

374 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:11:33 ]
>>370
余裕で俺、とウチの社内全員。

375 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 00:14:31 ]
>>370
NetBeansでそのままつくらずに、Eclipseに持ち込む理由はなんですか

376 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 00:27:24 ]
大技見つけたぜぃ。

Javaで比較的簡単にホットデプロイする方法。

まず、デプロイしたいクラスのベースとなるHogeを作っておきます。
そして、それを継承したHoge00というクラスを作ります。
ただし、このクラスのファイル名はHogeXX.javaという風にします。
コンパイルできなければ対策を考えますが、クラスをpublicにしなければ通るようです。
そして、修正してデプロイするときには、Hoge00をHoge01という風にクラスの名前も変えます。
ファイル名はそのままです。

クラス名を変えるとコンストラクタ名まで変えないといけません。この時の小技として
コンストラクタの処理を全て関数にしてHoge00クラスにはコンストラクタを記述しないようにします。
その為、Hogeクラスには空のデフォルトコンストラクタを用意しておきます。

あとは、コンパイルしてシステムのクラスローダを使ってHoge01クラスを読み込んで
Hogeにキャストして使用できます。Hogeにはインターフェースとなる関数を用意しておきます。

従来の方法だと別のクラスローダを使ったりするので、同じクラスを違うクラスであるとしてしまう為
キャストしたり出来ません。なので、リフレクションなどを使ってアクセスする事になります。
これがどうもうまくないと思ったので、別の方法を考えたら思いつきました。

今からサンプルを作ります。

377 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 01:39:21 ]
space.geocities.jp/solver9999/

ホームページに置きました。
なぜか、antから起動しないとToolProvider.getSystemJavaCompiler()がnullになってしまうので
antを使ってください。この辺を調べてみます。でゎ、おやすみ。

378 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 01:53:06 ]
なんだか麻布の臭いがする。。。



379 名前:デフォルトの名無しさん [2009/03/04(水) 10:33:20 ]
GUIはまったく初心者だったけど「Javaアプリケーション作成講座」という本を読んで
だんだんわかるようになってきた
とりあえず簡単なテキストエディタやブラウザは作れるようになった

380 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 11:28:11 ]
javax.tools.ToolProvider.getSystemJavaCompiler()がnullを返すのは
JAVA_HOME\lib\tools.jarにクラスパスが通ってない事が原因でした。

381 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 20:24:28 ]
ネタ・・・じゃ・・・ないの・・・・か?

382 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 02:06:57 ]
Swingに印刷プレビューダイアログってありますか?

383 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 09:36:17 ]
作れば良いんじゃないの

384 名前:sage [2009/03/06(金) 00:33:36 ]
以下のバグが1.4でも6.0でも再現するんだけど、JTextField#setTextはスレッドセーフじゃないの?
それとも検証方法自体が間違ってるの?
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4765353

385 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:42:39 ]
swing自体スレッドセーフじゃなかったと思う

386 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:44:55 ]
1.4.2で直ってないって書いてあるし、放置されてるんじゃね?

387 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:46:00 ]
この再現コードみたいなことをすること自体基本的にないからなぁ

388 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:50:16 ]
>>385
↓スレッドセーフだと書いてあるんだが・・・
sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/text/JTextComponent.html#setText(java.lang.String)



389 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:13:56 ]
ざっとソースをみたところ、スレッドセーフじゃないね。

テキストのモデルであるDocumentへの書き込みがアトミックであったとしても、
UIスレッドを用いてコンポーネントから何らかの値をとってくるメソッドで
Documentのインスタンスを2回以上使うような操作をする全てのメソッドは
その間はDocumentへの書き込みを排他していないといけないはずなのだが、
少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。

390 名前:389 mailto:sage [2009/03/06(金) 01:15:33 ]
ソースは Java 6 しかみてない。すまん

391 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:18:31 ]
setTextする処理をEDTに投げればいいんじゃないの?的外れだったらごめん。

392 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:43:30 ]
>>389
>.少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。

setTextの話だったんだけど、typo?

393 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:53:44 ]
>>392
getTextが変な値を返す原因がsetTextをUIスレッド以外でアクセスしたことにあるなら、
setTextはスレッドセーフだといえる?

394 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:33:43 ]
>>393
setTextの時点で変な値にならないのであれば、setTextはスレッドセーフじゃないの?
(よくわかってないかもしれん・・・)

そもそも>>384の再現コードは、getTextした値が""や"12"や"21"になることがあり、
以下のように思ってるんだが、違うかな?

""は、setTextが値を一度クリアしたタイミングで、getTextしているから。(getTextがスレッドセーフではないから)
"12"や"21"はsetTextがロックする前にAbstractDocument#getLengthを呼び出していることが原因。
(setTextもスレッドセーフではない?)

395 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 13:04:40 ]
JavaDoc を見る限り getText() はスレッドセーフじゃないんだな…知らなかった…
別スレッドからsetText()して結果的に画面に"12"や"21"や""が描画される
ことがないのであれば setText() はスレッドセーフといえる…のかな?

でも現状は >>394 のいうようにsetText()もスレッドセーフじゃないように見えるなぁ

396 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 17:43:09 ]
setText()のスレッドセーフを確認するのに、スレッドセーフではないgetText()が絡んでくるとややこしくなるので
setText()するたびに文字列を溜めておいて、最後に検証するというのはどうだろう。

397 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:28:23 ]
AbstractDocument.readLockを使えば、少しはましになるけど、ダメだった。
たまに、"12"と"21"が出てくる。

398 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:27:20 ]
swingコンポーネントをディープコピーしようとしたら、
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.io.NotSerializableException: com.sun.java.swing.plaf.windows.XPStyle$Skin
っていわれるんだけど、どうすりゃいいの?



399 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:12:39 ]
Beans Bindingはもう見捨てられたのかと思ってたけど、先月スペックリードが変わってるね。
これは期待してもいいんだろうか。

400 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:08:00 ]
スペックリードとは仕様定めるリーダーみたいなものでしょうか?

401 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:41:55 ]
複数のクラスで共用するダイアログなどで、わざわざそれぞれのフィールドとして持たせたくない場合は、UIUtilitiesなどを作ってそこでshow***といった感じで定義しても問題ないでしょうか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<99KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef