Java低速GUI Swing 7

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

Java低速GUI Swing 6
http://pc11.2ch.net/test/read.cgi/tech/1190807478/
Java低速GUI Swing 5
http://pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
http://pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
http://pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50
2デフォルトの名無しさん:2008/02/28(木) 08:41:32
関連スレッド
Java 高速GUI SWT 3
http://pc11.2ch.net/test/read.cgi/tech/1164877399/
【JMF】Java Media APIs【JOGL】
http://pc11.2ch.net/test/read.cgi/tech/1201346803/
3デフォルトの名無しさん:2008/02/28(木) 08:42:26
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
http://www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
http://www.eclipse.org/
http://www.eclipse.org/vep/
Jigloo
http://cloudgarden.com/jigloo/index.html
4デフォルトの名無しさん:2008/02/28(木) 18:05:07
AWTもターゲットに入ってていいんだよね?

Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど
  混ぜちゃ駄目なんですか・・・・?
A.
 今まででは、「駄目」というのが正解です。
 が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。
 正式リリースがされるまで、情報の錯綜があって混乱すると思いますが
 普通の人にとっては「まだ駄目」という状況だと思ってください。

Q. Nimbusって何よ。
A.
 次期Swingの標準となるとされているLAFです。
 元々は、SUNのGnome環境のテーマに使われていた見た目を移植したものになります。
 実装にはXMLベースでLAFを定義できるSynthLookAndFeel を利用しています。
 jdk6の開発版で試す事ができます。

Q. こんなプログラムを作れって言われたんですが・・・
A.
 宿題スレへどうぞ。

Q. なんでスレタイに低速って入ってるの?
A.
 まだまだ速くなるってことさ。
5デフォルトの名無しさん:2008/02/28(木) 19:14:30
死ねよ
6デフォルトの名無しさん:2008/02/29(金) 13:24:35
削除依頼出しとけよ
7デフォルトの名無しさん:2008/02/29(金) 13:35:25
すごくめんどくさいです。
8デフォルトの名無しさん:2008/02/29(金) 22:40:40
JLabelを継承して背景色にグラデーション使ったラベルを作ったんですが
グラデーションにはなっていますが、ラベルの中に文字列を入れても表示されません。
文字列を表示するためにはどうすればいいのでしょうか?


public class JLabelEx extends JLabel {

public JLabelEx() {
}

@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
//背景描画
Color grey = new Color(204,204,204);
Color white = new Color(255,255,255);

GradientPaint gp = new GradientPaint(this.getWidth()/5,0,white,this.getWidth()/3,0,grey,false);
g2.setPaint(gp);
g2.fillRect(0,0,this.getWidth(),this.getHeight());
}
}
9デフォルトの名無しさん:2008/02/29(金) 22:42:27
>>8
super.paintComponentは呼ばないの?
10デフォルトの名無しさん:2008/03/01(土) 00:18:55
>>5-6
お断りだ
118:2008/03/01(土) 00:40:27
super.paintComponentは呼んだほうがいいんですか?
呼んでもうまくいきませんでしたが。
12デフォルトの名無しさん:2008/03/01(土) 00:57:33
>>11
じゃあsuper.paintComponentを呼ばずにそのコードのどこでラベルが描画されていると思っているんだ?
呼んだとしても自分の描画コードがせっかくsuper.paintComponentが描いた文字を塗り潰しているとは考えないんだろうな。
デフォルトコンストラクタしかないけどsetTextとかでラベルは設定しているんだと思って、そこにはつっこまないぜ。
13デフォルトの名無しさん:2008/03/01(土) 01:22:31
>>11
super.paintComponentを、背景を塗った後で呼んだ?
14デフォルトの名無しさん:2008/03/01(土) 20:27:28
最近グラデーションする人多いのね
15デフォルトの名無しさん:2008/03/01(土) 21:17:28
テーマのOCANが始めからグラデーションかかってるけどラベルはかからないんだっけ?
16デフォルトの名無しさん:2008/03/01(土) 23:18:49
テーマがお侠って元気そうでいいな
17デフォルトの名無しさん:2008/03/02(日) 01:40:52
> 15
かからない。ボタンとメニューとスクロールバーくらいだっけかな。

> 8
そもそもこういうのはUIクラスで実装すべき。
18デフォルトの名無しさん:2008/03/03(月) 10:28:27
updateN build12のNimbusだとJPanelの背景が白くなっちまうぜ
こんちくしょう
19デフォルトの名無しさん:2008/03/03(月) 11:15:03
NimbusってSynthベースだっけ?
Synthでは描画コードちゃんと自分で実装しないと真っ白になるけど。
20デフォルトの名無しさん:2008/03/03(月) 11:23:50
Solaris の Java Desktop はなかなかきれいで Linux の GNOME/KDE より速い (俺体感)。
21デフォルトの名無しさん:2008/03/03(月) 11:27:32
JDSはgnomeでしょ
22デフォルトの名無しさん:2008/03/05(水) 13:41:51
>>19
でもbuild 10だと普通だし、白くならないんだよねー

何が変わったんだろ
23デフォルトの名無しさん:2008/03/09(日) 01:59:36
画像を256色に減色したいのですが、単純に
BufferedImage dest = new BufferedImage(width,height,BufferedImage.TYPE_BYTE_INDEXED);
dest.createGraphics.drawImage(src,0,0,null);
このようにしたら各色6段階で256色にはなりますが、当然見るに堪えません。
各色4byteずつ使って256色としたいです。
自分で減色アルゴリズムを実装するしかないのでしょうか?
それとも既存のクラスで可能なのでしょうか?
24デフォルトの名無しさん:2008/03/09(日) 02:03:11
RGB各色4byteずつ使ったら合計で12byteにならないか?
それだと256色じゃなくて4096色じゃないか?
何か勘違いしてる?
2524:2008/03/09(日) 02:08:38
何か勘違いしてた。ごめ。

>>23
そんな便利なものはなかったと思うので、
自分で減色するしかないんじゃないかな
26デフォルトの名無しさん:2008/03/09(日) 02:15:48
すみません。確かに説明が悪かったです。
ARGBの4バンドで各1byteずつ、つまり1色4bytes
こう書くべきでしたね。

やっぱりそうですか〜
理解が大変そうでクラスライブラリに頼りたかったのですがそんなものまではないんですね。
勉強してみます。ありがとうございました。
27デフォルトの名無しさん:2008/03/09(日) 05:05:49
ScrollPaneがScrollしたというイベントはどのListenerで知る事ができるんでしょうか?
28デフォルトの名無しさん:2008/03/09(日) 09:45:50
JScrollBarを取得して、それにAdjustmentListener登録でいんじゃね?
29デフォルトの名無しさん:2008/03/09(日) 15:49:01
viewPortからも取れるよね
3029:2008/03/09(日) 15:50:38
む、イベントが発生しないと意味なかった。失敬
31デフォルトの名無しさん:2008/03/10(月) 10:32:21
IndexColorModel内のRGBデータフィールド(int rgb[])は絶対に変更できないのでしょうか?
どのコンストラクタでも、引数のrgbデータは直接は用いず、全くsetterもないので方法が思いつきませんでした。
あるインデックスの色だけ変えたい場合には
 getRGBs(int[] rgb)
でコピーし、再びオブジェクト作成しか方法はないのでしょうか?
32デフォルトの名無しさん:2008/03/10(月) 14:12:50
Swingの話じゃないなぁ
Java2Dの書籍とかドキュメントとか見直してみたら?
33デフォルトの名無しさん:2008/03/10(月) 18:01:03
>>31
IndexColorModelのカラーパレットは変更できないから新たに作るしかないような

前スレでスレタイにAWTの文字が入ったのに消えちゃったからな
>>1の過去スレリストでも改変されてるし黒歴史扱いか
34デフォルトの名無しさん:2008/03/10(月) 18:17:25
AWTがはいっていたとしてもJava2Dは別の場所での話しでしょう
ここはGUIコンポーネントについての話であって汎用部分の話ではないわけで
35デフォルトの名無しさん:2008/03/10(月) 18:30:20
>>23
氏ね
36デフォルトの名無しさん:2008/03/10(月) 18:37:53
ネタもねぇのに贅沢な連中だな
37デフォルトの名無しさん:2008/03/10(月) 19:34:29
ネタがあろうがなかろうがスレ違いはいらん
38デフォルトの名無しさん:2008/03/10(月) 23:28:20
>>33
そうですね。IndexColorModelをパクることにします。
ありがとうございました。
39デフォルトの名無しさん:2008/03/13(木) 00:36:25
SwingXおもしろいねー
いらんもんがかなりあるけどなんだか楽しく作ってる感じするね
40デフォルトの名無しさん:2008/03/13(木) 12:36:13
JFileChooserで下部のコンボボックスで選択したファイルタイプを取得する方法はありますか?
41デフォルトの名無しさん:2008/03/13(木) 12:57:51
JFileChooser#getFileFilter() じゃなくて?
42デフォルトの名無しさん:2008/03/13(木) 13:43:57
すみません!getSelectedFileのノリでgetSelected...で探してました。ありがとうございます。
43デフォルトの名無しさん:2008/03/14(金) 14:22:02
JFrameを継承したアプリケーションを作ることは一般的に推奨されないようですが、それはなぜなのでしょうか?
ビューはビューとして完全に分離させないといけないからでしょうか?
44デフォルトの名無しさん:2008/03/14(金) 14:25:42
「JFrameを継承したアプリケーションを作ることは一般的に推奨されない」
って言ったやつに聞けよ…
45デフォルトの名無しさん:2008/03/14(金) 14:32:57
一般に推奨されないかどうかは知らないが、
ビューはビュー、モデルはモデル、コントローラはコントローラと、
役割ごとにクラスを分けるのはそれなりに合理的かと

でも別にいけないことはないだろう
全部のメソッドをひとつのクラスに入れてオブジェクト指向なにそれ?でもいいわけだし
46デフォルトの名無しさん:2008/03/14(金) 14:45:00
ありがとうございます。確かSwing Application Framework関連の読み物に書いてあって、ずっと引っかかってたから聞いてみたんです。
それの示す意味は、JFrameは継承するな、ではなくその中にアプリケーション関連のコンテクストを何でもかんでも詰め込むなよ、という意味なんでしょうね。
ちゃんと分離できているのであればokってことで認識しておきます。ありがとうございました。
47デフォルトの名無しさん:2008/03/14(金) 15:00:33
まぁswingは基本的にコンポーネントを継承しなくてもほとんどのカスタマイズができるから
あまりコンポーネントから継承する理由がないんだよな…
個人的には完全に自作するコンポーネントや複合ウィジェットみたい
なものでしかコンポーネント類からの継承は使わないかも
48デフォルトの名無しさん:2008/03/14(金) 15:20:04
Swing Application FrameworkつかったらJFrameは継承しないとだめだろうなぁ

つーか、事実上GUIエディタつかわないと効率よく開発できないんだから
その流儀に従うだけ、というのが正解
49デフォルトの名無しさん:2008/03/14(金) 19:32:14
継承したところで、それ用に作られてる一部のメソッド以外をオーバライドなんて怖くて出来ないし
単にコンストラクタでパブリックメソッドを呼び出すくらいなら、コンポジションを使った方が堅固。
しかし、作ったクラスに対して、自作のメソッドとコンポネントのメソッドを両方呼び出せると便利だし
一方、あのコンポネントの大量のメソッドを委譲するメソッドをひたすら書くのは死ねるので
まあ、継承してもしかたないかな...みたいな感じだが
JFrameなど作ったその場で表示してあとは放置するようなものは、継承を使わなくても書けるので
(焼け石に水だけど)使わない方がいいじゃない?みたいな感じじゃね?
50デフォルトの名無しさん:2008/03/14(金) 19:34:13
>>49
コンポーネントにアクセスするのが大変にならないか?
51デフォルトの名無しさん:2008/03/14(金) 19:37:10
>一方、あのコンポネントの大量のメソッドを委譲するメソッドをひたすら書くのは死ねるので

そういうのはeclipseに自動生成させればいいよ
だからって別にやらないけど
52デフォルトの名無しさん:2008/03/14(金) 23:07:51
>>45
この考え方はClass間の相互依存が強くなって、カプセル化など構造化プログラミングに真っ向から逆らってる。
53デフォルトの名無しさん:2008/03/24(月) 22:49:55
ttp://lessisbetter.org/blog/howto_swing_pulldownbutton.html
を参考にしてプルダウンメニューを作っています。
CompoundBorderを用いることで元のボタンのボーダーに装飾をつけているようなのですが、CompoundBorderを用いる時点である程度のマージンが発生してしまいます。
よってできあがったものは通常のボタンのサイズにPullDownBorderのインセットを加えた値より大きなものとなってしまいます。
この方法では完全な実装は不可能なのでしょうか?
54デフォルトの名無しさん:2008/03/24(月) 22:57:20
うほっ勘違いっす。
BorderFactory.createCompoundBorder(getBorder(),new PullDownBorder());
ここのgetBorder()で単純に元のボーダーを取得せずに
BorderFactory.createCompoundBorder(((CompoundBorder)getBorder()).getOutsideBorder(),new PullDownBorder());
こんな感じでボタンだけのボーダー取得してやりゃ解決ですね。
すみませんでした。
55デフォルトの名無しさん:2008/03/26(水) 21:52:09
JSE 6 にしたら JFileChooser がすっげー遅くなったような気がするんだけど
切断してるネットワークドライブでも見に行くようになったのか?
56デフォルトの名無しさん:2008/03/26(水) 21:59:35
>>55
http://bugs.sun.com/view_bug.do?bug_id=6578753
かなり前からですんで。
57デフォルトの名無しさん:2008/03/26(水) 22:19:41
ちょw まじですかwww
58デフォルトの名無しさん:2008/03/27(木) 10:40:50
一応正式リリース版なはずのjava6で、こんな致命的なバグが8ヶ月も修正されないってのは、
Sunの技術の低さか、そうじゃないとしたら、Swing(のWindows LaF)軽視、デスクトップアプリ市場放棄だろ。
5955:2008/03/27(木) 10:51:45
AWT の FileDialog の方は何の影響もないね。むしろ JFileChooser の不自然極まりない
ダイアログよりネイティブのダイアログなんでかなりまともに見える (久しぶりに使ったんでちょっと感動)。

Swing と AWT の混在ってコンポーネントやメニューの重なり以外に何かあるんだっけ?
AWT のダイアログが上に来るのなら基本的に大丈夫だよね?
60デフォルトの名無しさん:2008/03/27(木) 11:34:44
大丈夫だけど、FileDialogにはフィルタを設定できないという欠陥が・・・
61デフォルトの名無しさん:2008/03/27(木) 11:54:02
LightWeight って、いったいどこが LightWeight なの???
62デフォルトの名無しさん:2008/03/27(木) 12:40:48
>>61
OSの機能を使っているコード量がライト。
63デフォルトの名無しさん:2008/03/27(木) 12:52:02
>>58
最初から悪かったわけではなくu2で発症したことを考えるとなんかありそうだ
ちなみにjdk5.0の時代はもっと放置してた致命的なバグがあったんだぜ・・・


>>61
懐かしいテンプレだな
64デフォルトの名無しさん:2008/03/27(木) 12:52:49
>>59
機能不足過ぎる
65デフォルトの名無しさん:2008/03/28(金) 03:26:16
>>62
馬鹿だろお前
66デフォルトの名無しさん:2008/04/08(火) 19:02:08
数年ぶりにswingさわったけど、カレンダーコントロールすらないのにびっくりしたよ。
カレンダー実装でおすすめある?
67 :2008/04/08(火) 19:25:50
使ったことないけどSwingX
68デフォルトの名無しさん:2008/04/08(火) 20:58:34
>>66
「JCalendar swing」でぐぐって出てきたのを全部試して比較レポートしてくれると
うれしい人がたくさんいると思う。
69デフォルトの名無しさん:2008/04/08(火) 21:32:47
自分でやれよ
70デフォルトの名無しさん:2008/04/14(月) 17:18:41
教えてください。HTMLファイルを文字列として読み込み、ループを
まわして一定のパターンを見つけたら、一定の別のパターンの
タグ文字列を入れたいとして、不足している情報をダイアログで入力してもらい、
それをループの側が受け取り、入れるべき文字列を作ります。
モーダルダイアログでは、一応動くものが作れましたが、モードレスで
同じことをしようとしても、中抜けのダイアログになり、できません。
waitとnotifyAllをうまく動かせませんでした。ループの途中で
joinを試みましたが、私のやり方ではダメでした。
JDialogを継承したクラスをループの中から別のスレッドで開いて
いいんでしょうか?
71デフォルトの名無しさん:2008/04/14(月) 19:43:09
駄目。
Swingのスレッドモデルを勉強したら分かるかもしれないぞ。

おそらく、1つ目のダイアログが出た後に、ループ側のスレッドが
初めのとは別スレッドから別のダイアログを立ち上げようとして変になっているんだろう。
invokeLaterや、SwingWorkerなどを利用してみましょう・・・
72デフォルトの名無しさん:2008/04/14(月) 21:00:45
どうせ例示するならinvokeAndWaitの方が適切のような。
7370:2008/04/14(月) 21:18:01
レスありがとうございます。回るたびに新しいスレッドを
作ろうとしてしまうということですか?

invokeLaterは、やってみましたが、
やり方が悪いのか、うまく行きませんでした。SwingWorkerは
SUNのチュートリアルを読みましたが、理解できませんでした。
invokeAndWaitは呼び出す側を間違えたというエラーが
出ました。結城さんのデザインパターン、マルチスレッド編の
GuardedSuspensionまで読んで分からなかったので、
一旦聞いてみたくなりました。結構いろいろ、ググりましたが
決め手になると思える情報がないように感じました。大村さんの
Swingの本の1巻目を買いますと、3巻目だかにスレッドと
Swingの関係が扱われていると書かれていますが、Amazonで目次を
見ると、スレッド関連のものが見当たりません。
74デフォルトの名無しさん:2008/04/14(月) 21:20:48
>>73
オープンソースなのに何でソース読まないの?
75デフォルトの名無しさん:2008/04/14(月) 21:26:19
イベントスレッドの動き理解してねぇのにソース読ませるのはかえって混乱するだけだろ。
76デフォルトの名無しさん:2008/04/15(火) 00:30:46
AWTスレッドとかイベントディスパッチスレッド、シングルスレッドモデルとか
しらべてみるほうがいいぞ

直接解決するコード教えたところでたぶんほかのところも問題ありまくり

この問題は別にSwingに限らないしね
GUIのアプリ作る場合は常についてくる
7770:2008/04/15(火) 10:16:43
昨日、寝る前、結城さんの本をパラパラめくっていたら、
まだ読んでない後ろのほうに、ご指摘の単語が一杯
出ているのを見つけました。最後まで読んだほうが良さそうです。
また調べなおして出直してきます。
皆さんのレスを読んで煮詰まり感が、いくぶん解消されたので
じっくり考えようという気分になりました。ありがとうございます。
78デフォルトの名無しさん:2008/04/15(火) 13:58:47
がんがれ
79デフォルトの名無しさん:2008/04/20(日) 19:02:31
JTable2JTreeやJTree2JTableみたいなクラスはないのでしょうか?
結構需要が多いとは思うのですが、Swing Hacksなどでも紹介はされておらず。。
JTree2JTableは可能ですが、JTableからJTreeにデータ構造を戻せるのか
わかりません。
JTableがObject型なので、JTableを変更した場合、同時にJTreeに通知する
手段などあるのでしょうか?
80デフォルトの名無しさん:2008/04/20(日) 19:28:32
JTreeとJTableじゃなく、
TreeModelとTableModel見て可能かどうか考えてごらん。
81デフォルトの名無しさん:2008/04/20(日) 20:05:44
MVCから勉強し直した方が良いんじゃない?
82デフォルトの名無しさん:2008/04/20(日) 21:07:56
硫化水素ガス自殺が流行ってんだってな。
Swing+AWTでry
83デフォルトの名無しさん:2008/04/20(日) 23:28:55
プロバイダ料金6500円って、ADSLのままになら2100円だったのに……。払えねぇよ
84デフォルトの名無しさん:2008/04/21(月) 20:30:00
>TreeModelとTableModel見て可能かどうか考えてごらん。
もちろんそうです。表現がいけなかったですね。
普通に考えたら無理かなと。
85デフォルトの名無しさん:2008/04/22(火) 01:00:28
>>77
この「煮詰まる」の用法・用量ってあってるっけ?
86デフォルトの名無しさん:2008/04/22(火) 01:15:48
行き詰るの間違いだと思う
87デフォルトの名無しさん:2008/04/22(火) 02:11:31
本来は会議なんかで結論がまとまっていくみたいなときに使うね。

88デフォルトの名無しさん:2008/04/22(火) 11:07:17
>>85
この「用法・用量」って使い方あってるっけ?
89デフォルトの名無しさん:2008/04/22(火) 17:54:23
>>86
みんな「煮える」って表現とごっちゃになるんだよね。
90デフォルトの名無しさん:2008/04/22(火) 17:57:27
料理下手の人だと、煮詰めるのに失敗して焦がしちゃう事を連想するんじゃね?
91デフォルトの名無しさん:2008/04/22(火) 20:18:43
うわ……まさかと思ってググったら……
「煮詰まる」っつー言葉、誤用されてる事が多いのか。

俺は元々正しい方の意味を知っていたけど(むしろ誤用されている事を知らなかった)
うっかりどこかで使っていたら、意味が伝わらなかったりしたのかな。怖いな。
まぁ、俺も偉そうな事なんて全然言えないけども。

そう言えば、「“確信犯”という言葉はもう“計算高い犯罪”という誤用が定着しているから
そっちの意味に変えてしまおうぜ」とか言ってる奴が居たけど
そういうのはマジやめてほしい。
正しかったはずの俺の方が、何時の間にか間違いになるなんてゴメンだぜ。

せめて事前に @Deprecated アノテーションを付けてだな……
92デフォルトの名無しさん:2008/04/22(火) 20:48:57
うけたww
その気持ち分かるわ〜w
93デフォルトの名無しさん:2008/04/22(火) 20:49:52
>>91
確信犯の誤用ってのは「悪い事と確信していながら犯罪を行う人」じゃねーか?
計算高い犯罪、なんて意味で確信犯って言ってる奴は見たことねーぞ
94デフォルトの名無しさん:2008/04/23(水) 12:27:47
>>91
@Deprecated .... System.getenv のようにdepricated指定を外されたりしてな・・・・
>>93
俺もそっちの誤用だと思う。

悪いと分かっていながら犯罪を行う人間と
正しいと信じて犯罪を行う人間だったら・・・
前者の方が何とかできそう感があるよな・・・・
95デフォルトの名無しさん:2008/04/23(水) 12:49:01
>正しいと信じて犯罪を行う人間だったら・・・

こっちの人間はダメか?
96デフォルトの名無しさん:2008/04/23(水) 13:18:24
そっちのネタだけで引っ張るなw 戻せ思い出せ!ここはSwingスレ!
97デフォルトの名無しさん:2008/04/23(水) 14:59:49
答えて欲しかったな・・
98デフォルトの名無しさん:2008/04/23(水) 18:05:03
updateNかJavaSE7がでればネタはいくらでも・・・
99デフォルトの名無しさん:2008/04/23(水) 19:00:06
JavaSE7はクロージャ以外の目玉ってなんかありますか?
100デフォルトの名無しさん:2008/04/23(水) 22:07:08
>TreeModelとTableModel見て可能かどうか考えてごらん。
解決しました。
できました。
101デフォルトの名無しさん:2008/04/24(木) 01:00:26
>>91
>そういうのはマジやめてほしい。
>正しかったはずの俺の方が、何時の間にか間違いになるなんてゴメンだぜ。

ムリムリw
プログラミング言語でさえ仕様が変わっていくのに
自然言語の仕様をある一時のままでとどめておくなんて不可能だよ。
ある学者が「独壇場(どくだんじょう)」が読みも漢字も本来とは違うと知ったが、
独擅場(どくせんじょう)と正しく(?)使用すると「独占場」ととられてしまう恐れがあるということで、
その学者、結局「独壇(擅)場」って語彙を使わなくなってしまったんだそうなw
辞書によってはもう独壇場で載ってる。
「新しい」を「あたらしい」と読むのも江戸時代のはやり言葉。本来は誤用。
他にも、さんざか→さざんかとかは?
すごい、すごく、ちゃんと使い分けてる?

たいていの言語学者が一笑に付す日本語の正しい・正しくない議論だけど、
どうしても正しい日本語を決めなきゃならないんだったら平安時代の宮ことばにしてほしい・・・
102デフォルトの名無しさん:2008/04/24(木) 01:30:21
>>88
言わんとする所は「いま一般的な辞書的用法」とかの方が誤解ないだろうね
用法用量つったら医薬品の使い方だろうし、他の意味で使われる例って思いつかないな。ぐぐってもそんなんばっかりだ

煮詰まるを「行き詰まる」で使うのって、60過ぎてポケモンに嵌ってる親父に聞いたら親父の世代でもすでに定着していたそうだ
正反対の意味で判断つかなくて困るってのは判るけど、今頃反発してもどうにもならん気がするな。
「確信犯」の誤用認知は随分知名度上がった気がするけど(2chだけかな?

誤解を少しでも省きたい時は、結局他の言葉に言い換えるしな
103デフォルトの名無しさん:2008/04/24(木) 02:00:44
おいおい、用法・用量ってのはギャグだろ・・・常考・・・
104デフォルトの名無しさん:2008/04/25(金) 01:12:43
>>101
悪い悪い。なんか言い方が悪かった。
「何時の間にか」は間違い。「ある日を境に突然」が本意だった。

言葉は移ろいゆくもの。そりゃもちろんさね。
だからと言って、まるで法律でも公布・施行するかのように
「明日から××は○○という意味になります。ホニャララ学会で決定されました」
と、ある日突然人為的に決定される世の中はいやなんですぜ、と言いたかった。

もちろん、そんな動きなんて現実にはまだ無いわけで(無いよね?)、杞憂だけども。

言いたい事さえ正しく通じるなら、「正しい日本語」レイヤについては、俺ぁ気にしないね。
105デフォルトの名無しさん:2008/04/25(金) 01:20:00
おまえの脳内妄想なんか聞いてねぇからグダグダ引っ張ってないで引っ込んでろカス
106デフォルトの名無しさん:2008/04/25(金) 08:27:35
何だとコラ対面恐怖症のグズ野郎
107デフォルトの名無しさん:2008/04/25(金) 12:34:18
>>104
久しぶりにキモイのが現れたな
108デフォルトの名無しさん:2008/04/25(金) 21:17:03
頭がおかしい
109デフォルトの名無しさん:2008/04/26(土) 01:00:22
お前が一番おかしい
昭和生まれは死ね
110デフォルトの名無しさん:2008/04/26(土) 01:34:23
ほとんど昭和生まれだと思うんだがw
111デフォルトの名無しさん:2008/04/26(土) 05:36:34
こよいは平成20年なわけだし、まあそうだなよな
112デフォルトの名無しさん:2008/04/26(土) 08:24:39
変なのが湧いてるな
GW厨とかいうやつか
113デフォルトの名無しさん:2008/04/26(土) 16:19:07
GWってなに
休出まうまう
114デフォルトの名無しさん:2008/04/26(土) 22:46:58
>>113
それは組織の問題か個人の能力が組織の要求に足りていないのかどっちだ?
115デフォルトの名無しさん:2008/04/26(土) 23:50:43
いま帰宅した 両方ですね
俺と会社、どっちがさきに潰れるかっていう弱小
夢も希望もない方の低能です
116デフォルトの名無しさん:2008/04/30(水) 15:20:02
イベントディスパッチスレッドで発生した例外を一括して捕捉する方法は
ないでしょうか?
死んでしまわれる前になんとか捕捉してログを出すなり状況を記録するなりしたいのですが。
117デフォルトの名無しさん:2008/04/30(水) 19:02:39
必ずイベントディスパッチスレッドだけで発生した例外?
118デフォルトの名無しさん:2008/04/30(水) 19:25:53
119デフォルトの名無しさん:2008/05/01(木) 13:05:44
>>118
ありがとうございます。それでできそうな気がします。
イベントディスパッチスレッドを得るメソッドって標準ではないですよね?
invokeLaterとかで放り込んでイベントディスパッチスレッド上で実行
するのがいいでしょうか。
120デフォルトの名無しさん:2008/05/01(木) 13:08:40
SwingUtil か何かにあったろ。
121デフォルトの名無しさん:2008/05/01(木) 15:32:29
どれ?
122デフォルトの名無しさん:2008/05/01(木) 15:36:48
SwingUtilities#isEventDispatchThread() みたいな名前の奴
123デフォルトの名無しさん:2008/05/02(金) 05:29:48
EDTを返すわけじゃないんじゃ
124デフォルトの名無しさん:2008/05/04(日) 09:20:26
AWTですがこちらで質問させてください。
TrayIcon#displayMessageは
一部のプラットフォームでは、メッセージの表示をサポートしていない可能性があります。
らしいですが、WindowsXPでもできるOSできないOSがあるのでしょうか?
WindowsXP Media Center Editionをしようしていますが表示されません。
OSの問題なのでしょうか・・
125デフォルトの名無しさん:2008/05/04(日) 10:32:40
SystemTrayのjavadocには以下のように記述されています。
一部のプラットフォームでは、システムトレイが存在しなかったり、
サポートされていなかったりすることがあります。
その場合、getSystemTray() は UnsupportedOperationException をスローします。
システムトレイがサポートされているかどうかを検出するには、isSupported() を使用します。

上記の挙動は確認してますか?
SystemTray#isSupported()はfalseを返しているのでは?
126デフォルトの名無しさん:2008/05/04(日) 10:45:46
いえ、システムトレイ事態は使えていて、メッセージのみ使えないんです。
127デフォルトの名無しさん:2008/05/04(日) 10:47:56
そういや同じXP搭載マシンでもjava.awt.Desktopが動くマシンと動かないマシンがあるのは有名だね
たしか例外は出してなかったと思う
この1.6で追加されたクライアントサイドの強化のapiはバグバグとはよく言われてる
128デフォルトの名無しさん:2008/05/04(日) 10:52:36
>いえ、システムトレイ事態は使えていて、メッセージのみ使えないんです。
では、下記では?
SystemTray#isSupported()のjavadocには以下のように記述。
『開発者は、すべてのシステムトレイ機能がサポートされていると
想定しないでください。』
129デフォルトの名無しさん:2008/06/02(月) 11:59:22
excelのツールバーにある図形描画と同等の機能をSwingで実装しろといわれています。
そんなことできるのでしょうか?
また参考サイト等ありましたら教えていただけないでしょうか。
130デフォルトの名無しさん:2008/06/02(月) 12:08:28
>>129
>そんなことできるのでしょうか?

出来ないと断言できる理由が何もない

普通にSwing系の解説サイトでもあさると良いよ
131デフォルトの名無しさん:2008/06/02(月) 19:54:21
excelの描画と同等ってことは、ベクタデータじゃないといけないのか?
SVG描画用のライブラリと組み合わせるとかどうかな?
132デフォルトの名無しさん:2008/06/02(月) 20:04:29
恐らくそういう問題ではないと思う
133デフォルトの名無しさん:2008/06/03(火) 02:44:49
Java2D使えばExcel以上の出来るだろ。
Jude試してみ。
134デフォルトの名無しさん:2008/06/03(火) 02:54:20
期待されてるのはすぐ使える ActiveX コンポーネンツ のようなリブラリーが存在するかという事だと思うんだ。
135133:2008/06/03(火) 02:57:24
そこまで志低いんだったらPGやめろ、と言おうかと思ったんだが、
俺それ作って売ろうかな・・・
Java2D弄るの好きだし。
136デフォルトの名無しさん:2008/06/03(火) 11:19:45
>>133
今、eclipseにAmaterasUMLって言うのが入っていて、エクセルみたいに直線、
四角をD&Dで調整しながら作成できることを確認しました。
これはeclipseプラグインなので、SWTで実装されていると思いますが、
Swingで実装しなければいけない制限があり、Swingでのサンプルソース的なものがあるサイト等ありましたら
教えていただけないでしょうか。
137デフォルトの名無しさん:2008/06/03(火) 11:33:38
継承・インターフェイスを使った図形クラス管理
マウス・イベント処理
描画

と、まさに初級向け課題として定番だと思うので、授業を思い出して自力でがんばれ
138デフォルトの名無しさん:2008/06/03(火) 11:36:34
これとか
ttp://www.jgraph.com/
139デフォルトの名無しさん:2008/06/03(火) 12:42:45
なんと言うかホントJava初心者っぽくて・・・・時間かかりそうだな・・・・
サンプル以前にどう作るかを考える段階じゃないかね・・・・

というか、Excelみたいってのをどう捉えるか要件定義から入ろうぜ。
課題出した奴に詰め寄って、しっかりヒアリングからだ。
140デフォルトの名無しさん:2008/06/03(火) 16:19:05
jgraphはレイアウト機能が有料。
jungならオープンソースで全部そろうよ。
ttp://jung.sourceforge.net/

この手のグラフライブラリの話題は、定期的に出るなぁ。
141デフォルトの名無しさん:2008/06/04(水) 14:11:28
ラベル文字を5秒おきに変えたり、RMIでメッセージを受け取ったら背景色変化させたいのですが、
UIアクション以外の内部アクションを発生させる方法はあるでしょうか?
142デフォルトの名無しさん:2008/06/04(水) 15:19:27
>>141
よくわからないけどSwingUtilities.invokeLaterとか?
143デフォルトの名無しさん:2008/06/04(水) 19:25:05
JButtonのマウスイベントでボタンのD&Dを実装(setBoundsの連続)しました。
D&Dでボタン同士が重なり、また通過しても2つのボタンは正しく表示されていますが、
Graphics#drawLineで描いた線の上を通させると、ボタンは残りますが線は通過した範囲のみ消えます。

部品+setBoundsでjavaがうまく描画してくれているようなので、線の部品を探しましたが、
そのようなJコンポーネントはありませんでした。

通過後も線を残すためにはどのようにすればよいでしょうか。
144デフォルトの名無しさん:2008/06/04(水) 19:46:12
>>143
その線はpaintComponent(Graphics g)の中で描いているか?
145デフォルトの名無しさん:2008/06/04(水) 20:07:22
>>144
マウスイベンクラスないで、親パネルのgetGraphicsをとって、drawLineしています。
146デフォルトの名無しさん:2008/06/04(水) 21:16:21
>>145
ボタンなどを移動させると、swingはボタンを元の位置から消して新しい位置に描き直さなければならない。
このとき、swingは影響のあるコンポーネント全員に、「すまんが、表示が変わったので、もっかい描き直してくれ」 と通達を出す。
パネルやボタンなどはこれに応えて、背景を塗りつぶしたりボタンの絵を描き直している。
自分で勝手に描いた線などはこのとき一緒に消されてしまうので、自分もswingの通達に応えて線を描き直さなければならない。
具体的には、再描画が必要なタイミングで各コンポーネントの paint(Graphics) または paintComponent(Graphics) メソッドが呼ばれるので、
このメソッド内で drawLine を呼んで線を描き直すようにしておけば良い。
147デフォルトの名無しさん:2008/06/04(水) 21:33:03
スイングの設計方針を良く分かっていらっしゃる
148デフォルトの名無しさん:2008/06/04(水) 21:34:21
>自分で勝手に描いた線などはこのとき一緒に消されてしまうので、自分もswingの通達に応えて線を描き直さなければならない。 

問題はここを教えてあげることだったんだけど。
149デフォルトの名無しさん:2008/06/04(水) 21:48:09
>>146
ありがとうございます。できました!
線を描いても、書いた線に画像を通過させても残るようになりました。

書いた線をクリックで選択して、D&Dで動かそうとしていますが、方法が見当たらず苦戦しています。

書いた線の始点終点を保存しておき、クリック箇所の色を取得し
線用の色の場合は、保存した線情報から線を特定し、
D&Dポジションを使用して線を移動させようと考えているのですが、
クリックした位置の色情報が取れません。
Graphicsクラスやマウスイベント情報にそのようなメソッドがなくて…

そもそも書いた線をJButtonのような何かのコンポーネントとして扱うことはできないのでしょうか。
縦横のみならラベルにする手もありますが、斜めの場合はラベルではできないと思います。
150デフォルトの名無しさん:2008/06/04(水) 21:55:52
>>148
どういう意味?
151デフォルトの名無しさん:2008/06/04(水) 22:53:32
>>149
別に色を取得する必要はなくて、クリックした点 (cx, cy) と直線 (x1, y1) - (x2, y2) との距離 d を計算して
d が一定値以下なら線の上だと判断する。

だいたいこんな感じ。
if (cx >= min(x1, x2) && cx <= max(x1, x2) && cy >= min(y1, y2) && cy <= max(y1, y2)) {
  dx = x2 - x1
  dy = y2 - y1
  d = ((cy - y1) * dx - (cx - x1) * dy) / sqrt(dx * dx + dy * dy)
  if (abs(d) < 2) {
    ...
  }
}

理屈は数学の教科書でも読んでください。
152デフォルトの名無しさん:2008/06/05(木) 00:51:39
>>151
真面目ですなぁ、、、

if( cx >= min( ...
 if( abs( (cy-y2)*(cx-x1) - (cy-y1)*(cx-x2) ) < 0.01 ) {
  ...
 }
}
掴めるか否かは気分次第な超テキトー実装例w
153デフォルトの名無しさん:2008/06/05(木) 00:56:52
そういうことじゃなくて、java2d使えって落ちじゃないの?
154デフォルトの名無しさん:2008/06/05(木) 00:58:06
>>150
すぐ下に方法が書いてあったね。
155デフォルトの名無しさん:2008/06/05(木) 09:22:39
どうでもいいんだけどさ、JMenuBarに未実装メソッドでsetHelpMenu()なんてあったんだね。

ユーザーがメニューバーで「ヘルプ (help)」オプションを選択すると表示されるヘルプメニューを設定します。このメソッドはまだ実装されていないので、例外がスローされます。

どういう機能なんだろ・・・
156デフォルトの名無しさん:2008/06/05(木) 11:28:11
>>155
メニューバーの項目をひとつだけ右端に表示する機能じゃないかと想像する・・・
157デフォルトの名無しさん:2008/06/05(木) 11:37:39
なんだ〜 それならBoxですぐ可能かぁ 期待して損した。
158デフォルトの名無しさん:2008/06/05(木) 11:54:27
>>153
Line2Dなるクラスがあったのですが、求めているものではないようです。
線オブジェクトみたいなものはあるのでしょうか?
159デフォルトの名無しさん:2008/06/05(木) 13:22:10
>>155
awtにそのプロパティあったからそれをもとにに作ったのはいいが
プラットフォーム依存でやめたと予想
160デフォルトの名無しさん:2008/06/05(木) 17:15:32
>>151
それだとクリック毎に全部の線の範囲確認なので、できれば色を取得して
線の上でない場合、の処理を加えたいです。座標でピクセルを選択し、色を取得する方法はあるのでしょうか?
161デフォルトの名無しさん:2008/06/05(木) 23:12:28
>>160
色で判定とかマジでやめとけ
* 直線描画にアンチエイリアスがかかったら色判定できない。
* 直線の上しかつかめない。(実際のアプリケーションだとほかにオブジェクトが
ない場合はちょっと離れててもつかめるようにすることが多い。)
* 色をとる処理自体軽くない。
162デフォルトの名無しさん:2008/06/05(木) 23:13:04
>>160
直接画面に描く代わりにBufferedImageに線を描いておけば、BufferedImage#getRGBで色を拾える。
もしMacで動かす場合は、デフォルトでアンチエイリアスがかかるみたいなので、切っておかないと期待した色が出ないかもしれない。

画面上のピクセルを拾う方法もないこともないけど・・・あんまりおすすめできない。
画面がフルカラーでない場合、線を描くときに減色されて色が変わってしまうし。
他のウィンドウやコンポーネントが上に重なってると、色を拾えないし。
(アプレットの場合は)セキュリティにひっかかるし。
163デフォルトの名無しさん:2008/06/06(金) 08:33:53
JListやJTableなどの、実際にはレンダラーとしてしか存在しないコンポーネントにマウスイベントや、その他のイベントを伝えるにはどのようにすればよいでしょうか?
例えば、JListのレンダラーの一部にボタンを入れて、そのボタンを押す(ように見せる)ときなどです。

自分でやってみたのは、クリックされたポイントからそこにあるコンポーネントを取得し、そのコンポーネントのすべてのMouseListenerにMouseEventを伝える、という方法ですが、とてもいい方法とは思えません。
何かおすすめの方法はありませんでしょうか?
164デフォルトの名無しさん:2008/06/06(金) 09:44:21
そもそもsunのレンダラにJComponentの子を使ってるっていう設計自体が間違ってるのでそれに依存した実装はよくない。
165デフォルトの名無しさん:2008/06/06(金) 09:46:21
swingでHTMLを使って文字列を表示する処理を入れているのですが、
たまに一瞬HTMLのタグが見える問題に悩んでいます。
(もちろん、その後すぐに正しく文字列は表示されますが。)
HTMLタグの記述が多ければ多いほど、問題が発生しやすいようですので、
HTMLタグの解釈に時間がかかっているのだと思います。
上記の問題はどうすれば解決するでしょうか。
よろしくお願いします。
166デフォルトの名無しさん:2008/06/06(金) 10:34:05
>>165です。
HTMLを使って文字列を表示する処理は、別スレッドで行っておりました。
ですので、別スレッドの中で、invokeLater()を使ってEDTの処理として
実行するようにしたら、>>165の現象は発生しなくなりました。
でも、この対処法であっているのでしょうか。。
何か別の考えや私の考え違いがありましたら、ご指摘お願いします。
167デフォルトの名無しさん:2008/06/06(金) 10:49:37
>HTMLを使って文字列を表示する処理は、別スレッドで行っておりました。
現象をみれば、そうだろうね。

>でも、この対処法であっているのでしょうか。。
対処法というか、Swingは基本的にEDT上でしか実行しちゃ駄目ですよ。
なので、この"対処法"(EventQueue#invokeLater()でEDT上で処理を実行)というのがSwingの描画においての正道であって、EDTと別スレッドで実行する方がいけない。

SwingとEDTに関して理解できてなさそうなので、Sunに詳しいページがあるから、そこを読んでみるといいよ。
なんらかの理由があって、別スレッドで実行しているなら、上記を理解したうえでしかるべき実装を行えばいいと思う。
168デフォルトの名無しさん:2008/06/06(金) 11:55:16
>>167
さっそくレスありがとうございます。

>SwingとEDTに関して理解できてなさそうなので、Sunに詳しいページがあるから、そこを読んでみるといいよ。

ありがとうございます。
SwingのAPIを利用するときはEDT上で処理を実行するのが原則というのは
読んだことがあったのですが、おっしゃるとおり、ちゃんと理解していませんでした。

ちょっと横にそれますが、上記に関連して質問させていただきます。
Swingの勉強を始めたとき、原則にしたがってSwingのAPIを使用するときは、
なるべくEventQueue#invokeLater()を使って呼び出していたのですが、
フリーズしなければいいかと思って、いつのまにかinvokeLater()を使った書き方は
しなくなっていました。
一つのアプリの中で、SwingのAPIを使用する機会は頻繁にあり、
SwingのAPIを使用するとき、すべてEDT上で実行しようとすると
そのたびにinvokeLater()を使うことになり、大変コーディング量が多くなると思います。
そのコーディングは物理的に不可能だとは思いませんが、やっぱり大変なので
Swingでアプリを作っている人は、SwingのAPIを使用するとき、invokeLater()を
使ったり使わなかったりしていると思っています。
そこで質問があるのですが、invokeLater()を使ってSwingのAPIを呼び出すのと
invokeLater()を使わないことの切り分けの基準みたいなものがありましたら、
お教えお願いたします。(長々とすみません。)
169デフォルトの名無しさん:2008/06/06(金) 12:12:54
MVCで切り分けたらいいんでね?
VC系の処理はEDTだからinvokeLater()使わずに素で書けばいいし
重い処理は別スレッドのMに渡してがーっと処理して
最後にinvokeLater()でVCのデータ受け取りメソッドを呼んでもらえばいい
170デフォルトの名無しさん:2008/06/06(金) 12:29:30
> そのたびにinvokeLater()を使うことになり、大変コーディング量が多くなると思います。
例えば、main()から実行を開始する場合、invokeLater()に渡す
Runnable#run()内で、Window(JFrame等)インスタンスやその他コンポーネントを構築して実行を開始します。
そうすれば、invokeLater()を意識せずともEDT上で実行されますので、通常は、その都度invokeLater()を呼び出す必要はありません。

> Swingでアプリを作っている人は、SwingのAPIを使用するとき、invokeLater()を
> 使ったり使わなかったりしていると思っています。
> そこで質問があるのですが、invokeLater()を使ってSwingのAPIを呼び出すのと
> invokeLater()を使わないことの切り分けの基準みたいなものがありましたら、
時間がかかる処理で、描画を伴わない場合、EDTと別スレッドで実行し、その処理が実行された後に、
GUIの描画を更新する必要がある場合、invokeLater()を使用します。
例えば、ListModelやTableModelをEDTと別スレッドで生成(Listenerが登録されておらずGUIと無関係であること)後、
そのModelをJList#setModel(),JTable#setModel()で設定する場合、setModel()内で再描画が要求されるため、
setModel()の呼び出しはEDT上で実行する必要があります。

もちろん、EDTと別スレッドで実行した処理がGUIと無関係であれば、上記の処理は不要です。

まぁ、ともあれ、Sunのページを読んで動作原理を理解した後、SwingUtilities#invokeLater(),SwingUtilities#invokeAndWait(),
SwingWorkerクラスも調べて、実行していれば自ずと理解できるのではないでしょうか。

切り分けの基準は、169と一緒。
171デフォルトの名無しさん:2008/06/06(金) 12:50:10
>>169
>MVCで切り分けたらいいんでね?

なるほど。。そこから考えると、すっきりしました。
ありがとうございます。

>>170
>例えば、main()から実行を開始する場合、invokeLater()に渡す
>invokeLater()を意識せずともEDT上で実行されますので、
>通常は、その都度invokeLater()を呼び出す必要はありません。

なるほど。。

>時間がかかる処理で、描画を伴わない場合、EDTと別スレッドで実行し、
>その処理が実行された後に、 GUIの描画を更新する必要がある場合、
>invokeLater()を使用します。

なるほど。。
基本的なinvokeLater()の使用スタイルになりそうです。
ありがとうございます。

>setModel()内で再描画が要求されるため、 setModel()の呼び出しはEDT上で
>実行する必要があります。

とてもいい例を提示していただき、ありがとうございます。
今後、盲点になりそうなところだったと思います。

おっしゃる通り、ドキュメントの理解をきちんとしておく必要がありそうです。
しかし、おかげ様でかなり理解が深まりました。
レスありがとうございました。
172デフォルトの名無しさん:2008/06/06(金) 13:19:11
>>152
計算が理解できなかったので他の方法を探ってみました。
new Line2D.Doubleで線オブジェクトにして、contains(イベントからのポイント)でいけると思ったのですがダメでした。
javadocを確認したら、線は領域を持たないということで、常にfalseを返していました。
Areaというものがあったので、ラッピングしてみましたがこれもダメでした。
new Area(line).contains(point)
線に対して、指定ポイント上にあるかの判断は標準ライブラリとして用意されていないのでしょうか?
173デフォルトの名無しさん:2008/06/06(金) 13:30:49
>>172
その線というのは、数学的な無限に細い線(幅が0)を表しているから
単純にArea化しても一緒

その手のやりかたをするなら
Stroke stroke = new BasicStroke( 線幅 );
Line2D line = new Line2D.Double( ... ) ;
Shape shape = stroke.createStrokedShape(line);
shape.contains(point)
とすればたぶんできる
174デフォルトの名無しさん:2008/06/06(金) 14:51:42
mouseDraggedの発生タイミングって決まっているのでしょうか。
例えば1ピクセル移動ごとに発生とか。
175デフォルトの名無しさん:2008/06/06(金) 14:56:52
決まってない。
てきとーに発生する。
176デフォルトの名無しさん:2008/06/06(金) 15:25:41
>>173
ありがとうございます!!!!
できました。これを駆使して、描画した線のD&Dが実装できました。
感謝です。
177デフォルトの名無しさん:2008/06/06(金) 18:01:30
ボタンを押したら凹んだままになり、再度押すと凸になるボタンてないのでしょうか。
JButtonにはそれらしきプロパティがなかったです。
トグル系もラジオボタンとチェックボックスしかなくダメなようです。
178デフォルトの名無しさん:2008/06/06(金) 18:25:12
>ボタンを押したら凹んだままになり、再度押すと凸になるボタンてないのでしょうか。
javax.swing.JToggleButton
179デフォルトの名無しさん:2008/06/06(金) 19:30:43
>>172
あれ?線分までの最短距離を出すメソッドがあってそれ一発で済むと思ったけど…
Line2D#ptSegDist() だっけ?
180デフォルトの名無しさん:2008/06/06(金) 20:12:39
計算内容を理解せずに使うという点では結局どれも同じだと思うけどな
181デフォルトの名無しさん:2008/06/06(金) 22:08:04
ラベルがあるパネルに背景をBufferedImageでセットしています。
ラベルの表示、非表示機能を実装しようとし、ラベルのsetEnabledをしましたが、
ラベル部分がデフォルト背景(?)の灰色になり、BufferedImageが適用されません。
また、ラベルのマウスイベントも生きているようです。
ラベル非表示をsetBounds(new Rectangle(0,0,0,0))で実現していますが、邪道でしょうか?
もっとスムーズな方法があればご教授ください。
やりたいことは、見た目の完全消去(BufferedImageで塗りつぶし)、イベント等も発生させない、です。
182デフォルトの名無しさん:2008/06/06(金) 22:41:05
>>181
setVisible(false) は?
183デフォルトの名無しさん:2008/06/07(土) 00:29:20
java2dといわれたら普通に分かると思うんだけど…
ただ、感謝もあったし、親切なのはいいことですね
184デフォルトの名無しさん:2008/06/07(土) 00:35:10
計算の方を理解するのはたぶん無理でしょ。
線形代数とかになるけど、結局その式一つを説明するにしても高度な数学wを理解しなければならないことと同じだからね。

化学とか薬学・医学の人すら使わないし、PGは理系文系の混在だからなんともいえない。
数学の理解よりも、分からない人は、そういうのは頭いい人に任せておいて無理しないでjava2dとか使って素直に実装してくれればいいよ。
185デフォルトの名無しさん:2008/06/08(日) 17:10:28
質問があります。
Swingで日韓の文字を交ぜて表示したいのです。
JEditorPaneのtext/htmlモードでは普通に(タグで指定とかしなくても)うまくいきました。
JEditorPaneのtextモードでは表示してくれませんでした(・・・ナカグロになります)。
JTreeで表示したいのですが、どうすれば良いでしょうか?

環境はOSがWindowsXP、JDK(JRE)が1.6.0_06、
LookAndFeelはWindowsLookAndFeelを使用していますが、使用しなくても支障ないです。
186デフォルトの名無しさん:2008/06/08(日) 18:34:01
187デフォルトの名無しさん:2008/06/09(月) 01:37:13
>>186
ありがとう。
原因はハングルをUTF-8でファイルに保存する時に文字コードを破壊していたようです。試しにunicodeにして保存したら、JTreeのフォントがDialogのままで正しく表示されました。
JRE1.6.0_06はfont.propertiesを書き換えなくても普通にハングルが表示出来るようです。
関係あるかわからないけど、C:\Program Files\Java\jre1.6.0_06\lib\fontconfig.properties.srcの中に普通に
serif.plain.korean=Batang
って書いてありました。
188デフォルトの名無しさん:2008/06/09(月) 09:31:18
JFileChooserを使って、「ファイルを開く」ダイアログを表示するのに
5秒間くらい時間がかかります。
ダイアログが表示されるのが遅い原因は何が考えられますでしょうか?

本に書いてあるサンプルを元にしたので、
次のようなシンプルなコードを記述しています。

JFileChooser filechooser = new JFileChooser("./conf");
filechooser.setDialogTitle("条件ファイルの選択");
// getContentPane()またはthisを指定
int selected = filechooser.showOpenDialog(getContentPane());

ダイアログを開こうとすると、タスクマネージャでCPUの使用量が
2%くらいから50%に一気に上がります。
重いソフトなどは落としてから実行してもやはり表示されるのが
遅いです。
LOOK&FEELは、windowsを選択していたのですが、デフォルトのLOOK&FEELを
使用しても、効果はありませんでした。
開発環境にeclipseを使っているのですが、それが原因でしょうか。

何かお気づきのところがありましたら、ご教授のほどお願いいたします。
189デフォルトの名無しさん:2008/06/09(月) 09:33:12
>>188
>>56 が直ってないんじゃないかと。
190デフォルトの名無しさん:2008/06/09(月) 09:33:18
OSとかCPUとかMEMかかないと・・・
191デフォルトの名無しさん:2008/06/09(月) 09:49:51
>>189
>>190

すみません、以下、スペックです。
OS :XP Home Edition SP2
CPU:CORE 2 DUO 6600 2.4GHz
MEM:1GB
JRE:1.6.0_06

>>56のリンク見ると、同じ問題のようですね。
こんな問題があったとは、、、、仕方がありませんので
JRE1.5で動くようにさせます。
レスありがとうございました。
192デフォルトの名無しさん:2008/06/09(月) 09:55:35
newするところで重くなったんじゃなかったけ?
なので、最初にnewして起動処理と思えばある程度納得できる。
193デフォルトの名無しさん:2008/06/09(月) 10:05:47
そのスペックで5秒はおかしいだろ
194デフォルトの名無しさん:2008/06/09(月) 10:33:52
>>192
ありがとうございます。
あらかじめJFileChooserオブジェクトを生成しておけば、素早く
ダイアログが起動するようになりました。
JRE1.5で動かすように修正し始めていたので助かりました。

>>193
本当に数えたら平均5秒だったんです。
6秒以上のときもあります。。
195デフォルトの名無しさん:2008/06/09(月) 10:49:05
>なので、最初にnewして起動処理と思えばある程度納得できる。

たしかにそうでした。
画面を表示することが遅くなりました。やはり、5秒くらいかかります。
簡単なツールを作っているので、この遅さは気になるので
1.5で作ることにします。。無念です。ありがとうございます。
196デフォルトの名無しさん:2008/06/09(月) 11:17:43
これ実行環境の問題なのに?
197デフォルトの名無しさん:2008/06/09(月) 11:38:30
>>196
少しだけ1.6に依存するコードを書いていました。

今、1.5で動くようになりました。
1秒ほどで起動でき、「ファイルを開く」ダイアログも早く
起動できるようになりました。とりあえず、安心しました。。
198デフォルトの名無しさん:2008/06/09(月) 13:51:29
いい加減直ってほしいバグだな…
199デフォルトの名無しさん:2008/06/09(月) 13:53:25
同じパネルに乗っかっているボタンを重ねたときの上下関係って
デフォルトではaddした順ぽいのですが、addし直さなくても上下関係を変える方法はあるでしょうか?
200デフォルトの名無しさん:2008/06/09(月) 14:49:57
setComponentZOrderは?
201デフォルトの名無しさん:2008/06/09(月) 15:52:12
そもそもボタンを重ねるようなユーザインターフェースってどうかと思うが…
setComponentZOrder かレイアウトをOverlayLayoutにするとかかな
202デフォルトの名無しさん:2008/06/09(月) 15:54:06
もしかしてCardLayoutみたいなことしたいんじゃ?
203デフォルトの名無しさん:2008/06/09(月) 18:38:04
>>193
FileChooserが重くなる不具合しらんのか?
u2からでてきたやつだよ
204デフォルトの名無しさん:2008/06/09(月) 20:53:14
ImageIconオブジェクトの作成についてお聞きします。
ImageIconオブジェクトを生成するソースファイル(あるいはクラスファイル)と
同じフォルダにsample.pngを置いておき、次のようなコードを書いても実行しても、
ImageIconオブジェクトを取得できません。

ImageIcon sampleIcon = new ImageIcon("sample.png"); …(1)

↓これもだめでした。
ImageIcon sampleIcon = new ImageIcon("./sample.png"); …(2)

↓次の相対パスの指定なら取得することができました。

ImageIcon sampleIcon = new ImageIcon("bin/test/sample.png");

こちらでもOKでした。
ImageIcon sampleIcon = new ImageIcon("src/test/sample.png");

※src配下にはソースファイル、bin配下にはクラスファイルを置いています。

↓もちろん、絶対パスの指定でもImageIconオブジェクトを取得することができます。
ImageIcon sampleIcon = new ImageIcon("C:/eclipse/workspace/sample/src/test/sample.png");

(1)や(2)の方法でImageIconオブジェクトを取得するにはどうしたらいいでしょうか?
205デフォルトの名無しさん:2008/06/09(月) 20:59:29
つ ClassLoader#getResource
206デフォルトの名無しさん:2008/06/09(月) 21:02:18
207デフォルトの名無しさん:2008/06/09(月) 21:10:19
jarファイルの話?それならjarがルートになっているからそうなると思う。
画像はres(リソース)とかimg(イメージ)とかルートの直下にフォルダを作って
img/sample.pngとかでアクセスするのが普通なのかな。
208デフォルトの名無しさん:2008/06/09(月) 21:12:03
そもそもSwingの話なのか?
209デフォルトの名無しさん:2008/06/09(月) 21:23:16
>>205,206
お教えありがとうございます。↓でうまくいきました。
ImageIcon sampleIcon = new ImageIcon( getClass().getResource("sample.png") );
ImageIcon sampleIcon = new ImageIcon( getClass().getResource("./sample.png") );

>>207
jarにまとめてから実行してなくて、クラスファイルから実行しています。
210デフォルトの名無しさん:2008/06/09(月) 21:31:26
画像を
C:/eclipse/workspace/sample/img/sample.png
ここに移動して
ImageIcon sampleIcon = new ImageIcon("img/sample.png");
っていうのも試してみて。押し付けがましいけど、こっちの方がいいと思うから。
211デフォルトの名無しさん:2008/06/09(月) 21:35:38
>>210
>ImageIcon sampleIcon = new ImageIcon("img/sample.png");
>っていうのも試してみて。押し付けがましいけど、こっちの方がいいと思うから。

いえいえ、ありがとうございます。
画像はimgの中にまとめてみます。
212デフォルトの名無しさん:2008/06/09(月) 23:26:48
>>208
ImageIcon自体はSwingだから大目にみなされ
クラスパスの理解が足りないだけだから確かに関係はないけど
213デフォルトの名無しさん:2008/06/09(月) 23:35:16
ここで質問する前に The Java Tutorials で調べてみましょう。
http://java.sun.com/docs/books/tutorial/uiswing/index.html
214デフォルトの名無しさん:2008/06/12(木) 19:22:12
swingでネットワーク経由の処理要求を常に受けたい場合、
つまり、画面イベントではなく別なイベントループでswingと連動したい場合は、
SwingWorkerのdoInBackgroundでイベントループ(アプリを終了するまでreturnしない)し、
その中でpublish呼び出しし、processで画面更新処理、
という設計にすればよいでしょうか。
215デフォルトの名無しさん:2008/06/12(木) 19:37:17
SwingWorkerのソースコードみてみると、ワーカースレッドは最大10個までみたい
それを恒常的に1個消費するというのはどうだろう・・・
アリといえばアリのような気もするけど、微妙なところ
216デフォルトの名無しさん:2008/06/12(木) 19:59:32
swingで時計表示(1秒後とに更新)のようなアプリってどうやって実装するのが普通なのか?
217デフォルトの名無しさん:2008/06/12(木) 20:00:48
SwingのTimerでいんでね?
218デフォルトの名無しさん:2008/06/12(木) 20:11:04
1つのjavaプロセスで複数のWindowを表示するときって(同じスレッドでnew JFrame()を何回か実行)したとき
全画面のイベント処理スレッドって一個だけになっているけど、
ウィンドウごとに分けること、つまり他の画面更新が頻繁でその影響を食らいたくない場合用に
イベント処理スレッドを画面分起動することなんてできるのだろうか?
219デフォルトの名無しさん:2008/06/12(木) 20:28:58
>>218
無理です ♥
アプリのプロセス毎分離してみては?
220デフォルトの名無しさん:2008/06/12(木) 22:25:03
>>216
時計だけならSwingのTimerでいいが実際のところバックグラウンドで南下したい場合
普通にデーモンスレッドにすればいいだけでしょ

そこからイベントディスパッチスレッドになげるだけ
221デフォルトの名無しさん:2008/06/12(木) 22:42:40
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070413/268205/?ST=develop#r1
↑に、
つまり,別スレッドからJButton#setTextメソッドなどをコールすることはできないということです注1。
他のスレッドからSwingのメソッドをコールするには,SwintUtilities.invokeLaterメソッドを介して行います。

とありますが、イベントディスパッチ以外のスレッドからJButton.setText()を呼んでも問題なく描画できています。

イベントディスパッチ以外のスレッドからのJComponentのアクセスは、paint以外やらないほうが良いのでしょうか?


222デフォルトの名無しさん:2008/06/13(金) 00:27:39
JButton#setText() を呼んで描画できたってこととをもってそのコードが
スレッドセーフであるとは言えないだろ。setText()実行中に別スレッドが
setText()する場合とか考えてみれ。

>イベントディスパッチ以外のスレッドからのJComponentのアクセスは、
>paint以外やらないほうが良いのでしょうか?
「やらないほうがいい」じゃなくて「やってはならない」だ。
それと呼んでいいのはrepaint()ね
223デフォルトの名無しさん:2008/06/13(金) 10:37:24
そういやjavaSEには同期でpaint()呼ぶメソッドないな。MIDPにはあるんだが。
224デフォルトの名無しさん:2008/06/13(金) 11:29:24
>>222
ありがとうございます。
「コールすることはできないということです」ではなく
「スレッドセーフではないので保証されなく、呼んではいけない」ですね。

できないって書いてあったので、new Exception().getStackTrace()からスレッドをチェックしているのかと思って。
225デフォルトの名無しさん:2008/06/13(金) 11:45:12
「できない」という場合、「してはならない」という意味のことが多いな
226デフォルトの名無しさん:2008/06/13(金) 11:54:26
ベースのウィンドウから別の画面を出したり消したりする場合、
以下よりも
 frame = new JFrame();
 ・・・なんかやって用済み
 frame.remove();
 frame.validate();
 frame = null;
 ・・・また必要になる
 frame = new JFrame();
以下の方が良いのでしょうか?
 frame = new JFrame();
 ・・・なんかやって用済み
 frame.dispose();
 ・・・また必要になる
 frameshow();
227デフォルトの名無しさん:2008/06/13(金) 12:03:02
>>226
>  frame = new JFrame();
>  frame = new JFrame();
参照を理解していないようだから、
何の参照か理解すれば、分かるはず。
Swingの問題ではない。
228デフォルトの名無しさん:2008/06/13(金) 12:32:52
>>227
ちょっとまて

> frame = new JFrame();
>以下の方が良いのでしょうか?
> frame = new JFrame();

こうなってるぞ
229デフォルトの名無しさん:2008/06/13(金) 12:54:08
>>226
どのみちdispose()はすべきじゃないの?完全に管理下に置いているなら。
あとは空間と時間のトレードオフと思われ。おまけ:
frame.remove(); // -> frame.removeAll();
frameshow(); // -> frame.show();
230デフォルトの名無しさん:2008/06/13(金) 12:59:51
たぶん画面が必要になるたびにJFrameオブジェクトをつくるか1度だけ作って
不要になったときdisposeだけしてオブジェクトを使いまわすのとどっちがいいのかって
ことを聞きたいんだろうけど…

好きにすれば?

ってか典型的なメモリとCPUのトレードオフじゃね?
そのフレームがどの程度の頻度で表示されるか?とか
想定する実行環境のメインメモリの量は?CPUは?とかいろいろ考えて決めてくれ。
ものすごく頻繁に再表示されるならdispose()しないという選択肢もあるだろうし。
231デフォルトの名無しさん:2008/06/13(金) 14:51:58
>>224
閑話休題

それでスレッドチェックはできるが
「無茶苦茶」重くなる。
次世代か、現世代かで、(別だったか?)
Exceptionのスッタクトレース生成のコストを
計った事があったけど、かなり重量級処理になった。
誰かがブログに載せてたな。
232デフォルトの名無しさん:2008/06/13(金) 15:14:33
スレッドのチェックって Thread.currentThread() か ThreadLocal では?
なぜスタックトレース?
233デフォルトの名無しさん:2008/06/13(金) 17:12:59
>>229
disposeはsetVisible(false)と同じことなのでしょうか。
disposeはネイティブスクリーンリソースの開放とありますが、
java内部ではshow()で復活できるようにメモリは破棄しないで保持しつづけるのでしょうか。

完全にリソースを消したかったので、removeAll()を実行しましたが、
画面は表示されたままですが、イベント関係は死んでいるようです。
正しい手順としては、
frame.setVisible(false);
frame.removeAll();
frame = null;
でよろしいでしょうか。
234デフォルトの名無しさん:2008/06/13(金) 17:39:07
>>233
>disposeはsetVisible(false)と同じことなのでしょうか。

そこが間違い。
dispose()すればウィンドウシステム上のウィンドウ本体(動くGUI)はなくなるけど、
それと同じものを復元できるだけの本質的なデータ(プロパティ)はJVM側に残っている。
だから再びsetVisible(true)できる。
それを残しておくゆとりがないならremoveAll()でもすればいい、ということ。
235デフォルトの名無しさん:2008/06/13(金) 17:48:16
そりゃ違うだろ
236デフォルトの名無しさん:2008/06/13(金) 17:59:52
ゆとりがないならJFrameを含めて破棄しろよw
frame.setVisible(false);
frame.dispose();
frame = null;
237デフォルトの名無しさん:2008/06/13(金) 18:12:27
>>236
frame.removeAll();しなくて大丈夫でしょうか?

frame.setVisible(false);
frame.dispose();
frame.removeAll();
frame = null;
238デフォルトの名無しさん:2008/06/13(金) 18:13:39
removeAll()がどんだけ破棄の効率に影響するかという点は疑問だが、まあ参照切れそうだしいいんじゃね
239デフォルトの名無しさん:2008/06/13(金) 18:15:42
>>237
そこまで行くと>>227かな
240デフォルトの名無しさん:2008/06/13(金) 18:16:56
frameの子コンポーネントがframe内部以外から参照されてないなら frame = null で済むし
frame以外から参照されてたらまずそっちの参照をなくさないと意味ない
参照切るって意味わかってるのかしら…?
241デフォルトの名無しさん:2008/06/13(金) 18:18:21
GCを信用できない心境ってあるでしょ
242デフォルトの名無しさん:2008/06/13(金) 18:59:11
>>240
イベント処理クラスが絶対握ってるから、そこの参照取るように終了系のメソッド呼ぶ必要はないの?
簡単に想像できるけど。ちなみにJFrameのfinalizeにも何もないから…終了系メソッドコールは必要でしょう?
243デフォルトの名無しさん:2008/06/13(金) 19:09:52
>>242
必要ないよ。
そのイベント処理クラスとやらのインスタンスが他から参照されてないなら。
244デフォルトの名無しさん:2008/06/13(金) 19:10:12
JFrameにはfinalizeがなくてもそのスーパークラスのFrameやWindowにはfinalizeあるよ
245デフォルトの名無しさん:2008/06/13(金) 21:43:50
>>244
javadoc見たけどないですよ・・・
246デフォルトの名無しさん:2008/06/14(土) 00:18:14
>>245
1.6でなくなった
247デフォルトの名無しさん:2008/06/14(土) 14:05:21
消えたのか・・・ 1.5見てたよ・・・
248デフォルトの名無しさん:2008/06/16(月) 20:51:27
ウィンドウ幅は変更せずに、ウィンドウ内の部品や描画した線を全体的に拡大する事がさくっさできる方法はあるでしょうか?
イメージとしては、グーグルマップの拡大・縮小です。
また、グーグルのグリップオンでの移動のようなことも簡単でできる方法はあるでしょうか。
249デフォルトの名無しさん:2008/06/16(月) 20:58:37
アファイン変換でもすれば?
250デフォルトの名無しさん:2008/06/16(月) 23:20:18
>>249
あれ?Swingでそれやっちゃだめじゃなかった?
251デフォルトの名無しさん:2008/06/17(火) 09:34:40
コンポーネントの描画を自前で面倒見れるなら別に良いんじゃね?
252デフォルトの名無しさん:2008/06/17(火) 12:20:38
>>251
Swingのすべてのコンポーネントの処理を自前で処理するのかい?
253デフォルトの名無しさん:2008/06/17(火) 12:47:42
いやアファイン変換するところだけよ。
Swingの描画はjava2Dで行われてるんだから自分でJava2D使っても一緒だろ。
鏡文字テキストフィールドとかネタで作ったことあるぞ。
254デフォルトの名無しさん:2008/06/17(火) 13:34:57
>>253

>>248がいってるのは子のコンポーネントについても拡大縮小されるべきってところだろ?
ウインドウ内の部品についてもということだから

それにJava2Dの話なら別にこのスレでするような内容でもないし
255デフォルトの名無しさん:2008/06/17(火) 13:41:43
ならJava2Dはどのスレ?
256デフォルトの名無しさん:2008/06/17(火) 13:44:14
多分ここ
http://localhost:8083/
257デフォルトの名無しさん:2008/06/17(火) 13:44:52
258デフォルトの名無しさん:2008/06/17(火) 13:47:58
>>256
吹いたw
259デフォルトの名無しさん:2008/06/17(火) 13:51:35
基本がわからないのなら初心者スレでいいだろ
ネタのない現世代Javaでもいいだろうし
260デフォルトの名無しさん:2008/06/17(火) 14:08:46
なんか昔、縦書きどうやるんですかって質問で、
ただGraphicsを回転させるだけのネタ回答があったな。
マウスポインタの座標そのままで。
261デフォルトの名無しさん:2008/06/17(火) 16:20:06
>子のコンポーネントについても拡大縮小されるべき
出来ないこともないぞ。描画時にjava2D使ってドローベースでスケーラブルUI実装すれば良いだけだから。
実際そういうGUI作ってる実験プロジェクトが昔あったし。
SwingHacksでも同じことやってたし。
262デフォルトの名無しさん:2008/06/17(火) 16:38:21
できないことはない
といったらなんでもできるというのと同義になっちまうだろ。

そもそもそれはもはやSwingでもないだろ。

極端すぐる。
263デフォルトの名無しさん:2008/06/17(火) 19:32:13
読み込んでドローしたイメージの倍率を変えたいのですが、どのようにすればよろしいでしょうか?
現在下記の通りに処理しております。
ImageIO.read で読込み
new TexturePaint() に読み込んだものを渡す
Graphics2D.setPaint ペイントをセット
Graphics2D.fillRect ドロー
264デフォルトの名無しさん:2008/06/17(火) 19:38:11
それはSwingなのか?
265デフォルトの名無しさん:2008/06/17(火) 21:45:59
だからJava2Dは>>257だって
266デフォルトの名無しさん:2008/06/18(水) 01:17:57
267デフォルトの名無しさん:2008/06/19(木) 10:48:59
Windowsの色の選択ダイアログ(グラディエーションのやつ)を実装したいと思うのですが、
あの縦横の色の出し方はどのような計算でしているのでしょうか。
また、ちょっと前のレスでもありましたが、クリックした場所の色を取得することはできるのでしょうか?
268デフォルトの名無しさん:2008/06/19(木) 11:20:46
Color#HSBtoRGB
hue=0〜1を横に
saturation=0〜1を縦に
269デフォルトの名無しさん:2008/06/19(木) 12:42:47
>>267
Javaのウィンドウでないと駄目じゃん・・・と思ったけど
色キャプチャモードに入ったときに
java.awt.Robotで全画面キャプチャしてそれを全面表示したWindowから選ばせる
とかなら可能かも。
270デフォルトの名無しさん:2008/06/19(木) 12:54:48
>>269
ピッカーじゃなくて色選択ダイアログの話だろ。
JColorChooserみたいなの
271デフォルトの名無しさん:2008/06/19(木) 13:55:23
>>270
てっきり色選択のダイアログについてる
任意の部分の色を、パレットに取ってきたいって話かと・・・
272デフォルトの名無しさん:2008/06/19(木) 19:05:04
クリックした場所の色を取得するのではなく
クリックした場所を元に表示と同じ計算をしてだしたほうがいいよ

Javaに限った話ではないけど
273デフォルトの名無しさん:2008/06/19(木) 20:17:59
ん、どういうこと?
274デフォルトの名無しさん:2008/06/19(木) 20:34:58
描画の時、ここは何色、ここは何色・・・ってやってくっしょ?
それを逆に計算しろってこと。
邪道な手を使うなら、BufferedImageのGraphicsにコンポーネント書かせて、getRGB(int,int)。最悪ね。
275デフォルトの名無しさん:2008/06/19(木) 20:47:31
getRGB(int,int)これは色の取得だと思うけど計算なのか?
最悪って程でもないんじゃないのかな。fpsによるけど。
276デフォルトの名無しさん:2008/06/19(木) 20:55:44
1ピクセルのクリッピング枠にも最大限効率的に対応できるように描画メソッドを書くわけですね、わかります
277デフォルトの名無しさん:2008/06/19(木) 20:59:26
>>276
BufferedImage使っても十分効率的に出来るし、アルゴというか実装次第じゃないの?
278デフォルトの名無しさん:2008/06/19(木) 21:03:41
全く話がかみあってないなw
279デフォルトの名無しさん:2008/06/19(木) 21:07:15
>>275
>>274は「普通は計算してやれ、getRGB()でもできるけど邪道だ」っていってるんだろ…
より低負荷で簡単な方法が目の前にあるなら普通はそっちを選ぶだろ…
BufferedImageに書かせるって時点で本来やる必要がまったくないことを
やってるわけでCPUもメモリも無駄すぎてどうしようもない。最悪。
280デフォルトの名無しさん:2008/06/19(木) 21:16:16
>>279
解説ありがとう。まさにその通り。
質問の内容のレベルから、頭使わずにできる方法も提供したってところです。
281デフォルトの名無しさん:2008/06/19(木) 21:30:42
>>279
その程度か。>>277よく読んでほしかったけど、ま、いいけど。
282デフォルトの名無しさん:2008/06/19(木) 23:43:17
>>281
十分効率的ってのが実用的な速度て動くって意味ならその通りだろう。
問題ない速度で動く。でもそれだけだ。
単純に計算した方が速いし省メモリじゃね?
283デフォルトの名無しさん:2008/06/20(金) 00:02:51
画像から取得だとピクセルフォーマットに左右されるのがやばい
284デフォルトの名無しさん:2008/06/20(金) 00:54:24
>>272から参加してたから、前の方をよんでなかった。
カラーチューザーの話しだったから計算できるのか。
画像とかの色のことだと思ってた。
285デフォルトの名無しさん:2008/06/20(金) 12:22:59
画像のスポイトにしてもオフスクリーンで描画している画像からのルックアップだな
286使用書無しさん:2008/06/23(月) 07:45:23
swingはそんなに遅くないよ。
http://jdrafter.sakura.ne.jp
↑これ100%pure java でswinngベースのドローソフトだけどnative版とそん色ない。
287デフォルトの名無しさん:2008/06/23(月) 11:11:45
MouseListenerでマウス右クリックを実装したいのですが、Windows、Linux、Macで実装が違うと本に書いてありました。
具体的にはどういう違いがあるのでしょうか?
288デフォルトの名無しさん:2008/06/23(月) 11:17:05
pressとreleaseのどちらをトリガにするかがプラットフォームによって違うので
それを判定する必要があったと思う。判定用のメソッドが用意されてる。
289デフォルトの名無しさん:2008/06/23(月) 11:41:49
>>288
ありがとうございます。
290デフォルトの名無しさん:2008/06/23(月) 12:05:57
右クリックか・・・
Macのワンボタンマウスのことも忘れないでね
291デフォルトの名無しさん:2008/06/23(月) 12:24:04
右クリックじゃなくて、ポップアップメニュー出すかどうかの判定が欲しいんじゃね?
292デフォルトの名無しさん:2008/06/23(月) 13:08:17
>>286
だれもそんな話してないだろ?
293デフォルトの名無しさん:2008/06/23(月) 14:02:17
宣伝だろ
294デフォルトの名無しさん:2008/06/23(月) 16:06:47
MouseEvent#isPopupTrigger
てのがあるねい
295デフォルトの名無しさん:2008/06/23(月) 17:06:33
しかしそれではアプリケーションキーやSHIFT+F10には対応できない
296デフォルトの名無しさん:2008/06/23(月) 17:10:45
>>290
もう、忘れちゃって、2本指でタップしていただけませんでしょうか。

あと、mighty mouse。
297287:2008/06/23(月) 17:20:55
おしゃる通りPopupMenuの処理なのですが、こんな感じでWindows以外もよろしいでしょうか?
@Override
public void mousePressed( MouseEvent e) {
左ボタンとPopup共通処理
if(SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger()) {
showPopup();
return;
}
左ボタンの処理
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger())
showPopup();
}
298デフォルトの名無しさん:2008/06/23(月) 17:49:52
JComponent#setComponentPopupMenu っていうのもあるよ
299287:2008/06/23(月) 18:29:29
>>290-291,294-296,298
ありがとうございます。
300使用書無しさん:2008/06/23(月) 23:43:23
java廚のみなさん
これ http://jdrafter.sakura.ne.jp
にjavaとawtのすべてがつまってるお
くやしかったらこれに匹敵するのつくってね
301デフォルトの名無しさん:2008/06/24(火) 00:19:37
まったく口惜しくないんだが、この感情をどうすればいいのだろうか?
302デフォルトの名無しさん:2008/06/24(火) 00:20:15
このコテハンうぜー
303デフォルトの名無しさん:2008/06/24(火) 00:34:30
>>301
URIで透明あぼーん。
304デフォルトの名無しさん:2008/06/24(火) 00:39:28
URI wwww
305デフォルトの名無しさん:2008/06/24(火) 00:55:39
宣伝うざい
306デフォルトの名無しさん:2008/06/24(火) 01:29:10
しかもSWTスレでもあばれてるな
SWTじゃSwingみたいに作れないでしょうとか

そしてSwingスレでも馬鹿にした言い方はまるでGKに似てるな
307デフォルトの名無しさん:2008/06/24(火) 01:53:08
>>306
せっかくあぼーんしてんだから話題に出すなよ。
308デフォルトの名無しさん:2008/06/24(火) 11:10:25
しかし、宣伝にしても全く買いたくなくなる口調だから、
多分アンチだろ・・・・・
309デフォルトの名無しさん:2008/06/24(火) 13:41:36
ボタンの上に線を描くことはできないでしょうか。
ボタンの親パネルのpaintないでdrawLineしてもボタンの下に隠れてしまうので、
ボタンのpaintComponentないで、super.paintComponentした後drawLineしましたが
ボタンの上に描画できませんでした。
310デフォルトの名無しさん:2008/06/24(火) 13:57:52
>>309
どういうことをしたいのかわからないとなんともいえないけど
とりあえず glass pane でぐぐってみたらどうだろう
311デフォルトの名無しさん:2008/06/24(火) 14:03:35
やりたいことはたぶんglass paneとは違う気がする
312デフォルトの名無しさん:2008/06/24(火) 14:08:39
>>310
ありがとうございます。
やりたいことは、エクセルの描画ツールで線の太さを選択できるダイアログ?がありますが、
あれを作りたいと思っています。
画像を作ってボタンに張ればいいのですが、太さのパターンが増えたとき画像を作るのが面倒なので、
画像なしボタンの上に線を描画できたら簡単かなっと思って質問いたしました。
313デフォルトの名無しさん:2008/06/24(火) 14:15:14
Iconインタフェイスを実装してボタンに貼ればいいと思う
314デフォルトの名無しさん:2008/06/24(火) 14:54:59
>>312
なあ、この時点でむしろ面倒になっていると思わないか?
315デフォルトの名無しさん:2008/06/24(火) 16:03:40
JOptionPane.show***でボタンを表示させない方法ってあります?
showOptionDialogでボタン配列をnullにしたけど「了解」がでちゃう
316デフォルトの名無しさん:2008/06/24(火) 16:15:09
Image image = createImage(32, 32);
Graphics g = image.getGraphics();
g.setColor(Color.WHITE);
g.drawLine(0, 0, image.getWidth(this), image.getHeight(this));
button.setIcon(new ImageIcon(image));
g.dispose();
317デフォルトの名無しさん:2008/06/24(火) 18:11:33
>>312 描画のところは好きなようにやってくれ
Icon lineIcon = new Icon(){
 public int getIconWidth() { return 32; }
 public int getIconHeight() { return 32; }
 public void paintIcon(Component c, Graphics g, int x, int y)
 {
  int centerX = getIconWidth() / 2;
  g.drawLine(x + centerX, y + 3, x + centerX, y + 28);
 }
};
JButton button = new JButton("Line", lineIcon);
318デフォルトの名無しさん:2008/06/25(水) 14:10:51
エクセルで線を2本描画しCTRLで2つ選択してドラッグすると、2つともドラッグできますが
Swingでやる場合、簡単なグループ化的なドラッグ方法は用意されているでしょうか。
またない場合、良いアプローチ法はありますでしょうか。
319デフォルトの名無しさん:2008/06/25(水) 14:53:39
Excelの表と同じものを作ればおなじようになるよ



なんか最近へんな質問が多い気がする
320デフォルトの名無しさん:2008/06/25(水) 15:05:20
複数ドラッグは簡単だが問題はどうやって視覚的フィードバックを与えるかだな。
java2Dでドラッグ対象のコピーとってグラスペインに描画って感じか。
321デフォルトの名無しさん:2008/06/25(水) 16:02:45
図形オブジェクトを複数選択して移動する話じゃないのか?
図形オブジェクトがコンポーネントになってれば「選択されてるコンポーネント(群)」を
移動するだけだと思うのだが…
322デフォルトの名無しさん:2008/06/25(水) 16:22:34
>>312
その場で描画できる程度の画像を作るのが面倒とは
323デフォルトの名無しさん:2008/06/25(水) 21:04:32
はじめてSwingアプリを作ることになり色々調べてはいるものの
理解が及ばないところがあるため質問させて下さい。

異なるサーバから表示用データを周期的に取得するスレッドが複数あり、
そのデータをSwingUtilitie.invokeLater()で、表示用フレームに反映させようと
しています。

このとき、EDTは要求が同時に付いたときも順に処理してくれるのでしょうか?
それとも要求待ち受け様のsyncronizedメソッド等を自作し、順にinvokeLaterを投げる
ようにすべきなのでしょうか?
324デフォルトの名無しさん:2008/06/25(水) 21:11:24
イベントディスパッチスレッドは単一のキューだから大丈夫だよ
EventQueueに追加してるところでsynchronizedしてる
325デフォルトの名無しさん:2008/06/25(水) 21:22:57
東部夏時間??
326デフォルトの名無しさん:2008/06/25(水) 21:25:18
>>325
このすれでそのボケはありえない。
327デフォルトの名無しさん:2008/06/25(水) 21:31:26
なるほど、「Event Dispatch Thread」か
初めての割りに、よくこんなもの知ってたな
328デフォルトの名無しさん:2008/06/25(水) 21:56:45
AWTにもEDTあるけどな
329デフォルトの名無しさん:2008/06/25(水) 23:19:29
>>324
Swingはスレッドセーフじゃないと漠然とした情報があっただけなので
ここもなのかなぁ・・・と、ちょっと不安でしたorz
ご回答ありがとうございます。
330デフォルトの名無しさん:2008/06/26(木) 00:50:03
ソース読むといいよ
IDE使ってるならCTRL+クリックとかでおっていけるでしょ
331デフォルトの名無しさん:2008/06/26(木) 08:50:51
単なる興味ですが、プロパティの変更通知するオブジェクトは
”changesという名前のPropertyChangeSupport クラスのインスタンスが含まれている”
という変なルールなんでしょうか?
マーカーインターフェースとかのほうが、よっぽどわかりやすいのですが・・・。
この仕様が出来た当時は、こういったスタイルが主流だったのでしょうか
332デフォルトの名無しさん:2008/06/26(木) 10:51:18
>>329
スレッドセーフじゃないからこそ全部1つのスレッドで順番に処理してるんだろーが…
333デフォルトの名無しさん:2008/06/26(木) 18:32:45
>>331
PropertyChangeSupport 使わなくても通知できるからそれじゃ識別できないのでは?
swing コンポーネントとかはそれ継承した SwingPropertyChangeSupport 使ってるし
変数名も changeSupport とかになってるしねぇ…
334デフォルトの名無しさん:2008/06/26(木) 18:59:07
changesってどっかのセミナー資料とかみてるからとか
335デフォルトの名無しさん:2008/06/26(木) 21:17:57
>>333-334
えっ、そうなんですかorz
ここ見ながらやってました。丸山さんって有名な人ですよね・・・。
http://www.wakhok.ac.jp/~maruyama/summer98/node32.html
336デフォルトの名無しさん:2008/06/26(木) 21:48:21
>>335
別にそんなに変なことは書いてないだろう?
「beanでプロパティの変更を通知可能にしたければこのようにすればいいよ」って書いてあるだけで
「このように実装されているものだけがプロパティの変更を通知可能なbeanです」とは書いてないし…
337デフォルトの名無しさん:2008/06/30(月) 11:07:43
背景をキャプチャーして
Windowを透明にする方法以外に
Windowを透明にする方法はあるでしょか

またswtなどに透明にできるコンテナはあるのでしょうか
338デフォルトの名無しさん:2008/06/30(月) 11:17:49
JButtonにプログラムからクリックイベントを発生させることってできますか?
マウスがボタン上にない場合は、できればマウスは動かさないで・・・
要は単純にイベントだけがほしいのですが。
339デフォルトの名無しさん:2008/06/30(月) 11:40:34
>>337
jdk6updateN だと com.sun.awt.AWTUtilities#setWindowOpacity(java.awt.Window, float) 使える。
340デフォルトの名無しさん:2008/06/30(月) 11:42:33
ラベルのテキスト文字がラベル幅内に収まらないとき
ラベル幅を超えてすべての文字が出るようにしたいのですが
手段はあるでしょうか?
341デフォルトの名無しさん:2008/06/30(月) 12:39:01
>>338
AbstractButton#doClick
342デフォルトの名無しさん:2008/06/30(月) 12:47:18
>>340
・ラベルのテキストの先頭に "<html>" を付けると複数行に折り返して表示される
・ラベルをJScrollPaneに包むとスクロールバーでスクロールできる
・setToolTipTextを設定するとマウスを乗せたときにポップアップする
・そもそもラベルの幅を広くする
343デフォルトの名無しさん:2008/06/30(月) 13:12:17
>>342
ありがとうございます。
ラベルの幅をかえる場合、現在のフォントと文字列から実際の幅を計算する手段はあるでしょうか。
344デフォルトの名無しさん:2008/06/30(月) 13:24:14
SwingUtilities#computeStringWidth
345デフォルトの名無しさん:2008/06/30(月) 13:24:37
>>343
label.getPreferredSize()
346デフォルトの名無しさん:2008/06/30(月) 13:39:30
レイアウトマネージャの再発明をしそうな予感
347デフォルトの名無しさん:2008/06/30(月) 17:01:59
>>338
複数から呼び出される処理ならば
イベントでがりがりかくのではなくて
外にメソッドで出しといたほうがいいよ

そしてそれを呼び出すようにしたほうが柔軟性が高い

あとでほかの場所からも同じ処理をした上で
追加で行う処理とかでてきたりするものだ
348デフォルトの名無しさん:2008/06/30(月) 17:21:25
drawLineするときにstrokeかなんかでJComponent#setBorder見たいに外枠をつけることってできますか??
349デフォルトの名無しさん:2008/06/30(月) 17:54:48
>>348
こんなの?
((Graphics2D)g).draw(stroke.createStrokedShape(new Line2D.Double(x1, y1, x2, y2)));
350デフォルトの名無しさん:2008/06/30(月) 17:56:55
ダイアログであるボタンを押したときに自動でクローズしたいのですが、
方法として、ダイアログのボタンリスナーアクションで、親のパネルを取得して全コンポーネントに対し
「了解」のボタンだったらdoClick()するようにしたのですが、どうも「了解」のボタンは含まれないようです。
こんなことせずにも、簡単なものがあれば教えていただけないでしょうか。

JPanel p = (JPanel)((JButton)e.getSource()).getParent();
for (Component c: p.getComponents()) {
if (c instanceof JButton) {
if (((JButton)c).getText().equals("了解")) {
((JButton)c).doClick();
}
}
}
351デフォルトの名無しさん:2008/06/30(月) 18:03:53
>>350
単に閉じたいだけで特に了解ボタン押す必要ないんなら、
Window w = SwingUtilities.windowForComponent((Component) e.getSource());
w.dispose();
でどうかな
352使用書無しさん:2008/06/30(月) 18:17:16
>>350 何でそんなまどろっこしい方法するの?
 public void actionPerfomed(ActionEvent e){
        if (e.getSource()==buttonA){
               dialogA.dispose();
         }
 }
みたいなのじゃだめなの?

353デフォルトの名無しさん:2008/06/30(月) 18:28:00
いつまで糞コテなの?
354デフォルトの名無しさん:2008/06/30(月) 18:47:26
糞コテ馬鹿丸出し
355デフォルトの名無しさん:2008/06/30(月) 18:53:52
>>351
できました。
ありがとうございます。
356デフォルトの名無しさん:2008/06/30(月) 19:10:36
>>343
Font font = Component.getFont();
FontMetrics fm = JComponent.getFontMetrics(font);
int stringwidth = fm.stringWidth("なにがし");

こんなのもあった。
357デフォルトの名無しさん:2008/06/30(月) 22:01:06
ダイアログでない別の画面を開いてから、それを閉じる間
元の画面の操作を無効にしたいのですが、どうすればよいでしょうか。
visible(false)だとなくなってしまいました。
358デフォルトの名無しさん:2008/06/30(月) 22:07:36
それがフレームなら、glasspaneにMouseListener登録するのが楽でいいかもねー
359デフォルトの名無しさん:2008/06/30(月) 22:30:26
俺はダイアログのコンポーネントをglasspaneに描画してglasspaneでイベント握り潰してるけど
360デフォルトの名無しさん:2008/07/01(火) 11:13:04
ダイアログにJFrameの画面を描画するというような、そんなことってできるのでしょうか?
それができればまったく問題無しなんですけど。
361デフォルトの名無しさん:2008/07/01(火) 11:34:52
JDialogではいかんのか?
362デフォルトの名無しさん:2008/07/01(火) 12:24:09
JFrameの中身のコンポーネントを描画することはできなくもない
363デフォルトの名無しさん:2008/07/01(火) 13:59:58
>>360
それ必要なこと?
364デフォルトの名無しさん:2008/07/01(火) 14:27:09
階層ありポップアップある数階層のJMenuにアイテムを1つ追加して
ポップアップに対しvalidateを呼んだあとshowしましたが、
追加が反映されませんでした。最初から作り直さないとダメなんですかね?
365デフォルトの名無しさん:2008/07/01(火) 14:41:46
>>363
ある共通要の設定画面があり、
時と場合で、出しっぱなしの他画面操作OKだったり
出したらその画面を終了するまで、他の画面はノータッチ、との要求が上がっています。
要求に対しての馬鹿さについてはすんません。
ただJFrame継承の画面があり、こいつで何とか実現しないといけなくなったのが現状で・・・
366デフォルトの名無しさん:2008/07/01(火) 15:40:23
setEnabled(false) してしまえ
367デフォルトの名無しさん:2008/07/01(火) 17:42:05
>>365
俺が言いたいのはJPanelで共通化されてればいいだけでしょ?ってこと
そしてJDialogやJFrameですきなようにはりつければいい
368デフォルトの名無しさん:2008/07/01(火) 18:50:42
コンポーネントをglasspaneやWindowサブクラスに貼れることを理解してないんじゃない?
369デフォルトの名無しさん:2008/07/04(金) 00:00:31
クリップボードについてお聞きしたいのですが
コピーしたときのイベントではなく
選択されたときのイベントを得ることは可能でしょうが
(たとえばブラウザでテキストを選択するときのイベント)
370デフォルトの名無しさん:2008/07/04(金) 00:05:12
クリップボードと関係ないだろ
CaretEventでもみてみるといい
371デフォルトの名無しさん:2008/07/05(土) 07:57:54
Swingを使う人は
java使いで一番やさしいね
372デフォルトの名無しさん:2008/07/05(土) 18:12:32
swingのバリデーターって皆さんどうやってますか?
自分の場合は、画面に対応したBean(StrutsのActionFormみたいなの)を作ってOKボタン等を押した時に
画面からBeanに変換するときにエラーになったら画面にエラー内容をリスト表示するようにしてるんですけど
ちょっと非効率な気がしています。
何かかっこいいライブラリか何かでかっこよく解決できないですかね。
373デフォルトの名無しさん:2008/07/05(土) 22:48:16
まずかっこいいの定義からだな
374デフォルトの名無しさん:2008/07/05(土) 23:20:38
jgoodies
375デフォルトの名無しさん:2008/07/09(水) 22:45:40
イベントを強引に呼ぶ方法ってありますか?
SwingはMVCを採用していますが、既存のアプリケーションに接続する時、
GUIモデルのインターフェイスにアダプトさせるのはめんどくさいので、
リスナでデータの同期を行いたいのですが、
コンポーネントを初期化して、その次にリスナを登録しますが、
この次に強引にイベントを発生して同期を行いたいです。
376デフォルトの名無しさん:2008/07/09(水) 23:42:39
fireXXXEvent()
377デフォルトの名無しさん:2008/07/09(水) 23:59:59
それってコンポーネントのメソッドですよね。
モデルから飛ばす事は出来ないんですか?
Swingのオブザーバパターンはモデルとリスナの間で採用されているはずです。
モデルから飛ばせないならば、ビューがプログラミングに必要以上に絡んでくる事になります。
378デフォルトの名無しさん:2008/07/10(木) 00:15:07
ごめん日本語が難しすぎて良くわかんないんだけど、モデルの持ってる値をviewに反映させたいってこと?
だったらBeansBindingあたりを調べれば幸せかもしれない。的外れだったらスマソ。
379デフォルトの名無しさん:2008/07/10(木) 00:20:40
モデルをBean化してpropertyChangeイベントに対応させる。
ビューはpropertyChangeListenerにする。
380デフォルトの名無しさん:2008/07/10(木) 04:23:21
Java Swing の質問

普段はタスクトレイに常駐してタスクトレイのアイコンをクリックしたら
起動(画面を表示する)というのはできるのですが、これをショートカットキー
(例えば Alt-zなど)で起動する方法があったら教えてください
381デフォルトの名無しさん:2008/07/10(木) 10:44:20
それSwingじゃなくてAWTだけどAWTもここか。
java6以降じゃないと出来んよ。
詳しくはjavadoc嫁。ググレ。
382デフォルトの名無しさん:2008/07/10(木) 18:14:41
>>381
ホットキーの登録っててできるようになったんだ?
383デフォルトの名無しさん:2008/07/10(木) 21:11:03
>>381
神降臨
384デフォルトの名無しさん:2008/07/11(金) 00:25:04
385デフォルトの名無しさん:2008/07/11(金) 09:12:13
ホットキー対応したんだ 帰ったら試してみよっと
386デフォルトの名無しさん:2008/07/11(金) 23:18:06
嘘つき!!
387デフォルトの名無しさん:2008/07/11(金) 23:46:29
キツツキ!!
388デフォルトの名無しさん:2008/07/12(土) 01:36:47
お手つき!!
389デフォルトの名無しさん:2008/07/12(土) 01:39:48
>>381
馬鹿乙
390デフォルトの名無しさん:2008/07/12(土) 08:10:42
餅つき!!
391デフォルトの名無しさん:2008/07/12(土) 18:23:33
hotkeynasai
392デフォルトの名無しさん:2008/07/15(火) 15:59:56
Windowsでメモ帳とかがデフォルトのフォントで使っているFixedSysを使いたいんだけど
どうすればいいでしょうか?
393デフォルトの名無しさん:2008/07/15(火) 16:39:41
フォント一覧取得してそれにでてこないの?
394デフォルトの名無しさん:2008/07/15(火) 16:45:46
でないっす。
395デフォルトの名無しさん:2008/07/15(火) 16:46:51
動的によみこんじゃえ
396デフォルトの名無しさん:2008/07/15(火) 16:57:51
TrueTypeしか読めないんじゃね?
397デフォルトの名無しさん:2008/07/15(火) 17:17:41
Fontsフォルダにあるのしかつかえんよ
398デフォルトの名無しさん:2008/07/15(火) 21:30:54
java6から自分で用意したフォント登録できるようにならなかったっけ?
399デフォルトの名無しさん:2008/07/15(火) 23:02:04
外注がC#で作ってきた糞重い、グリッドビュー(700×30)をswingのJTable
で書き換えたらかなり速くなって思わずニヤニヤしてしまった。
まぁ、今更Javaでいくことにはならないんだけどね。
400デフォルトの名無しさん:2008/07/15(火) 23:47:56
.netは10年前のjavaだ。
401デフォルトの名無しさん:2008/07/16(水) 00:22:57
>Windowsでメモ帳とかがデフォルトのフォントで使っているFixedSysを使いたいんだけど
>どうすればいいでしょうか

Swing ではなく、SWT使用すればオペレーションシステムの
ネイティブのリソースを使用するのでフォント一覧取得以外のフォントも
できるよ。
しかも、ルックもよい!
402デフォルトの名無しさん:2008/07/16(水) 00:43:19
SWTの開発環境のおすすめは?
VE?
403デフォルトの名無しさん:2008/07/16(水) 06:28:33
SwingでEclipseのビューのようなペインやタブの位置をドラッグ&ドロップで自由に移動できるようなものは作れないでしょうか?
404デフォルトの名無しさん:2008/07/16(水) 06:41:11
>>403
標準では無いね。オプソとか有償のライブラリを使えばできる。

http://journal.mycom.co.jp/news/2007/02/06/361.html
http://www.swingall.com/jdock.html
405デフォルトの名無しさん:2008/07/16(水) 13:14:10
というかドロッガブルなコンポーネントって結構簡単に作れるぞ。
406デフォルトの名無しさん:2008/07/16(水) 13:21:08
難しいのは受け手だな
407デフォルトの名無しさん:2008/07/17(木) 00:23:45
java.awt.Dialogやjava.awt.Frameのx(閉じる)ボタンを表示しないことって、
できますか?
408デフォルトの名無しさん:2008/07/17(木) 00:29:30
無反応には出来るけど非表示は駄目だったと思う。
Windowだとのっぺらぼーだしな……
409デフォルトの名無しさん:2008/07/17(木) 00:34:35
>無反応には出来るけど非表示は駄目だったと思う。
Windowだとのっぺらぼーだしな……
x(閉じる)ボタンの非表示にしてるサンプル、どこかで見た記憶があるんだけど。
どこだったか。
410デフォルトの名無しさん:2008/07/17(木) 00:38:09
Windowサブクラス作ってmacのシート再現するとか
411デフォルトの名無しさん:2008/07/17(木) 00:45:54
>Windowサブクラス作ってmacのシート再現するとか
シートは実装したことがあるから、それでもいいんですが、
Windowの移動自体は可能にしておきたいんです。
例えば、長時間(時間不定)の処理をしている間にメッセージ等で
進捗表示する場合に使用したいんです。
こういう場合、xボタンが表示されていると、これ押すとどうなるの?
という気持ち悪さがあるので。
ショートカットキーでWindowを閉じる場合は別の話で。
412デフォルトの名無しさん:2008/07/17(木) 00:53:33
別に気にしない

ということにしておけばおけ
413デフォルトの名無しさん:2008/07/17(木) 01:26:22
>別に気にしない
>ということにしておけばおけ
まぁ、そういうことにしておきます。
414デフォルトの名無しさん:2008/07/17(木) 10:24:01
Swing ではなく、SWT使用すればオペレーションシステムの
ネイティブのリソースを使用するので
ダイアログのx(閉じる)ボタンの非表示も
できるよ。
しかも、ルックもよい!
415デフォルトの名無しさん:2008/07/17(木) 18:29:48
SWTの開発環境のおすすめは?
VE?
416デフォルトの名無しさん:2008/07/17(木) 19:13:59
>>415
SWTスレで聞いた方が早いんじゃ?
417デフォルトの名無しさん:2008/07/19(土) 03:30:56
ボタンが押されたときにJTableを再表示するように作ったのですが、
選択されている行のみrendererを呼び出してくれません。
人為的にselectedRowを再描画する方法は無いでしょうか?
418デフォルトの名無しさん:2008/07/19(土) 13:27:56
tableChanged
419デフォルトの名無しさん:2008/07/19(土) 13:56:29
>>417
そういう動作見たことないんだけれども,どういうコードかいたんだ?
420417:2008/07/19(土) 16:54:58
>>419

JPanel pane = (JPanel)getContentPane();
JTable table = new MakeTable();
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane spane =new JScrollPane(table);
JSplitPane nsplit = JSplitPane();
nsplit.setRightComponent(spane);
pane.add(nsplit);

JTableの行をダブルクリック
pane.remove(nsplit);
nsplit.setRightComponent(spane2);
pane.add(nsplit, BorderLayout.CENTER);
nsplit.setVisible(false);
nsplit.setVisible(true);

ボタンの処理
pane.remove(nsplit);
nsplit.setRightComponent(spane);
pane.add(nsplit, BorderLayout.CENTER);
nsplit.setVisible(false);
nsplit.setVisible(true);

@JSplitPaneの右パネルにJTableを表示します。
AJTableの行をダブルクリックするとJSplitPaneの右パネルをJTableでないJPanelに書き換えます。
Bボタンを押すことにより@の状態に戻ります。
JSplitPaneの左パネルはJTreeであり、いつも同じです。
421デフォルトの名無しさん:2008/07/19(土) 22:38:20
2つのパネルを切り替えたいのならカードレイアウトつかったら?
422デフォルトの名無しさん:2008/07/20(日) 01:16:48
テキストコンポーネントのようなものを自作する際、折り返しなどはどのように実装すればよいのでしょうか?
確か前にそれをやってくれるクラスを見かけた気がするのですが・・
ないようであればゴリゴリやります。
423デフォルトの名無しさん:2008/07/20(日) 01:18:45
JTextAreaじゃだめなの?
424デフォルトの名無しさん:2008/07/20(日) 01:20:26
いえ、正直なところ今現在自作しているわけではないのですが、思い出せなくて気持ち悪かったので質問しました。
425デフォルトの名無しさん:2008/07/20(日) 01:21:42
>>422
LineBreakMeasurerかな
426デフォルトの名無しさん:2008/07/20(日) 01:23:54
うほーまさにこれです!
すっきりしました。ありがとうございます。
427デフォルトの名無しさん:2008/07/20(日) 10:01:00
TextLayout,LineBreakMeasurer,LineMetrix,GraphVecter...etc
428デフォルトの名無しさん:2008/07/20(日) 16:24:32
EclipseでSwing関連を書いてるとメソッドの補完候補が多すぎておもってぇのなんのって・・・
429デフォルトの名無しさん:2008/07/20(日) 16:49:19
低スペック厨乙
430デフォルトの名無しさん:2008/07/20(日) 20:15:28
SwingするならNetBeansだろ
431デフォルトの名無しさん:2008/07/20(日) 20:38:04
もっとましなコード吐いてくんないかなnetbeans
432デフォルトの名無しさん:2008/07/20(日) 20:40:27
NetBeans以外はもっとひどいだろ
433デフォルトの名無しさん:2008/07/20(日) 23:02:59
質問です
AwtやSwingにはユーザーからの情報を保存するキャッシュ的なものはありますか?
例えば、背景色の選択・変更を行った後、再訪問した時にもその色を背景色にセットされたまま。
というアプレットは作れますか?
作れるということであれば、どの様な方法か教えてください
434デフォルトの名無しさん:2008/07/20(日) 23:55:29
作れるが、やり方くらいググれ。宿題は自力でやりなさい。
435デフォルトの名無しさん:2008/07/21(月) 00:23:21
SwingAppFWにそのものの機能があるな
436デフォルトの名無しさん:2008/07/21(月) 03:07:24
【使えるか】JDrafter向上委員会【バッタもんか】
http://pc11.2ch.net/test/read.cgi/cg/1214838613/
437デフォルトの名無しさん:2008/07/22(火) 19:57:09
SWTってOS関係なしに動作する?
438デフォルトの名無しさん:2008/07/22(火) 20:26:25
いや、決められたOSの上で動く
JavaVMだけサポートされていてもダメだよ

というかSWTスレいけ
439デフォルトの名無しさん:2008/07/22(火) 20:42:05
TextSS
440デフォルトの名無しさん:2008/07/28(月) 10:23:06
Swingで複数の画面を作成しており、子画面から親画面の内容を更新することが多々あります。
その場合、親画面に各部品フィールドをパッケージアクセスで持ち、全画面を同じパッケージ内のクラスにし、
子画面から親画面のフィールドに直接アクセスをして更新しています。

こんな設計でよろしいのでしょうか?こういう場合のクラス配置、アクセス方法のお約束などはあるのでしょうか?
441デフォルトの名無しさん:2008/07/28(月) 10:39:42
直接的な回答ではないけれど、親とか子とか特定のコンポーネントとの繋がりはあまり持たせない方がいいよ。
442デフォルトの名無しさん:2008/07/28(月) 11:48:44
>>440
そんなことしたら親画面のレイアウトとか部品とか一切変更不可になるじゃん
親画面に、setStatusText(String text)とかインターフェイスを作って子から呼べばどう
呼ばれた親がどのコンポーネントをどう更新するかは自由に決められるでしょ
443デフォルトの名無しさん:2008/07/28(月) 12:50:50
>>440
子と親がどんなデータモデルになっているかによるけど…
- 子と親で同じモデルオブジェクトを持つ
- 子は子画面での編集によりモデルを変更してそれを親に通知(PropertyChangeListerとかね)。
- 通知を受けた親はビューを更新。
みたいな構成はとれない?
444デフォルトの名無しさん:2008/07/28(月) 23:16:12
>>443
親と子で同じオブジェクトを持つのは危険かと思います。
てゆうか何その設計。狂ってますよ。ちゃんと勉強してください。
445デフォルトの名無しさん:2008/07/28(月) 23:29:07
1つのモデルを複数のビューから参照するのは別に変な設計でもないと思うが
446デフォルトの名無しさん:2008/07/28(月) 23:52:12
swing って次バージョンから互換性が切られちゃうものが多いってほんとですか?
java歴2ヶ月でようやく覚え始めたばかりだったのに(T_T)
447デフォルトの名無しさん:2008/07/28(月) 23:59:19
>>446
10年くらい互換性はほとんどもってるよ

たまーにAPI的にまずいところとかあってなおされてるけど、
ほとんどは互換性のためにそのままにしてる

おかげでキャストが多くなりがちなのが厄介だが
448デフォルトの名無しさん:2008/07/29(火) 00:15:01
>>447
有り難う。自分の無用な心配し過ぎなんですね>互換性

でもsun.comのドキュメント(マニュアル)ページにいく度に警告を読ませられるのは
なんだかなあ。。経験浅い人には結構痛いですわあれ。。(><)
449デフォルトの名無しさん:2008/07/29(火) 00:17:14
このクラスの直列化されたオブジェクトは云々とかいうやつか?
直列化を使わなければまったく関係ないよ
450デフォルトの名無しさん:2008/07/29(火) 00:21:01
ん?互換性ってSwingだったら直列化の話でしょ?
内部の変更が起こりうるからObjectOutputStream&ObjectInputStreamによる入出力は危険ですよ
だから変更には柔軟なXMLEncoder&XMLDecoderを使えってことじゃないの?
451デフォルトの名無しさん:2008/07/29(火) 06:46:11
>>445
同じインスタンスでしょ?
まぁビューからモデルを参照するくらいならいいのかな。
MVCをちゃんと守っていればの話だけど。

アプリケーション層でそれやると、バグが検出不可能になりますよ。
たくさんのインスタンスから参照されてる一つのインスタンスのどの状態についても、
参照してるインスタンスの動作を保証しないといけないから、これはめちゃくちゃになる。
452デフォルトの名無しさん:2008/07/29(火) 07:42:07
じゃーシングルトンなんてのは存在そのものが悪?
453デフォルトの名無しさん:2008/07/29(火) 10:09:03
>>440です。
複数画面構成のアプリケーションを作成しており、ある画面アクションで自身とは違う画面の部品にアクセスする処理が多いです。
マウスアダプタもインナークラスではなく外出しにしているため、
アダプタやその他の画面のコンストラクタで、JFrameインスタンスを渡して内部でアクセスできるようにしています。

データの変更、他インスタンスの保持が面倒で、こんなことなら全てインナークラスで実装すればよかったと思っています。
プライベート変数にもアクセスできるので。

こんな考え方おかしいですかね。
454デフォルトの名無しさん:2008/07/29(火) 10:35:50
>>452 グローバル変数だろ。知れたこと。
455デフォルトの名無しさん:2008/07/29(火) 14:27:07
>>453
イベントはどうしてもGUI部品と密接になりがちだから分離するとますますひどくなるのは常識かと
GUいつくるときにNetBeansとか使ってないのかな
456デフォルトの名無しさん:2008/07/29(火) 14:37:20
JlabelのsetBackgroundで背景色を設定しても、背景色に変化がありません。
getすると変更した色が変えるので、値の変更字体はうまく言っているようです。
何か考えられることはあるでしょうか?
457デフォルトの名無しさん:2008/07/29(火) 14:45:05
>>456
プロパティをながめてごらん
458デフォルトの名無しさん:2008/07/29(火) 19:52:19
>>455
なんでGUI部品と密着になるの?
GUI、つまりSwingだったらビューとコントローラだけど、
これは完全に別レイヤーだろ。
リスナはモデルに対して依存するべきで、ビューは切り離すべき。

>>454
public static final intとかも悪いよ。カプセル化出来てない。
singletonでインスタンスを共有するのと例えば初期化引数でインスタンスを共有するのとでは意味が違う。
オリジナルの引数かコピーかという違いがある。
同じオブジェクトを参照する事が保証されない。
例えばクラス内でnewとかしたら一発で終わる。元の参照変数とは違うところを参照してる事になってしまう。

インナークラスとか基本的に禁忌だろ。
クラスは絶対に分離すべき。
わけの分からんオブジェクト持つなよ。
例えば、javaのライブラリを見てみれば分かると思うが、ちゃんとリスナは分離してある。


お前らオブザーバパターン理解してないだろ。
459デフォルトの名無しさん:2008/07/29(火) 20:03:11
>>458
理解したうえで現実的に無理だといってるんだが

つまりNetBeans等GUI生成ツールは使い物にならないってことですね
460デフォルトの名無しさん:2008/07/29(火) 20:06:06
使い物になるGUI生成ツールなんてあったか?
461デフォルトの名無しさん:2008/07/29(火) 20:18:17
java beansの事をオブジェクト指向だと思ってるのか?
あんなもん歪んだオブジェクト指向だよ。NetBeansなんて使ってはいけない。

どうしてコンポーネントにリスナが依存する必要があるんだ?
javaはコンポーネントとモデルを切り離してある。ビューの変更はオブザーバパターンを利用して通知してる。
ビューの変更はモデルに影響するから、他のリスナなどはビューに依存する必要がない。
ビューなんか知らなくてもいいし、ビューの情報が知りたければe.getSource()すればいい。
すごく汚い方法だけど、仕方ない場合もある。
わざわざフィールドにコンポーネントへの参照をとって、依存する必要が全くない。
462デフォルトの名無しさん:2008/07/29(火) 23:46:35
>>457
半日考えましたがわかりません・・・
463デフォルトの名無しさん:2008/07/29(火) 23:52:07
>>462
setOpaque(boolean)
464デフォルトの名無しさん:2008/07/30(水) 00:00:55
Opaqueって「おぱきゅー」って発音するんですか?
465デフォルトの名無しさん:2008/07/30(水) 00:08:01
466デフォルトの名無しさん:2008/07/30(水) 00:18:47
>>461
イベントの通知そのものはだれも問題にしてないでしょ

結局そのあとそのコンポーネントをがりがり触る必要が出やすいから
分離すると開発しにくくなってしまうというだけ

アクセサどれだけ生成するんだよと
コンポーネント増えたり変更されたら終わりじゃないかと
フロントエンドってのはロジックと違って頻繁に手が入るからな
467デフォルトの名無しさん:2008/07/30(水) 09:57:00
>>466
ですよね。
別出しにしたイベントクラスをインナークラスにしておけばよかった。
SwingWorkerも内部において、doInBackground内で、すぐに別だしビジネスロジッククラスを呼び出すクラスの分け方が
なんだかんだで、コーディングしやすい。
468デフォルトの名無しさん:2008/07/30(水) 10:14:43
>>463
ありがとーーーーーーーーーーーーーーーーーございます。
なきそうだったので助かりました。
469デフォルトの名無しさん:2008/07/30(水) 19:59:18
>>466
仮にアクセサが必要だったり、同じオブジェクトを共有しなければならないなら、
それらのクラスは最初から分離されるべきではないという事です。
なんでコンポーネントを触るのか理解出来ない。モデルを触って通知させろよ。
コンポーネントが増えても描画方法が変更されてもモデルはノーダメージです。
お前はMVCモデルが全く理解出来ていない。
470デフォルトの名無しさん:2008/07/30(水) 20:17:00
ラベルの色が変わるとかサイズが変わるとか
コンポーネントの状態をいじることってのは頻繁にあるんだが
そんなの外出しにしていてはまともに開発するのは難しいよ

すべてのプロパティに対してアクセサ用意するのかよ
現実解というもの勉強してよ
471デフォルトの名無しさん:2008/07/30(水) 20:29:05
それはオブジェクト指向ではないな。
ビューの属性をリスナでいじるなんて気が狂ってるよ。
お前、コンポーネントを継承したサブクラスにコードベタ書きしてるだろ。
良くプログラミングの本とかに書いてあるやり方。

良く使うフィールドとメソッドは一まとめにしてカプセル化する。
これしか必要じゃない。
いちいちアクセサ用意しなきゃいけないような気がするのは、
オブジェクトを構造体、つまりデータの塊としか思ってないから。
仮にアクセサをつけないといけないとして、それが妥当でないならばカプセル化を目指すべき。
オブジェクトはなるべく不変であり、遷移する状態が少ない方が管理がしやすい。

現実解もなにもない。
君は設計から間違った考え方をしてるから、わけの分からんコードを書くハメになる。
MVCモデルをちゃんと勉強してください。
おれの方が君より100倍早くコーディング出来ると思うわ。
悪い設計はメンテナンスが出来ない。お前、テストコードとか書いた事ないだろ。
472デフォルトの名無しさん:2008/07/30(水) 21:07:47
ああ夏か・・・
473デフォルトの名無しさん:2008/07/30(水) 21:09:22
>>471
ビューの属性変更を例えばアクションイベント等以外で書くの?
474デフォルトの名無しさん:2008/07/30(水) 21:20:56
ビューの属性って何?
Dimensionとか?
何がしたいのかさっぱり分からないが、
仮にだが、スライダを動かすと何かコンポーネントが縮んだり伸びたりするような事がしたいのか?
475デフォルトの名無しさん:2008/07/30(水) 21:29:39
>>474
おれもよくわからんがプロパティのことだと理解しようと思ったが
詳しいことは>>471にきいてよ
476デフォルトの名無しさん:2008/07/30(水) 21:36:09
>>475
その>>471>>474なんだが。
お前らほんとバカすぎて受けるwさすが高卒w
477デフォルトの名無しさん:2008/07/30(水) 21:37:58
その100倍頭いいぼっちゃんすごいな・・・
自分の書いたことすら忘れるとは
478デフォルトの名無しさん:2008/07/30(水) 21:42:56
>>465
ありがとう。
今まで恥ずかしいこと言ってった・・・
479デフォルトの名無しさん:2008/07/30(水) 21:53:48
だから気が狂ってるって言ってるだろ。
属性というものを気にする事自体気が狂ってる。
クラスはインターフェイスのみを公開し、フィールドはすべて隠蔽する。
publicなフィールドが許されるのはRectangleとかPointくらい。
あれはjavaの格言にも書いてあるが、速度の問題でそうしたのだろうと。
おれはpubliclフィールド嫌いだけどね。
というか自分のフィールドに対しても直接アクセスせずに、プライベートなアクセサを作る。
それの方が変更に強い。
480デフォルトの名無しさん:2008/07/30(水) 21:55:24
>>479
プライベートなアクセサ か。参考になる。
481デフォルトの名無しさん:2008/07/30(水) 22:02:54
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?SelfEncapsulation
お前ら本当にオブジェクト指向知らないんだな。
そんなんじゃ柔軟なソフトウェアが書けない。
だからあっぷあっぷになるんだよ。
マーチンファウラーの「リファクタリング」を嫁w
482デフォルトの名無しさん:2008/07/30(水) 22:05:18
プライベートなアクセッサって普通じゃね?

アクセッサは条件のチェックする場合があるからアクセッサ使ってるわけでそれがたまたま公開する必要がなかったと・・・。

というか夏厨がMVC,MVC言ってるがjavaのMVCは本当のMVCじゃないぞ。
483デフォルトの名無しさん:2008/07/30(水) 22:14:35
>>482
条件チェックとか、事前条件をコードに書くんですか?
やめてください。せめてアサーションでお願いします。
契約によるプログラミングを学ぶ為に、バートランドメイヤーのオブジェクト指向入門を読んでください。

javaが本当のMVCではないのは知ってるし、
どっかのページに書いてあるよ。
modified MVCって言ってる。
つまりコンポーネントという単位にビューとコントローラを一緒にしてる。
理由はそれらは関係が密な事が多いから。

公開するあるなしに関わらず100%アクセサを書く。
そうした方が柔軟になるから。
マーチンファウラーは、ひとまずはフィールドに直接アクセスしといて
必要になったらアクセサを書くと言ってるがそれでも良い。
理由はEclipseには自己カプセル化のリファクタリング機能があるから。
484デフォルトの名無しさん:2008/07/30(水) 22:18:32
>>483
条件チェックはどこに書けばいいの?
485デフォルトの名無しさん:2008/07/30(水) 22:20:03
>>484
バートランドメイヤーの本を読んでからお願いします。
486デフォルトの名無しさん:2008/07/30(水) 22:27:25
>>485
ケチ!!
487デフォルトの名無しさん:2008/07/30(水) 22:35:02
プライベートなアクセサがダメとか思ってる時点でカプセル化というものが分かってなくて、
結局構造体の延長でしかない。
デザインパターンも勉強してないだろうし、インターフェイスがなぜあるのかも分かってないと思う。
単純なんだ。関連のあるフィールドとメソッドと一緒にして凝集度を高める。これだけ。
488デフォルトの名無しさん:2008/07/30(水) 22:36:20
>>479
上の質問に答えてよ
489デフォルトの名無しさん:2008/07/30(水) 22:37:08
100倍坊やはJButtonクリックしたらJLabelの色を変えるコードさらしてみ
上で言ってること全部矛盾するから
490デフォルトの名無しさん:2008/07/30(水) 22:41:17
お前のところの設計者に聞けw
お前ら土方が必死にならないといけないのは設計者がカスだからだよ。
マーチンファウラーは「よい設計はラピッドな開発の為に存在する」と言ってる。
つまり彼は設計こそがすべてと言っても過言ではないと言っているのだ。
ちなみにアランケイも崇拝している。

The best way to predict the future is to invent it.
491デフォルトの名無しさん:2008/07/30(水) 22:43:58
>>478
おっぱっきゅーw
492デフォルトの名無しさん:2008/07/30(水) 22:52:07
>>489
JLabelにはモデルがない。
http://java.sun.com/products/jfc/tsc/articles/architecture/

どうしてMVCモデルというものが提案されたのか考えて見てほしい。
理由は簡単だよ。
まずはコンポーネントにベタ書きのコードを書く。
そしたらクラスの抽出が出来た。それがモデルだった、それだけの話。
初期化でモデルを入れて、自分をリスナ登録する。多くの場合ね。
例えばJTableとか、ソースコード読んでみれば分かるよ。

JLabelはモデルが知れてる。String程度だ。モデルを分離する必要がない。
だからJLabelに関していえば、直接モデルに訴えかければいい。

仮にJLabelからモデルを抽出するとすれば例えばこうなる。

class ColoredString{
String str_;
Color color_;
ColoredString(String str){
str_ = str;
}
setColor(Color cr){
color_ = color;
}
..
}

モデルを抽出する必要がないと言っている。setForeground使うんだろうけど(そんな事したことないで分かりませんけど)、
Viewに直接訴えかけるというのは邪道だね。
だけど、Swingの方でこんな小さなクラスならモデル抽出する意味ないわ、っていう事にしたんだから従うしかない。
493デフォルトの名無しさん:2008/07/30(水) 22:54:49
麻布卒は、帰っていいよ。
494デフォルトの名無しさん:2008/07/30(水) 22:56:03
>>480
プライベートなアクセサなんてカプセル化として当たり前だから
そういうレベルの話をしてるわけではないのだよ


>>492
できねーならもうつっこむのやめれ
495デフォルトの名無しさん:2008/07/30(水) 23:00:05
>>493
オブジェクト指向の話になったのでつい熱くなってしまった。
今は反省している。

ROMります。
496デフォルトの名無しさん:2008/07/30(水) 23:07:55
結局>>453の考え直した方向で正しいんだよね。
>>492のように限界がするくるから。

MVCがどうだとかモデルに対してどうだってのはイベント発行後の話であって、
今回の流れには関係ないわけだし。
497デフォルトの名無しさん:2008/07/30(水) 23:18:45
くだらね。
いつ限界が来た?
Swingのこの設計は妥当。
限界でも何でもないし、妥当な設計をしてるからそれを使うだけだろ。
モデルのあるオブジェクトについてはモデルに対してアクセスすべき。
インスタンスの保持が面倒とか意味分からないわ。
リスナに隔離すればいいだろ。
元のモデルを汚す必要がないし、データの変更ってなんだ・・・
コンポーネントが変更されればちゃんとモデルに通知される。

なんでMVC理解してないやつばかりなの?
理解する気がないのか?
とりあえず>>492に紹介したページを読んでから考え直せ。
インナークラスとか気狂ってるわ。
498デフォルトの名無しさん:2008/07/30(水) 23:21:17
とうとう発狂してしまったようです

インナークラスがなぜでてきたかわかりもしないで
499デフォルトの名無しさん:2008/07/30(水) 23:27:40
久しぶりに「夏ってスゲーなー!」って思ったw
500デフォルトの名無しさん:2008/07/30(水) 23:31:10
>>493,495
何この流れ?と思ってググったら
この人か
http://d.hatena.ne.jp/testosterone/
501デフォルトの名無しさん:2008/07/30(水) 23:33:23
ひぎぃ、やめてくだしあ

眠いんで寝るわ。
お前らレベル低すぎて付き合い切れない。
502デフォルトの名無しさん:2008/07/31(木) 00:11:59
>>501
夏よな
503デフォルトの名無しさん:2008/07/31(木) 00:12:48
>>501
おやすみ
504デフォルトの名無しさん:2008/07/31(木) 00:55:04
猛暑が続いているので仕方あるまいな。

STOP!地球温暖化。
505デフォルトの名無しさん:2008/07/31(木) 00:59:40
>>500
閉鎖しててわからん

使用しているサービスクリックしたらおっぱいでふいた
506デフォルトの名無しさん:2008/07/31(木) 01:06:27
そもそもC++をベースとして言語仕様つくったJavaは常に現実的な解として成長してきたんだし
JavaBeansにしても後付け仕様、Swingにしても10年以上前の話で、
互換性が最重要である以上どうしようもなかったんだがね。

学生かぁ。
正しいものが常によい選択されるわけではないという社会の基本を勉強できてよかったね。

趣味ならばいくらでも開発に時間をかけることが出来るが、食っていくにはそれも無理で
納品する成果物もさまざまな妥協の産物なんだよ。
507デフォルトの名無しさん:2008/07/31(木) 01:17:57
夏だな。
机上の理想論でしかない。>>506のいうとおり結局、妥協の産物でしかない。
508デフォルトの名無しさん:2008/07/31(木) 03:01:27
> C++をベースとして言語仕様つくった
文法だけは確かにC/C++に似てるが…
509デフォルトの名無しさん:2008/07/31(木) 08:34:06
>>506
されるわけではない、のではなくて、正しいものが分からないからする事が出来ないの間違いだろ。

> 趣味ならばいくらでも開発に時間をかけることが出来るが、食っていくにはそれも無理で
> 納品する成果物もさまざまな妥協の産物なんだよ。

ここらへんが狂ってる。
設計が悪いと開発が遅くなるに決まってるだろ。

設計の段階である程度の妥協はあるかも知れないが、MVCを放棄するとか笑える。
クラスの分離もお前ら出来ないだろうし、クラスが構造体としか見えてないから、結局カプセル化出来ない。
保守性がない、バグだらけ。ちょっといじったら変更が伝搬してあぅあぅになる。

そうやって中途半端な経験を積むとすぐに経験がどうとか、現実はどうとか偉そうな事を言い出すが、
結局のところ、何も分かってない、あるいは勉強する時間がとれないから自分の得た経験が正しいと主張したいだけ。
そうだな、言ってみれば図面通りに電子工作をやって、電子回路分かったと勘違いしてるようなもの。

日本の企業なんかクズしかいない。
設計者から実装者まで全員クズ。
おれはプログラマになるならヨーロッパに行く。

これだから日本のITはしょぼいんだよ。
文系がプログラマになるとかwww
510デフォルトの名無しさん:2008/07/31(木) 08:36:20
>>509
いってらっしゃい。土産は食い物がいいかな。
511デフォルトの名無しさん:2008/07/31(木) 10:09:33
哀れすぎて抱きしめたくなっちまうよw
512デフォルトの名無しさん:2008/07/31(木) 13:28:48
夏厨って本当にいるんだなぁ
閉鎖してないほうのblogみてもすごいね
513デフォルトの名無しさん:2008/07/31(木) 20:48:29
>>512
おれはブログ1つしかやってませんよ。
testosteroneってやつです。またpublicにしたんで読んでもらえれば^^
514デフォルトの名無しさん:2008/07/31(木) 22:51:21
>>513
君おもろいね。次は、「このスレのヤツらは英語も読めない低脳」とでも言うのかネ。
515デフォルトの名無しさん:2008/07/31(木) 22:58:09
なぜそういう話になるのか。
ずいぶん自虐的ですね。
516デフォルトの名無しさん:2008/07/31(木) 23:33:00
517デフォルトの名無しさん:2008/08/01(金) 00:24:24
>>513
がんぱってる感じは出てるのだが、、、もっとたくさん英文嫁
518デフォルトの名無しさん:2008/08/01(金) 05:18:43
>>517
そういう自分は何もしないくせに他人にだけ偉そうに更なる努力を問うところが低学歴っぽいな。
ニュースのコメを見ててもそう。
しかも一般受けするであろう、「一般大衆の気持ち」を予測して代弁しているだけであってあれは個人的な意見でもない。
パソコンが分からない人に限ってXPはすぐ落ちるだなんだと言い出す。Vistaは重いだの言い出す。アホかと。
じゃあお前らMicrosoft入って変えればいいだろと言いたいね。
結局なんやいうやつは自分では何も出来ないクズなんだよ。

英文なんか読んでも英語なんか書けないよ。
おれは日本人にしては相当英文を読んではいる方だと思うよ。
辞書も使ってないし、頑張ってもいない。適当な「たわごと」だって書いてあるだろ。
低学歴は字も読めないwもちろんまともなプログラムも書けないw設計も出来ないw

ttp://naoko.wankuma.com/designpatterns/designpatterns_0020_flyweight.html
君たちはバグや変更がどう伝搬するかが分かっていない。
そもそも分布定数回路や電波工学を勉強していないから伝搬という概念が分からない。
マクスウェルを理解しない人が伝搬を説いても空虚なだけだ。
英語が出来ない人が英語を説いても空虚なようにw

この前、同じオブジェクトを共有するのは当たり前だろとか言ってた池沼がいて、
そんな事としたらえらい事になると言った。
シングルトンで、かつ不変オブジェクトである事が約束されるならそれもいいと言ったが、
最後に書いてあるな。

> ただし、Flyweight パターンで、Factory が管理するようなモノは、状態遷移がないものに限ります。
> Factory から取り出されるモノは、どこで呼んでも同一なわけですから、
> どこかの呼び出し元で変更を加えられてしまうようなモノだと、他の箇所に影響を与えてしまうからです。


519デフォルトの名無しさん:2008/08/01(金) 05:29:26
OSが重いなりバグがあるなら自分で作ればいい。
政治に不満があるなら東大入って政治家になって変えればいいだろ。
日本のオリンピック選手は弱いっていうんだったら自分でやって金メダルとってこいよバカ。
テレビが面白くないっていうんだったら見なければいいし、
それでも見たいっていうんだったらフジでもTBSでも入社して革命起こしてくればいい。

このスレで「現実解」、「社会」という言葉を聞いて吐き気を催した。
そんなものは存在しえないよ。現実解というのはネガティブな言葉だから、「折り合い」あるいは「境界」というのともまた違う。
完全にネガティブ、出来っこないという初めからの決め付け。
能力不足を現実のせいにする。

同じなんだよ。
いつもそうやって言い訳して、努力をしてこなかった。
現実的にはこんなもんだろ、と思って「妥協」してきた。
攻めずして攻めたような気になってきた。

だから日本のソフトウェア業界はしょぼい。

同じソフトウェアを作るとして、
Googleのチームと君たちでは書くコード、設計が同じになると思いますか?
答えはNOです。
開発速度は一人あたり1000倍の差が出るでしょう。
520デフォルトの名無しさん:2008/08/01(金) 10:08:56
今度は1000倍かよ。

少なくともお前は一般的な技術者と比べて頭悪いんだから関係ないこのスレからでていけ。
521デフォルトの名無しさん:2008/08/01(金) 10:26:54
>>518-519
えーと、釣りですか?それとも本気?
どっちにしてもイタいんですけど…。
522デフォルトの名無しさん:2008/08/01(金) 11:44:50
>>521
夏はしかたないんだよ。
sophomoreってやつなんだよ
523デフォルトの名無しさん:2008/08/01(金) 15:32:17
UIDefaultsに格納されているUI関連のデフォルトプロパティはどの時点で読み込まれているのでしょうか?
例えばButton.backgroundなどです。
524デフォルトの名無しさん:2008/08/01(金) 15:35:26
すみません。解決しました。
ComponentUI#installUI()でやるのが基本みたいですね。
複雑な仕組みなのだろうとすぐに質問してしまいました。すみません。
525デフォルトの名無しさん:2008/08/01(金) 20:42:04
いいかげん夏厨はスルーしろよ。食いつくから釣られるんだろうが。
526デフォルトの名無しさん:2008/08/04(月) 08:57:23
JTextComponentで、「このElement以下のみ表示」というようなことはできますでしょうか?
527デフォルトの名無しさん:2008/08/04(月) 12:52:33
なあなあ、MVC化してどうしてカプセル化出来るんだ?
528デフォルトの名無しさん:2008/08/05(火) 06:50:51
>>527
MVC 化はカプセル化が目的じゃない。結合の粗密の問題。
529デフォルトの名無しさん:2008/08/05(火) 07:16:55
疎結合も何も、モデルから通知する必要があるから分離しただけだろ。
通知された時に再描画する方が効率的だから。
530デフォルトの名無しさん:2008/08/05(火) 21:44:24
それはjavaの都合であってMVC関係ない気がするが・・・
531デフォルトの名無しさん:2008/08/05(火) 23:13:56
基幹業務アプリケーションってMVCの効果が出にくいと思うんだけどみんなはどう?
…っていうかこういう話をしているスレってどこかない?
532デフォルトの名無しさん:2008/08/05(火) 23:46:33
>>531
結局JavaBeansのプロパティをどこにマッピングするかという情報だらけになるからね
533デフォルトの名無しさん:2008/08/06(水) 09:25:30
現在はSWTのほうが主流だぞ
いつまでもSwing使ってんなよ
534デフォルトの名無しさん:2008/08/06(水) 09:27:53
どこの 2004 年から来た人だ。
535デフォルトの名無しさん:2008/08/06(水) 13:21:14
>>526
このElement以下ってどういう意味ですか?
536デフォルトの名無しさん:2008/08/06(水) 16:40:35
Documentの階層で、『あるノード以下』という意味です。 それ以外を削除することでそれっぽい事はできますが描画するルートを変えたいだけなのでちょっとですねぇ…
537デフォルトの名無しさん:2008/08/06(水) 19:07:46
>>536
ElementとViewのjavadoc読むと良いよ。
ただ、勉強はできるけど、応用が利かないアホな厨房にとって、
モデルの共有は禁忌らしいけどな。
538デフォルトの名無しさん:2008/08/06(水) 19:10:18
>>537
場合による。ミディエータかリスナになら共有されてもいいというのが新理論。
539デフォルトの名無しさん:2008/08/06(水) 19:38:09
エクセプションをキャッチできなかった場合ダイアログを出したいのですが、
エクセプションのコールバックイベントなどあるのでしょうか?
540デフォルトの名無しさん:2008/08/06(水) 19:42:09
エディタのタブ背景をプロジェクトによって色分けするプラグインありますか?
前半で似たような名前があるとタブを見ただけでは解かりにくくて。
541デフォルトの名無しさん:2008/08/06(水) 20:59:16
>>539
Thread#setUncaughtExceptionHandler
Thread#setDefaultUncaughtExceptionHandler
542デフォルトの名無しさん:2008/08/06(水) 21:04:31
>>540
それSwingと関係ある?スレタイ読んだ?
543デフォルトの名無しさん:2008/08/06(水) 21:18:10
マルチの相手をするな
544デフォルトの名無しさん:2008/08/08(金) 18:09:59
Swing Hackのようなおもしろい事やってるサイトがあれば教えてください。
545デフォルトの名無しさん:2008/08/08(金) 21:08:13
SwingHackはhackシリーズとは思えない内容の悪さで有名
546デフォルトの名無しさん:2008/08/08(金) 23:26:31
聞きたいのはSwingHackの批評ではなく、目からウロコ的な技術をいろいろやってるサイトです。
おもしろいというのも人によると思うので、完全に主観で結構ですのでよろしくお願いします。
54770:2008/08/13(水) 13:40:20
ダイアログの中抜けがひとまず解決しました。原因は意外なところにありました。
自作のダイアログはJDialogを継承(extends)していますが、そのコンストラクタで
new JDialogしていたのが直接の原因だったようです。普通にsuper(引数列)したら
正常に表示されました。ループの中でnew MyDialogして、入力が終わったら、
disposeしています。ただ、読み仮名の受け渡しにYomiGanaクラスを作り、
ループとダイアログのスレッド間に対するGuarded Suspensionパターンを使う必要は
あったようです。まだダイアログの動作が不安定で完全解決ではありませんが、
当初意識していた問題は回避されたようです。今のところinvokeLaterやinvokeAndWaitは
使わずに済んでいます。

皆さんの励ましで、結城さんのデザインパターン入門マルチスレッド編は読み終えることが
できました。勉強になりました。ありがとうございます。
54870:2008/08/13(水) 13:51:38
書き忘れましたが、今のところループの中ではスレッド起動をせず、
同じスレッドの中でnew MyDialogでよかったようです。
549デフォルトの名無しさん:2008/08/13(水) 14:14:05
自作の編集画面をモーダルで表示させることは可能でしょうか。
ネットで調べてみましたが、はっきりとできるともできないともかかれていませんでした。
550デフォルトの名無しさん:2008/08/13(水) 14:16:05
自作の編集画面をJDialogに乗せてJDialogをモーダルで表示すればいいんじゃない
551デフォルトの名無しさん:2008/08/13(水) 14:44:39
>>550
new JDialog()のaddにセットしたらjava.lang.IllegalArgumentException: adding a window to a containerでエラーになりました。
new JDialog(jframe, true)だと、画面が2つ出てしまいうまく動いてないようです。
これら2つの呼び方は間違っているでしょうか?
552デフォルトの名無しさん:2008/08/13(水) 14:52:40
編集画面のコンポーネントをJFrameに乗せるのではなくJDialogに直接乗せる
553デフォルトの名無しさん:2008/08/13(水) 16:14:48
>>552
こんな感じですかね。
JDialog d = new JDialog();
d.setModal(true);
for (Component c: jframe.getComponents()) {
d.add(c);
}
554デフォルトの名無しさん:2008/08/13(水) 17:01:19
なんで最初からJDialogにaddしない
jframe要らんのちゃうか
555デフォルトの名無しさん:2008/08/14(木) 09:49:22
>>554
ごもっともなのですが、要求されていることがめんどくさく、設定によってモーダル非モーダルに選択できるようにといわれていまして、
このような仕様になっています。
556デフォルトの名無しさん:2008/08/14(木) 10:03:53
いろいろ画面を開いたり消したりを連続していると、OutOfMomoryになります。
終了するときはdispose()しています。ただfinalizeが呼ばれないのでメモリ消去できていない気がします。
これはアプリ側でdisposeしたフレームを参照しているところがどこかしらあるからということになりますでしょうか?
557デフォルトの名無しさん:2008/08/14(木) 16:24:10
setEnabled(false);にしてグレーアウトしたJMenuItemをクリックすると、
そのマウスイベントが呼ばれるのは仕様でしょうか?
558デフォルトの名無しさん:2008/08/14(木) 17:38:05
そういう動作をするとしたら仕様だろうねえ
559 :2008/08/14(木) 17:42:28
アクションイベントなら、setEnable(false)にしたら呼ばれんと思うけど
マウスイベントなどの低レベルのウィンドウシステムのイベントはどうしても呼ばれるんじゃないの。
560デフォルトの名無しさん:2008/08/15(金) 00:35:27
>>558
JREにバグがないとでも?
561デフォルトの名無しさん:2008/08/15(金) 18:36:53
DefaultTreeCellRendererのgetTreeCellRendererComponentでラベルを返しているのですが、
ラベルの文字を増やしサイズを大きくし、それをreturnしていますが。最初の幅以降が「...」になります。
jdk1.6です。
「...」にしないで変更された幅で表示するにはどうすればよいでしょうか?
562デフォルトの名無しさん:2008/08/15(金) 18:49:02
試してないけど、毎回サイズ変更したら?
563デフォルトの名無しさん:2008/08/15(金) 18:53:27
>>562
毎回サイズを更新していますがダメです。setSize()、setBounds()両方で、幅を固定で100にしているのですが、
...になってしまいます。
564デフォルトの名無しさん:2008/08/15(金) 18:57:45
revalidateしてもだめ?
565デフォルトの名無しさん:2008/08/15(金) 19:00:21
つーかDefault〜を拡張してるならsuper.〜でサイズはちゃんとやってくれたと思うんだけどなぁ
566デフォルトの名無しさん:2008/08/15(金) 20:45:39
>>564
ダメです。なんで・・・。

元の文字
 あああ
変更後
 あああ...

getTreeCellRendererComponent(... {
JLabel label = new JLavel();
label.setBounds(new Rectangle(0, 0, 100, 10));
label.revalidate();
return label;
567デフォルトの名無しさん:2008/08/15(金) 21:45:00
>>565の書いてる通り、DefaultTreeCellRendererの拡張なら

super.getTreeCellRendererComponent(...);
setText(...);
return this;

これでいいんでない?
568デフォルトの名無しさん:2008/08/16(土) 12:46:25
getPreferredSize() をオーバーライドしてみたら?
569デフォルトの名無しさん:2008/08/16(土) 20:46:05
いや>>567でいけるはず
570デフォルトの名無しさん:2008/08/17(日) 01:18:33
TransferHandlerで、アプリケーション内のコンポーネントへのドロップか、デスクトップ上へのドロップかを判別するにはどのようにすればよいのでしょうか?
571デフォルトの名無しさん:2008/08/17(日) 01:26:49
ちょっと説明が分かりにくいですね。
やりたいのは実際には存在しないがこれから生成することができるデータをドロップのアクションから生成&ファイルの移動で、例を挙げると
ZIPファイルのエントリーのツリーがあり、それはまだ解凍されていないが、DnDのアクションを受け、そのドロップ位置がデスクトップ上であれば該当するディレクトリへ解凍し移動する。
という感じのことです。
572デフォルトの名無しさん:2008/08/17(日) 01:34:24
連投すみません。
現状を説明するのを忘れていました。
現在はドラッグ開始時に呼び出されるcreateTransferable(JComponent c)内でファイルを解凍、テンポラリーファイルとして保存しておき、それを含めたファイルリストのTransferableを作成。
という方法で実現はできていますが、このcreateTransferable内でそんな重い処理をするのはまずいので何か別の方法はないかと思い質問させていただきました。
理想としては現状の処理をドロップ時に行いたいのです。
このような細かいのはやはりjava.awt.dnd.*を使うべきなのでしょうか?
573デフォルトの名無しさん:2008/08/17(日) 01:43:22
java.awt.dnd.*を直接使っても同じだった気がする
解決方法は知らない
574デフォルトの名無しさん:2008/08/17(日) 02:05:11
デスクトップへのDnDはSWT使わないと無理なはず。少なくともawtじゃ無理。
575デフォルトの名無しさん:2008/08/17(日) 09:52:05
>>573
そうでしたか。これからdndパッケージ調べてもし解決法が見つかればまた書き込みます。
>>574
デスクトップへのDnD自体は可能なんですよ。DataFlavor.javaFileListFlavorのTransferableを作ればいいだけです。
問題は作るタイミングなんです。ドラッグ開始で作ってたら他の関係のない動作の時まで不必要な処理を行わなければいけなくなるので・・
576デフォルトの名無しさん:2008/08/18(月) 11:21:00
>>567
以下の通りにしても、「aaaaaaa...」になります。revalidateを入れても入れなくても同じです。
ただ、ツリーで「+」「-」を一度でも押すと、幅調整がちゃんとなり問題なく表示されます。

super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
setText("aaaaaaaaaaaaaaaaaaaaaaaa");
tree.revalidate();
this.revalidate();
return this;
577デフォルトの名無しさん:2008/08/18(月) 13:59:45
>>576
手元ではならないよ。
要するに、その部分じゃないんじゃないの?

コード全体をどっかにアップしてよ。
578デフォルトの名無しさん:2008/08/18(月) 15:51:38
>>577
本当に単純なんです。
イベントリスナ込みの機能になってますが、まだ実装していないので悪影響無しかと。

public class MyRenderer extends DefaultTreeCellRenderer implements ActionListener {

public final Component getTreeCellRendererComponent(final JTree tree, final Object value,
final boolean sel, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus) {

super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
setText("aaaaaaaaaaaaaaaaaaaaaaaa");
tree.revalidate();
this.revalidate();
return this;

}
public final void actionPerformed(final ActionEvent e) {
}
}

これをJtree.setCellRenderer()にセットしているだけです。
579デフォルトの名無しさん:2008/08/18(月) 16:03:35
>>578
そういうんじゃなくて、
こっちで手を入れないでコンパイル→実行できるヤツを上げてよ。
自分で思っているところじゃないところがおかしいんでしょ?
580デフォルトの名無しさん:2008/08/18(月) 16:12:40
>>578
それJTreeにセットして実行した?
まったく問題ないよ。
ちなみに
tree.revalidate();
this.revalidate();
は必要ないよ。

それからずれるけどTreeCellRendererがActionListenerを実装するのはどうかとおもうw
581デフォルトの名無しさん:2008/08/18(月) 16:35:54
モデルのchangeNodeを実行したとたんに直りました!
582デフォルトの名無しさん:2008/08/18(月) 19:39:02
ボタンAのキーエンターが押されたとき、マウスイベントを発生させたいのですが方法がわかりません。
ご教授をお願いします。
583デフォルトの名無しさん:2008/08/18(月) 20:23:22
>>582
それはどんな理由で、マウスイベントでなくてはいけないの?
ほかの方法の方が良いのではないの?
584デフォルトの名無しさん:2008/08/18(月) 20:27:31
>>583
本当にその通りで、マウスのイベントアクション処理を呼びたいだけなんです。
ただ別出しにすると面倒で(数があるので)やるべき処理ではないとは理解しています。
暫定処理として動かすためにです。とりあえず。
よろしければ方法を教えていただけないでしょうか?
585デフォルトの名無しさん:2008/08/18(月) 20:54:16
>>584
よくわからないがjava.awt.Robotでも使えば?
586デフォルトの名無しさん:2008/08/18(月) 20:56:53
ボタンAのキーエンターがいまいちよくわからないんだけど・・
JButton a = new JButton();
getRootPane().setDefaultButton(a);
こういうことじゃないの?
587デフォルトの名無しさん:2008/08/18(月) 21:46:24
ボタンにショートカットを設定したいってことか?
588デフォルトの名無しさん:2008/08/18(月) 23:28:10
デフォルトボタンにしたいってことかな?
589デフォルトの名無しさん:2008/08/19(火) 01:24:38
久々にエスパーが必要な質問だな
590デフォルトの名無しさん:2008/08/19(火) 21:03:36
>>572
createTransferableでつくるTransferableは
解凍するための軽量な情報を盛り込んで適当に作っといて、
Transferable#getTransferData(DataFlavor)が呼ばれた時のflavorが
DataFlavor.javaFileListFlavorだった時に解凍処理を盛り込めばOKじゃないの?
getTransferDataFlavors()で返すDataFlavor配列は
ローカルオブジェクトのFlavorをjavaFileListFlavorより先にしとけば
Swing内にドロップしてもファイル転送されないでしょ。

解凍処理は一旦createTempFileかなんかの一時ファイルへZipを解凍して、
その一時ファイルのアドレスを入れたList<File>をgetTransferData()で返せばよさそう。
デスクトップへのドロップ時には、解凍されるまでSwing固まると思うけど。
591デフォルトの名無しさん:2008/08/19(火) 21:29:43
>>590
なるほど!!TransferHandlerでやることばかり考えてTransferableの方でって考えがなくなってました。
それは確かに容易に実装できますね。
解凍処理については元々そのようにするつもりでした。進行状況表示させてモーダルにでもすることにします。
本当にありがとうございます!
592デフォルトの名無しさん:2008/08/19(火) 22:37:39
jlabelって座標で位置指定できないんですか・・・orz
593デフォルトの名無しさん:2008/08/19(火) 22:38:56
>>592
出来る
594デフォルトの名無しさん:2008/08/19(火) 22:45:33
>>592
ヒント:レイアウトマネージャ
595デフォルトの名無しさん:2008/08/19(火) 23:13:51
>>593
>>594
d
レイアウトマネージャーを無効にすればいいんですね
596デフォルトの名無しさん:2008/08/19(火) 23:15:26
ヒントがかえって混乱させそうなので補足。
JavaのGUIにはレイアウトマネージャってのがあって、あるコンテナに含まれるそれぞれのコンポーネントのレイアウトをそいつが決める。
で、座標指定するってことはそれらを無効にする必要があるため、JLabelが乗ってるコンテナをsetLayout(null)してあげて、そのあとJLabelをsetBounds(int,int,int,int)かなんかで位置、サイズ指定する。
こんな感じ。
597デフォルトの名無しさん:2008/08/19(火) 23:16:47
うわ。とっても余計なお世話だったw
598デフォルトの名無しさん:2008/08/19(火) 23:29:34
>>597
いえいえ、とても助かりましたwありがとうw
599デフォルトの名無しさん:2008/08/19(火) 23:45:40
まあnullレイアウトは使わない方が良いんだけどな。
動的レイアウトに対応できなくなるから。
600デフォルトの名無しさん:2008/08/20(水) 00:34:11
>>595
nullにすると他のも全部手動で設定しなきゃいけなくなるから
OverlayLayout使って他のComponents入れたPanelと
ラベルだけ入れたPanelを入れて、
ラベルだけのPanelにemptyBorderを設定すればうまくいく、
かもしれない。
601デフォルトの名無しさん:2008/08/20(水) 00:59:38
nullレイアウトはつかわんほうがええ
絶対座標が使いたいならAbsoluteレイアウトつかえ

実際のところ絶対座標が必要な場面ってのはないけどね
602デフォルトの名無しさん:2008/08/20(水) 09:56:13
>>585
ありがとうございます。
できれば、マウスカーソルの移動はさせたくないので、内部的に適宜イベントを発生させたいなと考えています。
ComponentのprocessMouseEventはprotectedなので、イベントリスナーの実装クラス内で呼び出すことはできないと思いますが、
内部的に他のComponentのイベントを発生させることはできないのでしょうか?
603デフォルトの名無しさん:2008/08/20(水) 11:09:07
>>602
>>584に「別出しにすると面倒」ってあるけど、それが最適な方法だと思う。

リスナーを登録するときに持っておくのもある。「別出し」とあまりかわりそうにないけど。
MouseListener mouseListener = listener;
button.addMouseListener(listener);
listener.mosePressed(new MouseEvent(...)); // 必要なメソッドを呼ぶ

MouseEventを使っていなければnullでもOK

あとは、Component#getMouseListeners()でできそう。
リスナーが一つしかないなら、決め打ちで
button.getMouseListeners()[0].mouseClicked(new MouseEvent(...)); // 必要なメソッドを呼ぶ

これで「とりあえず」できそう。


余談。最近、JButtonにアクションリスナーがあるのにマウスホイールリスナーも使った。
604デフォルトの名無しさん:2008/08/20(水) 11:12:37
修正
listener.mosePressed(new MouseEvent(...)); // 必要なメソッドを呼ぶ

mosueListener.mosePressed(new MouseEvent(...)); // 必要なメソッドを呼ぶ

あと補足、listenerは内部クラスが前提になっている。
MouseListener mouseListener = new MouseListener() {
  public void mousePressed(MouseEvent e) {
    ...
  }
});
605デフォルトの名無しさん:2008/08/20(水) 11:16:03
修正2
×
MouseListener mouseListener = listener;
button.addMouseListener(listener);
listener.mosePressed(new MouseEvent(...)); // 必要なメソッドを呼ぶ


MouseListener mouseListener = new MouseListener() {
  public void mousePressed(MouseEvent e) {
    ...
  }
});
button.addMouseListener(mouseListener);
mouseListener.mousePressed(new MouseEvent(...)); // 必要なメソッドを呼ぶ
606デフォルトの名無しさん:2008/08/20(水) 11:36:09
これ見てて思ったけどSwingのテストPGってrobot使うの?もしくはnew MouseEvent()で仮想イベント発生?
607デフォルトの名無しさん:2008/08/20(水) 13:21:05
AWTUtilities.setWindowShape使ってみてたんだけど、PopupまでShapeの形に区切られるね@Win
正式版では修正されるのかな。
608デフォルトの名無しさん:2008/08/20(水) 13:42:25
>>606
まぁたまにあるといえばあるが、そんなに多くないかな

質問内容見る限り本当にRobot必要とは思えないけど
609デフォルトの名無しさん:2008/08/20(水) 16:17:58
>>607
やだなそれ。
610デフォルトの名無しさん:2008/08/20(水) 17:51:15
>>607
setWindowShape した場合はデフォルトで
setLightWeightPopupEnabled を false にしないとって話かな?

Swing側でデフォルト値変えてよって話ならバグ報告すれば対応してくれるかもしれん……
611デフォルトの名無しさん:2008/08/20(水) 20:15:14
>>606
使った事ないけどSwingUnitってのがある。
612デフォルトの名無しさん:2008/08/28(木) 22:41:49
java.awt.Frame,java.awt.Dialog#setUndecorated(true)を実行すると、
resizableプロパティがtrueでも、マウス操作でウィンドウのリサイズが不能になります。
この挙動はjavadocに記載されていませんが、これは仕様?仕様漏れ?バグ?でしょうか?
setUndecorated(true)を使用しながら、ウィンドウのリサイズを可能にする方法はありますか?
613デフォルトの名無しさん:2008/08/28(木) 22:53:03
>>612
http://bugs.sun.com/view_bug.do?bug_id=6520706

Windowsなら仕様ってことかなー??
614デフォルトの名無しさん:2008/08/28(木) 22:53:51
デコレーションがなくなったらそりゃーリサイズできないでしょ?
もしリサイズさせたいならMouse**Listenerで実装しないとね。
615デフォルトの名無しさん:2008/08/28(木) 22:56:35
そのBTSの報告者は、612とは逆に、ソラリスだとデコレーションなくしても
リサイズできちまうぞー、と報告してるのね。
616デフォルトの名無しさん:2008/08/28(木) 23:18:08
>>613
ありがとうございます。
環境はWindowsです。RFEってことは、将来改善されそうですね。
今まで報告したバグも放置されっぱなしな事が多いですし、期待してませんが。

>>614
>デコレーションがなくなったらそりゃーリサイズできないでしょ?
この意味が分からないのですが、デコレーションがなくなったら何故リサイズできないのでしょうか?
デコレーションとリサイズに関連性があるのでしょうか?

setUndecorated()とリサイズが併用できないのであれば、
MouseListener,MouseMotionListenerで自前で実装しますが、
簡易的な回避策等はありませんか?


617デフォルトの名無しさん:2008/08/30(土) 17:10:32
今ウィンドウに配置されているテキストエリアやボタンを、”送信”ボタンを押したときにすべて削除して
新しいレイアウトにしたいのですが、どうすればいいでしょうか?
618デフォルトの名無しさん:2008/08/30(土) 17:12:42
ヒントだけ。
getComponentsである部品に載ってる子供が全て分かるので、それぞれ取り除く。
あるいは、CardLayoutを使って中身をそっくり別物にする。
619デフォルトの名無しさん:2008/08/30(土) 17:55:28
>>618
レスありがとうございます。
今やっているのは
this.getContentPane().add(パネル1, BorderLayout.SOUTH);
で最初にパネル1を表示させ、(パネル1はFlowLayoutでテキストエリアとボタンがついています)
ボタンを押すと
if(ボタンが押されたら){
remove(パネル1);
this.getContentPane().add(中央パネル, BorderLayout.CENTER);
this.getContentPane().add(北パネル, BorderLayout.NORTH);
this.getContentPane().add(西パネル, BorderLayout.WEST);
this.getContentPane().add(南パネル, BorderLayout.SOUTH);
}
という形でやっているのですが、ボタンを押すと固まってしまいます。。
620デフォルトの名無しさん:2008/08/30(土) 17:58:52
すいません。最小化して再表示したら出来ていました。。
スレ汚しすいませんでした。いちいち最小化なんてor2
621デフォルトの名無しさん:2008/08/30(土) 18:09:26
本当に削除と追加を繰り返す実装が必要なのかどうか考えたほうがいいかもな
622デフォルトの名無しさん:2008/08/30(土) 18:13:22
imageならImageObserverあったけどコンポーネントにあったっけ?
623デフォルトの名無しさん:2008/08/30(土) 18:45:06
while(comp.isShowing() != true){
repaint()
}
624デフォルトの名無しさん:2008/08/30(土) 20:55:01
>>620
念のためいっておくと最小化と再表示が必要なのは君のコードが悪い。
それはおいておいて、とりあえずCardLayoutのマニュアルを読んでくれ。
625デフォルトの名無しさん:2008/08/30(土) 23:27:43
どんなコードがいいんでしょうねぇ
626デフォルトの名無しさん:2008/08/30(土) 23:50:12
本当に画面のコンポーネントを動的に削除したりするのが目的なの?
そもそも本当はCardLayoutのような切り替えがほしいだけじゃないの?

ってみんな指摘してるでしょ

そこはどうよ
627デフォルトの名無しさん:2008/08/31(日) 00:46:38
すいません。
レス有難うございます。625は自分ではないです。申し訳ありません。
カードレイアウトで処理することを目指して見ます。
628デフォルトの名無しさん:2008/09/03(水) 00:50:24
Componentを非表示の状態で何かに内容を描画したいのですかどのようにすればよいのでしょうか?
具体的にやりたいことは、タスクトレイから出てくるようなアニメーション付きのポップアップです。
手順は今のところ以下のようにしています。

・対象コンポーネント(Window)を一旦表示状態にする。
・BufferedImageに対象コンポーネントを描画。
・対象コンポーネントを非表示に。
・ダミーウィンドウ(画像を描画するだけのウィンドウ)を表示。
・javax.swing.Timerでダミーウィンドウのアニメーション(位置変更&画像切り取り)開始。
・終了したら対象コンポーネントを表示しダミーウィンドウdispose

一旦表示するといっても一瞬ですので気づかない程度ですが気持ちが悪いのでなにか他の案があれば教えてください。
629デフォルトの名無しさん:2008/09/03(水) 10:13:36
フレームAから、フレームBを生成したとき、
フレームBを閉じたら、フレームAにフォーカスを充てるようにしたいの
ですがどうしたらいいのでしょうか?
また、上記のとき、フレームBを閉じてしまうと、
フレームAも同時に閉じられてしまいます。
フレームAが閉じられないようにするにはどうしたらいいでしょうか?
アドバイスお願いいたします_(..)_
630デフォルトの名無しさん:2008/09/03(水) 10:28:17
ちなみに、フレームBを閉じたとき、隠すようにすれば
画面上からはフレームBは消え、フレームAも画面上に残すことはできます。
しかし、これは根本的な対策ではないと思います。。
631629:2008/09/03(水) 10:29:04
>>630は自分が書きました。
632デフォルトの名無しさん:2008/09/03(水) 11:43:27
>>628
非表示にする前にgetGraphicsしておくとか。
633デフォルトの名無しさん:2008/09/03(水) 11:47:20
>>632
元々表示されていないものなので、「非表示する前」というわけにはいかないのです。
634デフォルトの名無しさん:2008/09/03(水) 11:50:52
試しに子コンポーネント取得でpaintさせたらうまくいきました。
for(Component c:window.getComponents()){
 c.paint(g);
}
すみません。
635デフォルトの名無しさん:2008/09/03(水) 11:58:54
>>629
なんで閉じてもいないフレームがかってにとじられるんだ?
該当部分のソースをさらしてみ
636デフォルトの名無しさん:2008/09/03(水) 12:05:31
エスパーすると EXIT_ON_CLOSE を DISPOSE_ON_CLOSE にすればいいんじゃない
637デフォルトの名無しさん:2008/09/03(水) 12:14:52
Window#addNotifyで表示可能に出来るみたい。
638デフォルトの名無しさん:2008/09/03(水) 12:17:44
>>637>>634にです。
639デフォルトの名無しさん:2008/09/03(水) 17:46:42
ハイ 質問 \○_


KeyListenerで3つのキーの同時押下の検出についてなんですけど
(2つキーが押されている状態でもう1つキーを押すとか)、
最後に押したキーの検出がうまくいかないのだな。


うまくいかないってのは、環境にもよるけど

OS:Ubuntu
JDK:Sun JDK 1.6.0_06
のとき
3つ目のキーを押しても押されてないことになる組み合わせがあったり、
ちゃんと押されたことを検出する組み合わせがあったり。

OS:Windows Vista
JDK:Sun JDK 1.6.0_06
のとき
試したうちでは、どの組み合わせでも
3つ目のキーを押しても押されてないことになる。


ソースはここ。
http://docs.google.com/Doc?id=ddpgzg76_21f7tvdd4z
640デフォルトの名無しさん:2008/09/03(水) 17:51:22
ハードウェア構造上の問題で3つの同時押しを検出できないキーボードがある
Nキーロールオーバーでぐぐるといい
641デフォルトの名無しさん:2008/09/03(水) 17:56:41
>>640

そゆこと (;_;)

ちょっとしたゲームを作ってたんだが、それはせんかたないね。

Thx.
642デフォルトの名無しさん:2008/09/03(水) 19:16:13
お高いキーボードをPS2でつないでる場合はNキーはいるけどそれを期待し
てゲーム作るわけにはいかないよね…
厄介な伝統的問題だ。
643デフォルトの名無しさん:2008/09/03(水) 20:11:48
>>642
PS2でもUSBでもいろんなキーボード触るとわかるが
同時押しが出来るできないはさまざま

PS2だからUSBだからということにはならないし、高いから大丈夫というわけでもない
644629:2008/09/03(水) 20:12:44
>>635
// AFrameのソース
 helpBtn.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent ev) {
   EventQueue.invokeLater(new Runnable() {
    public void run() {
     BFrame.getInstance().setVisible(true); // BFrameの表示
    }
   });
  }
 });

// BFrameのソース
public static BFrame frame = null;

 public static BFrame getInstance(){
  if(frame == null){
   frame = new InformationSoftFrame();
   //frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setSize(540, 560);
   frame.setTitle("ヘルプ");
   frame.setLocationRelativeTo(null);
   frame.setResizable(false);
   frame.setIconImage(infoIcon.getImage());
  }
  return frame;
 }
 public InformationSoftFrame(){
  createInformationSoftGUI();
 }
 public void createInformationSoftGUI(){
  ・・・
 }
645629:2008/09/03(水) 20:15:53
>>635
レスありがとうございます。
↓をコメントアウトしたら、うまくいくようになりました。。
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
もともと、setDefaultCloseOperation()の引数には、
JFrame.EXIT_ON_CLOSEを指定していたのですが、Bフレームを閉じると
Aフレームも同時に閉じられてしまうので、JFrame.HIDE_ON_CLOSEを
指定するようにしてました。

デフォルトでは、
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);だと思っていた
ので、↑この行はあってもなくても同じだと思っていたのですが、
どうもそうじゃなかったみたいですね。。
でも、たしかどこかで、フレームのデフォルトの挙動は
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);だと
読んだ記憶があるんですけどね。。
646デフォルトの名無しさん:2008/09/03(水) 20:34:54
EXIT_ON_CLOSEは閉じるとかそういう話ではなく、アプリの終了だろ・・・
647629:2008/09/03(水) 20:37:12
すみません。
間違ってました。
フレームのデフォルトの挙動は、
JFrame.EXIT_ON_CLOSEではなくて、JFrame.HIDE_ON_CLOSEでした。

あと、>>645で↓のように書きましたが、

>↓をコメントアウトしたら、うまくいくようになりました。。
>frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

書き間違いで、正しくは、下の通りです。

↓をコメントアウトしたら、うまくいくようになりました。。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

結局、Bフレームは隠してるだけというわけなんですね。
648629:2008/09/03(水) 20:38:47
>>646
>EXIT_ON_CLOSEは閉じるとかそういう話ではなく、アプリの終了だろ・・・

まさしく、そこを勘違いしてました。^^;
そのフレームの終了という意味で、BフレームでEXIT_ON_CLOSEを指定していたので。
EXIT_ON_CLOSEは、アプリケーション全体で終了を意味していたのですね。。
649デフォルトの名無しさん:2008/09/03(水) 21:53:59
>>643
そういうことじゃなくてNキーロールオーバーをサポートしてる
高いキーボードを買ってもUSBで繋ぐとUSBのHIDの制約で
6つのキーが同時に押下されていることまでしか認識しないっていう
キーボード本体とは別の問題があるんだわ
# 解りにくい書き方ですまんね
ttp://gadget.tm.land.to/pukiwiki/%A5%AD%A1%BC%A5%DC%A1%BC%A5%C9%A4%CE%C6%B1%BB%FE%B2%A1%A4%B7%A4%CB%A4%C4%A4%A4%A4%C6/
650デフォルトの名無しさん:2008/09/03(水) 22:02:47
きーぼーど?りあるふぉーす一択だろJK
651デフォルトの名無しさん:2008/09/04(木) 02:58:17
java swingは最初からwindowsにJREがインストされてたら、もっと使われるのだろうに。
最近、.netフレームワークをインストールしないといけなかったりするソフトも
増えてきたし、関係なくはなってきてるが。
652デフォルトの名無しさん:2008/09/04(木) 13:33:07
MacにはJRE入ってるんだよね?
653デフォルトの名無しさん:2008/09/04(木) 19:51:26
古いのがね。
winはJ/Direct騒動でXPSP1あたりから外された。
ただメーカー製OEMだと5.0がプリインスコされてる場合がある。
654デフォルトの名無しさん:2008/09/04(木) 22:39:16
Mac。
今のLeopardなら、JRE6ですよ。

Windowsに関しては、
PCメーカーのツールが利用している時は入っていたりする。
(Microsoft製のJVMはJavaと呼ぶと混乱の元)
655デフォルトの名無しさん:2008/09/05(金) 13:11:24
それにしてもSwingというかJavaのアプリは増えないね。
やっぱりWindowsに標準で入ってないと厳しいのかな。
FreeBSDでも動くみたいだし、もっと増えて欲しい。
656デフォルトの名無しさん:2008/09/05(金) 13:17:25
jarのアイコンが変更可能だったら素敵なのに
657デフォルトの名無しさん:2008/09/05(金) 14:20:22
ショートカット作ってそれに好きなアイコンを設定したらええ。
658デフォルトの名無しさん:2008/09/05(金) 16:52:01
jarのexeラッパ無かったっけ?

Swingは多機能なのはいいんだけどGUIレイアウトの敷居が・・・
659デフォルトの名無しさん:2008/09/05(金) 16:54:12
exewrapとかいろいろあるね。

Jigloo or Netbeansで十分かな
660デフォルトの名無しさん:2008/09/05(金) 18:43:20
>GUIレイアウトの敷居が・・・

同意。
簡単なレイアウトだったら、レイアウトマネージャを使ってレイアウトしてみるけど、
ちょっと複雑になると、絶対値で指定するようになるんだよね。。
661デフォルトの名無しさん:2008/09/05(金) 19:45:00

ならないよ?
662デフォルトの名無しさん:2008/09/05(金) 19:54:56
>>651
Sunが訴訟起こして止めさせたからなー。
663デフォルトの名無しさん:2008/09/05(金) 19:56:32
>>655
俺ももっと増えて欲しいと思う。
でもきょうび一つのOSしか使っていない人が少ないしな
デスクトップでのrun anywhereは大したメリットにならないし
Javaで作るメリットが無いのが痛い
664デフォルトの名無しさん:2008/09/05(金) 20:00:24
>>662
そのままにしておけばマイクロソフト独自のWindows専用のjavaが氾濫していたんだろうなあ?
そしてjavaの統一性の無さにユーザーが苦労することになったのだろう。
665デフォルトの名無しさん:2008/09/05(金) 23:11:57
最近MIDPしか弄ってない俺はささっとMIDP3.0を触りたい。
やっとタブペイン使えるんだぜ?
666デフォルトの名無しさん:2008/09/05(金) 23:50:59
>>660
絶対値は普通一番使わないものだろう・・・
667デフォルトの名無しさん:2008/09/05(金) 23:58:01
>>664
結果サーバーサイド市場とるまでに消えてたね。
668デフォルトの名無しさん:2008/09/06(土) 00:05:29
J/Direct なんて非標準 API あったところで必要な奴以外は使わんだろ。
com.sun 系バリバリでコード書いてる奴なんていないのと同じ。あれはマクネリのいつもの基地外行為。
あの情勢で消えるとか見当違いもはなはだしい。
669デフォルトの名無しさん:2008/09/06(土) 00:47:31
>>668
VisualJ++とかすさまじい挙動にしてたのしらないのか・・・
670デフォルトの名無しさん:2008/09/06(土) 02:40:19
そもそもJ++の吐いたバイトコードsunのVMで動かすとむちゃくちゃ重いしそのうちVM死ぬんだぜ。
671デフォルトの名無しさん:2008/09/06(土) 02:40:43
>>666
おおざっぱなレイアウトはマネージャ使って、さらに細かいところは絶対値指定しない?
672デフォルトの名無しさん:2008/09/06(土) 02:54:00
レイアウトによるよ。
シンプルなレイアウトなら使わない。
絶対値での指定は、おれもたまにやる。
673デフォルトの名無しさん:2008/09/06(土) 09:01:08
>>669
JDK 1.0 時代はそもそも Sun の VM もコンパイラ自身が劇重で自爆してただけだろ。
すさまじい挙動なんてあったか? for 初期化で宣言した変数が for 外の同名変数と重複になるくらいしか覚えていない。
AWT 絡みのライブラリレベルならいくつかあったが、それは今の話とは関係ないしな。
とりあえずあの時代であのコンパイル速度は爆速だった。
674デフォルトの名無しさん:2008/09/06(土) 09:29:43
>>671
絶対値指定はしない
環境変わるとすぐ表示崩れるから
同じWindowsでもクラシック、XP、Vistaで描画がそれぞれうまくいかなかったりするし
675デフォルトの名無しさん:2008/09/06(土) 17:46:25
>>674
>環境変わるとすぐ表示崩れるから

それはレイアウトマネージャ使っても同じことが言えるよ。
同じOS、Windowsでもクラシック、XP、Vistaすべてにきれいなレイアウトの画面を
作成するには、レイアウトマネージャ使っても難しいときがあるよ。
ボタンに文字がすべて表示されなかったり、レイアウトマネージャによっては
コンポーネントの配置が崩れてしまうこともある。
なので、レイアウトマネージャ使っても画面描画に関しては、Write once, run anywhereは
成立しないものだよ。
つまり、OSのあるバージョン内で正常なレイアウトを確認、保障するようにするしかなく、
同じアプリでも、レイアウト表示を考慮して、XPとVistaでソースを分けることも出てくる。
どっちにしろ、環境考えないといけないのだったら、レイアウトマネージャ使おうが、
絶対値指定しようが特にこだわることではなく、ケースバイケースで使い分けるべきだと
おじさんは思うがなあ。
676デフォルトの名無しさん:2008/09/06(土) 19:01:02
>>675
> 作成するには、レイアウトマネージャ使っても難しいときがあるよ。
> ボタンに文字がすべて表示されなかったり

それはレイアウトマネージャ使う側の意識が不適切な前提をおいてりゃそうなる。
一定以上の幅を期待したりとか一定以下のフォントサイズを仮定していたりとか。
677デフォルトの名無しさん:2008/09/06(土) 19:13:09
なんかデジャブな流れw

レイアウトマネージャの良いところは、部品を気軽に追加削除できるところだと思う
もちろんちゃんと作ってればの話だけど
678デフォルトの名無しさん:2008/09/06(土) 19:41:42
1スレに必ず1人は現れるからな
絶対座標厨が
679デフォルトの名無しさん:2008/09/06(土) 20:29:09
>>678
仕事だとあるんだけどね、絶対座標でっていうのが。
基本設計の画面設計書に書かれちゃってて。
本当はイヤだけどしかたなく配置して、指定が抜けてるのを見つけてはレイアウトマネージャで
配置したりしたな。
あとはプレーンにレイアウトマネージャで配置して、そのプレーン自体は絶対座標で配置したりとか。

>>675
よほどキチキチに詰めなければ崩れたりしないと思うが。
あとは Look&Feel を OS 依存のものにしなけりゃいいんじゃね?
680デフォルトの名無しさん:2008/09/06(土) 21:28:53
すごいな。
俺は絶対座標を使えという指示は受けたこと無いな。
恵まれてるんだろうか。

以前絶対座標で書いてる人みたことあったけど、
XPの標準とクラシックとで見事にインセットの違いで描画がずれてたな。
681デフォルトの名無しさん:2008/09/06(土) 22:23:05
>>678
癇癪厨w 絶対座標厨って、なぜにおまえがそんなに怒るw
682デフォルトの名無しさん:2008/09/06(土) 22:27:08
なんかカチンと来たらしい人が出ました
683デフォルトの名無しさん:2008/09/06(土) 22:32:34
いや、レッテル貼るほど、癇癪起こしてるやつがいたんで。ね?w
684デフォルトの名無しさん:2008/09/06(土) 22:36:16
誰も怒ってないような
685デフォルトの名無しさん:2008/09/06(土) 22:48:20
>>683
それって君の事なんじゃ
686デフォルトの名無しさん:2008/09/06(土) 23:01:32
>>685
絶対厨じゃないよw
687デフォルトの名無しさん:2008/09/06(土) 23:02:31
自分がよくわかってるくせにw
688デフォルトの名無しさん:2008/09/07(日) 00:40:31
絶対座標だと何がいけないの?
689デフォルトの名無しさん:2008/09/07(日) 00:57:58
絶対厨って言って、うるさいやつが出てくるからねw
690デフォルトの名無しさん:2008/09/07(日) 06:49:26
>>688
いけなくないけど、LaF変えたりフォント変えただけで表示ズレるので
自由に設定できるアプリ作りたいなら絶対座標にしない方が無難。
691デフォルトの名無しさん:2008/09/07(日) 11:37:57
>>659
exewrap、JREも含める事ができるんだね。
配布サイズの問題はあるけど、かなり良さそう。
情報感謝!
692デフォルトの名無しさん:2008/09/07(日) 12:21:20
>>691
>exewrap、JREも含める事ができるんだね。

exeファイルの中にJREを含めることができるということ?
詳しく。。
693デフォルトの名無しさん:2008/09/07(日) 12:47:35
>>692
調べたけど、JREフォルダの中につっこんで使用するということだな。
694デフォルトの名無しさん:2008/09/07(日) 22:21:37
privateJREはよく使われてるからな
695デフォルトの名無しさん:2008/09/09(火) 08:29:43
JPanel に add した JLabel を一度描画したあと
全て消してもう一回同じ位置に別のものをかきこむいい方法はないでしょうか?
何回も書き込むと描画内容が下へ下へ行ってしまいます。
696デフォルトの名無しさん:2008/09/09(火) 08:36:45
?
add した JLabel に setText()
697デフォルトの名無しさん:2008/09/09(火) 10:30:13
古いJLabelをJPanelからremove
698デフォルトの名無しさん:2008/09/09(火) 15:15:01
生成コスト考えると、setTextでおk
699695:2008/09/09(火) 20:34:26
>>696 >>697 >>698
ありがとうございます。頑張ってみます。
最後にもう一つ、教えてください。

下記URLのソースで、
左のツリーの末端ノードをマウスで選択すると、
右の画面にテキストが表示されるように改良したいんですが
どう手を加えれば良いでしょう。。。
よろしくお願いします。。。

ttp://www.tohoho-web.com/java/swing.htm#JScrollPane
700デフォルトの名無しさん:2008/09/09(火) 20:43:04
JTreeにaddTreeSelectionListenerでTreeSelectionListenerをセットして、
valueChangedが呼ばれたら右の画面を好きに変えればいい
701699:2008/09/09(火) 20:48:12
>>700
それがなかなかうまくいかなくて。。(汗)
あとソースのURL間違えました。

ttp://www.tohoho-web.com/java/sample/swing/JSplitPaneTest.java
702デフォルトの名無しさん:2008/09/09(火) 20:55:59
何をどうしてみたら上手くいかないんだ?
703699:2008/09/09(火) 21:43:44
>>702

>>701 のソースをちょっと変えたものをかきます。
左側には japan-tokyo という tree を作成しています。
下のソースは、tokyo を選択すると右側に何か描画されるように
書いたつもりですが、方向的には合ってますか?
もしあってたら、
”//ここにどう記述していいか分からん。。。”てところに、
どんな風に書いていいかちょっと試行錯誤中です。
なんかうまくいかないです。。。
よろしくお願いします。m(_ _)m
 

----以下ソース----------------------------------------------------------------------
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.event.*;

public class JSplitPaneTest extends JFrame implements TreeSelectionListener{
JSplitPaneTest() {
DefaultMutableTreeNode japan = new DefaultMutableTreeNode("Japan");
DefaultMutableTreeNode tokyo = new DefaultMutableTreeNode("Tokyo");
japan.add(tokyo);
JTree tree = new JTree(japan);

String[] data = { "右側" };
JList list = new JList(data);

704続き:2008/09/09(火) 21:45:04
//選択時の処理
tree.addTreeSelectionListener(this);

JSplitPane splitPane = new JSplitPane();
splitPane.setDividerSize(5);
splitPane.setLeftComponent(tree);
splitPane.setRightComponent(list);
getContentPane().add(splitPane);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JSplitPaneTest");
setSize(200, 150);
setVisible(true);
}

//選択時の処理
public void valueChanged(TreeSelectionEvent e) {
JTree tree = (JTree)e.getSource();
DefaultMutableTreeNode node;
node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if (node != null){
//選択時の処理を記入
if((String)node.getUserObject() == "tokyo"){
//ここにどう記述していいか分からん。。。
}
}
}

public static void main(String[] args) {
new JSplitPaneTest();
}
}
705デフォルトの名無しさん:2008/09/09(火) 21:58:54
>>703
public class JSplitPaneTest extends JFrame implements TreeSelectionListener{
DefaultMutableTreeNode japan;
DefaultMutableTreeNode tokyo;
JTree tree;
JList list;

JSplitPaneTest() {
japan = new DefaultMutableTreeNode("Japan");
tokyo = new DefaultMutableTreeNode("Tokyo");
japan.add(tokyo);
tree = new JTree(japan);

String[] data = { "右側" };
list = new JList(data);

tree.addTreeSelectionListener(this);
.....
}

public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node;
node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if (node == tokyo) {
String[] data = { "新しい内容" };
list.setListData(data);
}
}
.....
706できました!:2008/09/09(火) 22:26:26
>>705
ありがとうございます!!!!
感謝です!!!!
707デフォルトの名無しさん:2008/09/19(金) 23:26:39
縦方向のFlowLayoutみたいなのってJFCにゃないもんかねぇ?
708デフォルトの名無しさん:2008/09/19(金) 23:32:51
ないねぇ
BoxLayoutじゃ駄目?
709デフォルトの名無しさん:2008/09/19(金) 23:40:18
ま、趣味で作ってる分だし、それでいっかな。
710デフォルトの名無しさん:2008/09/21(日) 14:05:06
趣味的にはレイアウトマネージャ自体を作るという選択も
FlowLayoutのソースを参考にしてx軸とy軸の役割を入れ替えれば
711デフォルトの名無しさん:2008/09/21(日) 16:56:00
JavaFXの話題は無いのか
712デフォルトの名無しさん:2008/09/21(日) 19:19:16
やるなら専用スレ立てるかどっかでやってくれ
713デフォルトの名無しさん:2008/09/21(日) 23:43:26
そういやJavaFX、めっきり聞かなくなったなぁ。
スレ立てたら集まるかな?

って、ここでする話題じゃないね。
スマン。
714デフォルトの名無しさん:2008/09/21(日) 23:50:42
JavaFXの話題は↓でやるべきかね。
http://pc11.2ch.net/test/read.cgi/tech/1220531647/l50
715デフォルトの名無しさん:2008/09/21(日) 23:53:47
>>710
その手は思いつかんかった。


そういやSwingの仕組みとかを解説した本やサイトっておすすめのとかある?
Model View ControllerをJavaではどう実装してるかとか。


探してもSwingのライブラリの使い方とかばっかりで……


『Javaアプリケーション作成講座―Swingプログラミング徹底攻略 (単行本)』著:赤坂玲音
がいいとか聞いたけど廃版だし……
716デフォルトの名無しさん:2008/09/22(月) 07:10:46
>>715
eclipseでF3押してSwingのソースに飛んでちょこちょこ読むのが
一番てっとりばやいと思うよ
717デフォルトの名無しさん:2008/09/22(月) 16:55:15
>>710の手だけど、他のレイアウトマネージャを内包して、
本質的な配置ロジックはそいつに委譲、返ってきた結果を使って、
表示は自分でx,y,width,heightを入れ替え(あと、反対側の辺から
計った値に変えたり)して使う、みたいなのでいけるかな。

左右だけ入れ替えるのは3年くらい前に作ったことあるけど
718デフォルトの名無しさん:2008/09/22(月) 17:04:24
左右入れ替えるだけなら setComponentOrientation(RIGHT_TO_LEFT) とか・・・
719デフォルトの名無しさん:2008/09/22(月) 17:31:20
ComponentOrientation#isHorizontal()なんていうメソッドもあるんだな。
720デフォルトの名無しさん:2008/09/22(月) 17:38:38
>>719
それ指定しても無視されなかったっけ?
たしかテキストの方向に関しては無視されたような。
721デフォルトの名無しさん:2008/09/22(月) 17:49:38
>>717
国際化対応するのなら、独自のコンポーネントでもComponentOrientationを設定した方が良い。
例えば、アラビア語圏のようなRtoL文化圏のロケールがデフォルトで設定されていれば、
生成されるコンポーネントやLayoutManagerは、RtoLにレイアウトされます。

JFCのほとんどのコンポーネントはRtoLに対応しています。
JScrollPane, JTree,JTableHeader,JComboBox,JSpinner,JSlider,JTextComponent,JLabel等々。

SwingConstantsのLEADING,TRAILINGは、そのために用意されているといってもよいかもしれません。
例えば、国際化対応する場合、JLabelやJTextFileldでLEADING,TRAILINGを使用することで、
ComponentOrientationへの依存を減少できます。

>>720
>たしかテキストの方向に関しては無視されたような。
無視されませんよ。
722デフォルトの名無しさん:2008/09/22(月) 17:57:37
>>715
>そういやSwingの仕組みとかを解説した本やサイトっておすすめのとかある?
>Model View ControllerをJavaではどう実装してるかとか。
本やサイトを、かなり読みましたが、ソースを読みまくるしかない気がする。
概略であれば、Sunのサイトを漁るの良いでしょう。ただし、一箇所にまとまってませんが。

>探してもSwingのライブラリの使い方とかばっかりで……
ですね。これは、10年近く前から状況が変わってませんね。

>『Javaアプリケーション作成講座―Swingプログラミング徹底攻略 (単行本)』著:赤坂玲音
がいいとか聞いたけど廃版だし……
以前、新たな発見があるかもしれないと思って、中古を買って暇つぶしに読んでみようかと思いましたが、
Amazonの書評で、書評数が少ないものの、酷評されているため、やめました。
715が購入したら、感想を聞きたいです。
723デフォルトの名無しさん:2008/09/22(月) 18:25:39
>>721
ん、isHorizontal() ってゴニョゴニョして無理矢理 false 返させても反映されなかったような記憶が……
724デフォルトの名無しさん:2008/09/22(月) 18:36:53
>>723
Component#setComponentOrientation(),Component#applyComponentOrientation(),
JComponent#updateUI()を参照してください。

個人的には、isHorizontal() をオーバーライドしたComponentOrientationサブクラスのインスタンスを
生成して不要なリソースを確保する理由に興味があります。
宜しければ、それが必要になるシチュエーションを教えてください。
725デフォルトの名無しさん:2008/09/22(月) 18:42:41
isHorizontalって、isLeftToRightと違って縦書き用でしょ
縦書きまだサポートされてないんじゃ
726デフォルトの名無しさん:2008/09/22(月) 18:49:51
>>723, 725
724です。
すみません。早とちりしてisHorizontal()をisLeftToRight()と読み違えてました。
isHorizontal()(縦書き)は、未サポートです。

727デフォルトの名無しさん:2008/09/23(火) 09:24:10
いつも思うんだけど、なんでTableSelectionListenerってないんだろうね
JTableからselectionModel取得して行選択イベントリスナー、columnModelのcolumnModelListener取得して列選択イベントリスナー。
めんどくさい・・・
728デフォルトの名無しさん:2008/09/24(水) 01:52:10
SWTのGridLayoutっぽいのをSwingで使いたいんですけど、どこかにありませんか?
あと皆さん、Swingでどんなレイアウトマネージャー使ってます?
やっぱNetBeans使ってGroupLayoutが一番なんですかね?
出来ればGUIエディタなんて使わずに簡単に扱えるレイアウトマネージャーが欲しいのですが・・
729デフォルトの名無しさん:2008/09/24(水) 02:11:01
SWTは使わないから間違ってるかもしれないけど
今調べた限りでは
GridBagLayoutが近いかな。

GUI作るのにIDEは使わないけど、
GridBagLayoutで中にJPanel入れてFlowLayout使うとかが
多いかな。
730デフォルトの名無しさん:2008/09/24(水) 14:08:51
JTableの列ヘッダ部分(JTableHeader)はJScrollPaneにのせる事で始めて描画されますが、
その後JScrollPaneのcolumnHeaderを別の物に変更(scrollPane.setColumnHeaderComponent(Component c))しても
それらが乗っているコンテナを可視化したりするとJTableHeaderが勝手にscrollPaneのcolumnHeaderに設定されています。

これはどこで変更されているのでしょうか?
731デフォルトの名無しさん:2008/09/24(水) 14:31:41
>>730
Javadoc の JTable#configureEnclosingScrollPane の説明文を読む
732デフォルトの名無しさん:2008/09/24(水) 14:33:23
ありがとうございます。熟読してまいります。
733デフォルトの名無しさん:2008/09/24(水) 14:49:37
>>716
やっぱりそうかな。
標準ライブラリはいい教科書になるってよく言うしね。

>>722
Sunの資料はたまに読むんだけど
あそこのサイト何かごちゃごちゃしてて迷子になっちゃう。
まとまってればいいのに。
自分用にまとめたサイトで持つくろうか。

『Javaアプリケーション作成講座(ry』
Amazonでは酷評なのか。
なら、読まんとこっかな。
どっかのサイトでかなり褒められてた気が……
読む人に依るのかな。


アンガトサン
734デフォルトの名無しさん:2008/09/24(水) 17:42:52
再び質問です。
JScrollBarでバーをドラッグ中に、内部では定期的(?)にマウスの位置を取得し、バーの位置を表す値が変化しますが、その取得の頻度を変更する方法はないのでしょうか?
735デフォルトの名無しさん:2008/09/24(水) 17:51:03
内部ではマウスイベントが来るたびに更新してるだけだと思うが
取得するのは自分で取得しに行くんだから好きな頻度で取得すればいいのでは
何をしたいのかよくわからない
736デフォルトの名無しさん:2008/09/24(水) 19:01:13
そのマウスイベントの発生周期はもちろん変更できませんよね?

単純にJScrollPaneにComponentのせているのですが、そのコンポーネントの描画処理がとても重く、スクロール中にあまり頻繁にリペイントして欲しくないんです。
paintあたりをオーバーライドして、ある時間が経過していなければpaint無視という感じにするしかないのでしょうか?
737デフォルトの名無しさん:2008/09/24(水) 19:30:16
こんな感じでどう
昔よくあった、ボタン離すまでスクロールしない、というやつ

class NonLiveScrollPane extends JScrollPane {
protected JViewport createViewport() {
return new JViewport() {
public void setViewPosition(Point p) {
if (!getHorizontalScrollBar().getValueIsAdjusting() && !getVerticalScrollBar().getValueIsAdjusting()) {
super.setViewPosition(p);
}}};}}
738デフォルトの名無しさん:2008/09/24(水) 20:06:01
コード例までわざわざありがとうございます。
移動中は全く描画しないのは寂しいので、それを応用して回数を減らさせることにします。
739728:2008/09/25(木) 01:34:42
>>729
なるほど。。GridBagLayoutの中にFlowLayoutはいいアイデアかも!
やってみます!ありがとうございます
740デフォルトの名無しさん:2008/09/25(木) 05:03:46
質問です。
今のJPanelにコンポーネントが何個か表示されていて、イベントが起きたらそれを一つ増やしたい場合どうすればいいですか?
例えば、最初にボタンが5個表示されていて、イベントが起きたら10個にする、という具合です。
741デフォルトの名無しさん:2008/09/25(木) 09:08:14
イベントを拾ってJPanelにコンポーネントをaddしたらいいんじゃない?
742デフォルトの名無しさん:2008/09/25(木) 12:26:31
すると次に
「JFrameのサイズを変更しないと追加したコンポーネントが表示されません。なぜですか?」
という質問がくるわけだな?
743デフォルトの名無しさん:2008/09/25(木) 12:31:20
>>741
JFrameのサイズを変更しないと追加したコンポーネントが表示されません。なぜですか?
744デフォルトの名無しさん:2008/09/25(木) 17:34:03
>>743
イベントが起きる前にウィンドウを最大化しておけば良いよ。
745デフォルトの名無しさん:2008/09/26(金) 17:04:43
>>743
pack()しなおしたらいいんじゃない?


>>742を見るによくある質問みたいだけど。
調べた?
746デフォルトの名無しさん:2008/09/26(金) 17:57:23
>>745
pack()したらユーザがウインドウのサイズを変更していた場合にも強制的にサイズ
変更されちゃって使いにくいUIになっちゃうな。

Swingならコンテナ(この場合JPanel)に対してrevalidate()を呼べばいいんだっけ?
747デフォルトの名無しさん:2008/09/29(月) 08:55:41
コンポーネントをマウスで移動したりしてソリティアみたいな動きにしたのですが、どこから手をつければいいのでしょうか?
public abstract void componentMoved( ComponentEvent e )
のコンポーネント・イベントがあるみたいなんですがこれですか?
748デフォルトの名無しさん:2008/09/29(月) 09:20:38
そもそも、「コンポーネントを動かす」という動作は、その特定のコンポーネントがサポートしていない限り行えません。
単純にそのコンポーネントにMouseMotionListener,MouseListenerなどでマウスの動きを監視して、動かす動作がなされたらそのコンポーネントを移動、というようにすればいいです。
749デフォルトの名無しさん:2008/09/29(月) 09:28:02
コンポーネントをドラッグ・アンドドロップにしたいってこと?
750デフォルトの名無しさん:2008/09/29(月) 09:40:37
ググってみてもあまり解説ないですね。一応、英語のチュートリアルにも目を通してみたんですけど、サンプルもありませんでした。
コンポーネントをマウスで移動する(ソリティアみたいなの)は、低レベル処理のような感じがするんですけど、自分で一から実装するものなんですか?
751デフォルトの名無しさん:2008/09/29(月) 11:33:48
一から実装ってそんなに大変じゃないよ?
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/421.java
たったこんだけでコンポーネントの移動はできる。

分かりやすくするためにいろいろNGなこともしちゃってるけど実装するならマウスの動き監視するだけでいい。
752デフォルトの名無しさん:2008/09/29(月) 11:35:47
あ、ちなみにこの例ではコンポーネントを実際に動かしてるけど、glassPaneに移動の様子を描画して、正しい動作であれば実際に移動みたいなこともよくする。
753デフォルトの名無しさん:2008/09/29(月) 11:43:44
まさにソリティアですね。
2DのGUIはあまりやってなかってんで参考にします。
実はAWTでよかったんですけど(マルチスレッドとイベントをたくさん使うので)、ありがとうございます。
754デフォルトの名無しさん:2008/09/29(月) 11:49:25
>>752
なるほど、ドラッグで、ウインドの(いちいち描画される)リサイズみたいなヤツですか?
それだと、swing限定で、awtで実装するとなると大変ですね。やっぱり低処理なんですか。
一応、swing限定であれば、internal frame のコンポーネントは機能的に同じ感じはしてたんですけど…
スレッドとかバンバン使うんでswinはなんとも…swingだとプロトタイプ用途かな。
755デフォルトの名無しさん:2008/09/29(月) 14:46:18
スレッドをバンバン使うからawtで、という発想がまったく理解できないけど…
756デフォルトの名無しさん:2008/09/29(月) 14:54:18
え?swingはシングルスレッド(でイベントと描画処理)じゃないの?
非同期処理とかやるときは、invokeLater()以外でやるとすればどうするの。
757デフォルトの名無しさん:2008/09/29(月) 14:56:44
>>752
そういえば、split pane の区切りバーみたいなヤツですか?
758デフォルトの名無しさん:2008/09/29(月) 15:33:43
そのinvokeLaterでやれよ
759デフォルトの名無しさん:2008/09/29(月) 21:36:44
ん?>>755がEDT理解してないでFA?
760デフォルトの名無しさん:2008/09/29(月) 21:52:46
>>754がアホでFAでしょ
761デフォルトの名無しさん:2008/09/30(火) 00:34:36
スレッドがわかっていない>>754がいるスレはここですか
762デフォルトの名無しさん:2008/09/30(火) 02:25:32
すみません、質問させてください。

JPanelの中にJLabelをいくつか配置した構造を作っています。
JLabelをクリックした際にMousePressイベントが呼び出されるのですが、
下にあるJPanelやJLabelのMousePressイベントも呼び出すにはどのようにしたらよいでしょうか?
763デフォルトの名無しさん:2008/09/30(火) 02:34:10
それぞれのaddZZZListener()に入れるインスタンスを同じのにする。
764デフォルトの名無しさん:2008/09/30(火) 02:35:56
ところdえ、EDTって何の略ですか?
765デフォルトの名無しさん:2008/09/30(火) 02:47:05
>>764
東部夏時間
766デフォルトの名無しさん:2008/09/30(火) 03:03:55
東部夏時間てのは、頭のてっぺんが禿げてるってことか?
767デフォルトの名無しさん:2008/09/30(火) 03:10:24
>>763
なるほど、ありがとうございます!
768デフォルトの名無しさん:2008/09/30(火) 03:17:40
>>766
違います。東部夏時間とはイベント処理スレッドのことです。
769デフォルトの名無しさん:2008/09/30(火) 08:23:59
swing的にはevent dispatch thread
770デフォルトの名無しさん:2008/09/30(火) 08:42:00
>>751
コンポネントを動かすのは、awtで実装するのは難しそうですね。
771デフォルトの名無しさん:2008/09/30(火) 09:53:20
>>770
なんでそう思うの?
>>751の全てのコンポーネントをAWTの物に変えて、setOpaqueやらsetDefaultCloseOperation()やらを消したらそのまんまで実行できるよ。
setDefaultCloseOperation()の変わりにWindowListenerとりつけるの忘れずにね。

というかマルチスレッドだからAWT使うって・・・
コンポーネント動かすとかより先にすべきことがいろいろあると思うなぁ。
772デフォルトの名無しさん:2008/09/30(火) 10:13:34
protected void processMouseEvent(MouseEvent e)
{
super.processMouseEvent(e);
}

途中のコードは省略しますが、ここでsuperを呼び出さなくても動くんですけど、呼び出さないとどういう影響が考えられますか?
773デフォルトの名無しさん:2008/09/30(火) 10:16:14
どのJComponentを拡張したの?
スーパークラスでやってることを調べたらいいと思うよ。
774デフォルトの名無しさん:2008/09/30(火) 10:56:55
各コンポーネントのZオーダーの問題も考えるとやっぱり複雑ですね。
addZZZListener()とprocessEvents()は連動していて(イベント伝達は内部では同列に管理されていて)、
superしないとListenerの方には伝達されないんですか?
775デフォルトの名無しさん:2008/09/30(火) 14:09:36
そりゃそーだ。
776デフォルトの名無しさん:2008/09/30(火) 14:42:46
extends JPanel だと簡単なんですけど、JComponentから継承して自作コンポネントを作るのはととても大変ですね。
getUI()とか、swing特有の設定がたくさんありすぎてわからないんですけど、結局何を設定すればいいんですか?
777デフォルトの名無しさん:2008/09/30(火) 14:52:26
結局 paintComponent だけ書けばいいと思うよ
あとはマウスリスナとかキーリスナとかで
778デフォルトの名無しさん:2008/09/30(火) 14:52:43
getUIはUIを委譲してるだけだから別に気にしなくてもいい。
paintComponent(Graphics g)
getPreferredSize()
この二つが比較的多いかな。
779デフォルトの名無しさん:2008/10/01(水) 00:06:41
JComponentから継承してsetOpaque(false);とかsetDoubleBuffer(true)とかやってるんですけど、
なぜか表示されると、そのコンポネント(のインスタンス)が1ドットのサイズになってしまうんですけど、いくらsetSize();をやっても変化ないです。
どうすればいいのでしょうか。
780デフォルトの名無しさん:2008/10/01(水) 00:24:02
getPreferredSizeをオーバーライドして自分の望むサイズを返せばよい
781デフォルトの名無しさん:2008/10/01(水) 00:30:48
setLayout(null);なんですけど、getPreferredSize()を上書きするとその推奨サイズに固定されませんか?
それと、ご指摘のことをやっても1ドットでした。
レイアウトマネジャと、swingの複雑な作法が混ざっていて、バク探し以上にかなりカオスですw
782デフォルトの名無しさん:2008/10/01(水) 00:36:06
今のところextends JPanelでしのいでますが、JComponentから派生したいのにこれだとJPanelのルールに縛られてしまいます。
やっぱりgetUI()とかupdateUI()の上書きになるんじゃないですか?
英語チュートリアルは長くて、siwng固有の作法(getContetPane().add()とかpaintComponent()の作法)も複雑だし、完読出来てません。
783デフォルトの名無しさん:2008/10/01(水) 07:30:29
たぶんあなたには自作コンポーネントは早い。どうしても作りたいならソース晒せ。
784デフォルトの名無しさん:2008/10/03(金) 17:55:23
JTableに,複数のクラスのオブジェクトのメンバ変数の値を混ぜて
表示したいのですが,どのようにやるのがスマートでしょうか?

DefaultTableModelのコンストラクタに渡すString[][]を生成するコードを書いていたのですが,
もっと簡単にできるのではないか,と思いまして

例えば店・人・商品クラスがあったとき,
それぞれの店の売り上げ,店主名,店主の歳,最も売れた商品の値段を一緒くたに出したいのです

というか,そもそもこういったデータはどう保持・参照するのがよいのでしょうか
SQLでも使うべきですかね
785デフォルトの名無しさん:2008/10/03(金) 18:27:51
自前のTableModelを作るべき
786デフォルトの名無しさん:2008/10/03(金) 21:24:39
>>785
ありがとうございます
自前のTableModelを作ろうとは思っておりました

データ保持部分とそれからの取り出しについて
もう少し詳しい回答をいただけないでしょうか
787デフォルトの名無しさん:2008/10/03(金) 21:34:17
AbstractTableModelを拡張するのが楽だよ
大抵はそれで事足りる。
肝心のデータはどういう形式で持ってるの?
リストかなんかでそれぞれ別々に保持してるのかな?
788デフォルトの名無しさん:2008/10/03(金) 21:35:09
JTableにどう表示したいのかイメージがわかないなぁ。こんな感じ?
|   店名   | 売り上げ | 店主名 |年齢|商品の値段|
|○×商店   |\4,200,000|○田△三|50歳|     \100|
|スーパー△◇|\4,200,000|☆野◎●|41歳|     \199|
789デフォルトの名無しさん:2008/10/03(金) 23:35:33
>>787
はい,その方向でやってみます
現在,各オブジェクトはメインのクラスがいくつかのArrayListで持っています
ArrayList<Shop> shops, ArrayList<Person> persons...
みたいな感じです

しかしこれだと規模が小さければよいのですが,クラスやフィールドが増えてきたりした場合に
かなり厄介になりそうな気がしました
オブジェクトとそのフィールドの中身を取るのにもう少し柔軟にクエリを発行して
JTableに流し込めるとよいのですが,具体的な方法が思い浮かびません
各オブジェクトのフィールドではなく,もっと中央に何らかのデータベース的なものを
置くべきでしょうか

>>788
はい,そのような形です
790デフォルトの名無しさん:2008/10/03(金) 23:48:48
テーブル使う時はだいたい1行に1オブジェクトってのが多いな
今回のなんてもろそうでしょ?
従業員クラス作って、商品の値段のリスト作って、店クラスにでも持たせて、そのオブジェクトのリストをTableModelで一つもつ。
そうすると別に厄介じゃないよ。
791デフォルトの名無しさん:2008/10/04(土) 02:44:48
>>790
ありがとうございます
今のところは1行に1オブジェクトではなく,複数のオブジェクトからのデータが混じっています
788の例ですと,店・人(従業員)・商品からのデータで,つまり参照しているクラスは3つありますね
1行に1オブジェクトがそういう意味でなかったらすみません

人(従業員)クラスや商品クラスは既にあるのですが,この中の特定フィールド値のリストを
別のところに作っておけということでしょうか?
792デフォルトの名無しさん:2008/10/04(土) 11:00:14
階層構造にして1行を1つのBeanにしとけ
把握がらくだから
793デフォルトの名無しさん:2008/10/04(土) 18:24:17
>>階層構造にして1行を1つのBeanに
すみませんがここをもう少し詳しくお願いします
794デフォルトの名無しさん:2008/10/04(土) 20:36:50
>>793
792本人じゃないけど、下記みたいな行を表現するクラスやインタフェイスを実装して、
TableModel内で管理するってことだと思うよ。
つまり、Shop,Person,...みたいなListを個別に持つ必要はないってこと。
そんな風にTableModelを実装すると管理も面倒だし、メモリリソースも無駄。

class RowData{
private Shop shop;
private Person person;
//アクセサを適宜実装したりしなかったり
}

795デフォルトの名無しさん:2008/10/04(土) 20:56:14
よく分からないのですが、java beanではそのようなにプロパティで管理するモデル
を(class RowDataみたいなクラスを)「Table Model」って言うんですか?
796デフォルトの名無しさん:2008/10/04(土) 21:20:33
違う

TableModelとはテーブルの情報を保持するもの
797デフォルトの名無しさん:2008/10/04(土) 21:25:36
java beanは、具体的にはMVCでいうModelを担当するはずだったはずですけど、どこか具体的に解説しているところないですか?
javadocのjava bean 技術解説のところもイマイチ抽象的なので、swingやserverとかの具体事例を交えて解説しているお勧めなとこはないでしょうか。
798デフォルトの名無しさん:2008/10/04(土) 21:27:58
>>794
>つまり、Shop,Person,...みたいなListを個別に持つ必要はないってこと。

それだと、RowData[]で管理するわけで結局Listなんじゃないですか?
799デフォルトの名無しさん:2008/10/04(土) 21:51:37
>>797
JavaBeansはMVCとは関係ないよ
プロパティアクセスとそれに伴うリスナーの規約に過ぎない

そしてSwingはBeansをベースに作られている

>>798
個別にListもつと不具合の種でもあるからひとつにまとめて行を確実にもつのは大事なこと
800デフォルトの名無しさん:2008/10/05(日) 01:41:19
うわ,見てない間にかなり進んでたようですね

>>794
ありがとうございます
これはJTableに表示したい組み合わせ(クラス・フィールド)をがっちりハードコーディングしている
のでしょうか?
それですと,組み合わせごとにRowData Beanを作らなくてはならなくなったり・・・しないでしょうか?
801デフォルトの名無しさん:2008/10/05(日) 09:34:32
>>800
大した手間じゃなかろ。
それに、組合せごとにAbstractTableModelの具象クラスを実装するのは変わらないんだから。

今思いついたんだけど、こんなクラス作って、
BeanTableModel<T extends AbstractRow> extends AbstractTableModel{
 private ArrayList<T> rowList = new ArrayList<T>()
 public Object getValueAt(int row, int col){
  return rowList.get(row).getValueAt(col);
 }
}
(細かいところは省略)
として、行クラスとしてこんなの作ったらよくね?
abstract public class AbstractRow{
 abstract public Object getValueAt(int col);
 abstract public void setValueAt(Object val, int col);
}

組合せごとにAbstractRowを実装すれば、TableModelの実装は1つだけで済むよ。
802デフォルトの名無しさん:2008/10/05(日) 10:58:57
>>801
確かにぱっと見るとたいした手間ではなさそうです
フィールド値による絞り込みで,「所在」が「日本」であり,かつ「店主の姓」に「山田」があるもののみリストせよ
とかいう場合にどうするかちょっと考えてみたいと思います
803デフォルトの名無しさん:2008/10/05(日) 11:33:19
>>802
それがファサード化で問題になるか?
804デフォルトの名無しさん:2008/10/05(日) 21:01:55
>>802
そういうのはTableModelをラップしてフィルタリング機能を持たせたTableModelを作るのが定石。

…だったけど、Java 6から便利な機能が追加されたんだね。
「JTableクラスでのフィルタリング」
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070323/266096/
こういうのは毎度自作してたからなぁ。最初からあったら便利だ。
805デフォルトの名無しさん:2008/10/06(月) 00:31:37
VEってもう古いの?
806デフォルトの名無しさん:2008/10/06(月) 00:55:15
うん
807デフォルトの名無しさん:2008/10/06(月) 01:20:48
今は何?
808デフォルトの名無しさん:2008/10/06(月) 01:28:22
NetBeansじゃねぇの?
809デフォルトの名無しさん:2008/10/06(月) 15:26:04
NetBeansでポトペタやってEclipseでリファクタリング。
810デフォルトの名無しさん:2008/10/06(月) 17:52:59
ネット豆の作るコードが気に食わねえ
811デフォルトの名無しさん:2008/10/06(月) 17:55:26
どう気に食わない?
かなり柔軟に設定できるが。
812デフォルトの名無しさん:2008/10/06(月) 21:06:46
VEはもっとひどいが
813デフォルトの名無しさん:2008/10/10(金) 06:01:15
>>810
NetBeansの作るコードが気にくわないというのは、カスタマイズの方法がわからないというだけじゃねぇの?
ほとんどプロパティのコードのところで制御できるんだが。
814デフォルトの名無しさん:2008/10/10(金) 20:10:08
Netbeansは.formファイルがないと編集できない時点で論外
最初からNetbeansだけで組むならいいかもしれないが
VEのほうがまだましに見える

815デフォルトの名無しさん:2008/10/10(金) 21:09:41
VEはまともに開発が出来ない時点でソースがきれいだろうが論外
作りたいのはアプリなのでNetBeansのほうがましに見える
816デフォルトの名無しさん:2008/10/10(金) 21:33:48
NetBeansでGUI作ってEclipseで編集している俺様最強。
817デフォルトの名無しさん:2008/10/12(日) 11:08:57
NetBeansは信者がすごい
818デフォルトの名無しさん:2008/10/12(日) 13:28:30
>>817
Eclipseのほうがすごいと思うけどな
819デフォルトの名無しさん:2008/10/13(月) 01:23:40
JComponentサブクラスのソースにjAccessibleContextが、ずらずらと記述されていて、
気になっているのですが、javax.accessibility.*パッケージって何ですか?
何ができるのですか?
javadocにも抽象的な説明しか記載されていませんし、検索してもサンプル等を見つけられないので。
参考URLでも良いので、ご存知でしたら教えてください。英語でも良いです。
820デフォルトの名無しさん:2008/10/13(月) 15:45:47
javadocのアクセシビリティの項目からのリンクに詳しく書いてなかったっけ?
821デフォルトの名無しさん:2008/10/13(月) 23:13:48
>820
>javadocのアクセシビリティの項目からのリンクに詳しく書いてなかったっけ?
javadoc内に詳しいといえば、詳しく書かれているのかもしれませんが、
前置きなしに使用されている単語などが漠然とし過ぎていて、個人的には理解できないものでして。

もっと根本的なところから説明されているサイトがないものかと。
できれば、詳細な説明と「こういうコードを書くと、こんなことができるよ」的な、
基本的な短いサンプルがあると理解しやすいのですが。
822デフォルトの名無しさん:2008/10/14(火) 14:30:48
あれは必要な人が使うものだから分からんレベルのお前さんには関係ないよ。
javadoc読んで分からんなら必要ない人だ。
823デフォルトの名無しさん:2008/10/18(土) 21:19:12
Javaのバージョンが1.5という縛りでSwingのLAFをNinbus変更する方法はないですかね?
824デフォルトの名無しさん:2008/10/18(土) 21:24:54
Ninbusは単体で配布されてるが5じゃつかえないの?
825デフォルトの名無しさん:2008/10/18(土) 22:34:36
Nimbus
826デフォルトの名無しさん:2008/10/18(土) 23:06:51
GUIはNetBeansで作ってコーディングはeclipseでやりたいんですけど、
どうやったらいいですかね。
今はForte+eclipseです。
827デフォルトの名無しさん:2008/10/19(日) 16:55:41
GUIはnetbeansで作ってeclipseでコードいじれば良い。馬鹿か?
828デフォルトの名無しさん:2008/10/19(日) 17:32:32
Forte・・・だと?
829デフォルトの名無しさん:2008/10/19(日) 22:32:39
俺も昔はForteだったよ。eclipseに移ったけど。
あのころに比べればnetbeans6がかなりまともになってる。
830デフォルトの名無しさん:2008/10/19(日) 22:53:21
いまだにForteって信じられんな
Swing使ってるなら3.5からはNetBeansに移行するのが自然だと思うのだが

>>829
VEの放置っぷりがすさまじいよね
831デフォルトの名無しさん:2008/10/20(月) 01:44:14
で、なんでEclipseでコーディングやりたいの?
832デフォルトの名無しさん:2008/10/20(月) 03:22:33
エディタの親切さがNetbeansよりも上
833826:2008/10/20(月) 07:44:07
eclipseのソースの取り込みがForteは楽だったからForteでした。
Netbeansで取り込もうとしたけどうまくいかなかった。
834デフォルトの名無しさん:2008/10/20(月) 14:43:32
そういえば、project importer って使ったこと無いな。
835デフォルトの名無しさん:2008/10/22(水) 10:29:24
UIの形を連続的に変化させたり、フェードイン・フェードアウトをスプライン曲線風にスーッとアニメーションしたいんだけど
何で組むべきかなぁ

javax.swing.Timerとか使えばいいのかね
836デフォルトの名無しさん:2008/10/22(水) 18:42:20
よかよ
837デフォルトの名無しさん:2008/10/23(木) 00:57:58
838デフォルトの名無しさん:2008/10/23(木) 14:55:04
Swingもこれほど時間が経つのに、いまだにデスクトップに
透過PNGをそのまんま表示することすらできないという現実

頭が痛いぜ・・・
839デフォルトの名無しさん:2008/10/23(木) 15:04:34
デスクトップはswingと何の関係が…?
840デフォルトの名無しさん:2008/10/23(木) 15:26:42
ウィンドウ透過できるようになったんじゃ?
841デフォルトの名無しさん:2008/10/23(木) 15:34:33
>>840
なったの?JWindowとかにsetOpaque(true)して効果ある?

>>839
意味がわからない。Swing GUIはデスクトップ以外でどこで使われるというんだ
842デフォルトの名無しさん:2008/10/23(木) 15:34:46
なったよ。

JWindow window = new JWindow();
window.getContentPane().add(new JLabel(new ImageIcon("透過PNGファイル.png")));
window.pack();
com.sun.awt.AWTUtilities.setWindowOpaque(window, false);
window.setVisible(true);

とかで透過できるはず。
843デフォルトの名無しさん:2008/10/23(木) 15:44:48
>>841
jdk6 update10以降ね。

http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/
この辺でも読んどいてくれ。
844デフォルトの名無しさん:2008/10/23(木) 23:04:06
正式のu10以前から入ってて結構騒がれたんだが・・・今まで気付かなかったのか。
845デフォルトの名無しさん:2008/10/23(木) 23:29:15
>>843
com.sun.awt パッケージって事は一応ベンダ固有の拡張APIって位置づけなのか。
846デフォルトの名無しさん:2008/10/24(金) 00:08:01
>Note: the com.sun.awt.AWTUtilities class is not part of an officially
supported API and appears as an implementation detail. <snip>
Supported and public API will appear in the next major JDK release.

だそうな。
847デフォルトの名無しさん:2008/10/24(金) 00:09:40
アップルもGNU CLASSPATHもどうせ勝手に実装するだろう。
AWTなんて元々ピア部分はもろ実装依存だし。
848デフォルトの名無しさん:2008/10/24(金) 15:38:12
編集可能なJComboBoxで、用意した選択肢以外の項目が手で入力されたことを
検出する方法は、どうすればいいんでしょう? getSelectedItemで得たものを
自分で照合しないといけないんですか? よろしかったら、教えてください。
849デフォルトの名無しさん:2008/10/24(金) 17:03:07
if (comboBox.getSelectedIndex() == -1) とか?
850848:2008/10/24(金) 19:31:56
レスありがとう。試してみます。
851デフォルトの名無しさん:2008/10/27(月) 23:16:00
JBUTTONのbackgroundの色にグラデーションをつけることは出来ますか?
852デフォルトの名無しさん:2008/10/27(月) 23:47:30
Look & Feelに依存するから、一般的にやるのは難しいだろうね
自分でBasicButtonUI拡張して作ってみたら?
853デフォルトの名無しさん:2008/10/30(木) 01:04:03
JTextPaneでselectionの範囲に色が付きますが、
複数行を選択したときに行末より右の部分にも色が付くようにしたいです。
どうやればいいでしょう?
854デフォルトの名無しさん:2008/10/30(木) 01:28:50
getSelectionHighlighter を差し替えた DefaultCaret を
JTextPane に setCaret してやる……んだったかな
うろおぼえ
855デフォルトの名無しさん:2008/10/30(木) 20:30:32
swingで作られるウインドウってWindowsとMacで外観が違ったりするの?
JREのバージョンによって違うのは自分の環境でたまたま発生したけど…
856デフォルトの名無しさん:2008/10/30(木) 22:05:05
少なくとも、L&Fの設定によるんじゃね?
最近のはプラットフォームのネイティブを真似たモノがデフォ。
昔は、MacOSXはAquaで他はMetalだったはず。

あと、使うフォントのマッピングが違うとずれるかもね。

JREのバージョンによる差は、似せ具合の作り込みの差とかいろいろ。
857デフォルトの名無しさん:2008/10/30(木) 23:08:05
>>856
SystemLAFがデフォになったの?
858デフォルトの名無しさん:2008/10/31(金) 03:28:50
SunのJREではMetalがデフォ
ただしフレームはL&Fに関わらずシステム依存

じゃないかえ
859デフォルトの名無しさん:2008/10/31(金) 12:16:20
なぜネイティブのL&Fがデフォルトではないかよく考えてみるべきだった
860デフォルトの名無しさん:2008/10/31(金) 20:08:53
JFrameでサイズ指定すると、タイトルバーや四方の枠線も含めたサイズを指定することになるよね。
そうではなく、内側の、描画が反映される範囲のサイズで指定したい。
また、画像描画などの位置を、ウインドウの最上端からのピクセル数ではなく、
タイトルバーの下からのピクセル数で指定したい。

いかなる環境で動作させても、JFrameのタイトルバーの幅は同じピクセル数であるというのなら、
単純にサイズ指定のときにその幅をプラスするだけでいいと思うけれど、
おそらく実際には環境によってタイトルバーの幅が違うとおもうし、
仮にこれでうまくいくんだとしても強引なソースになってしまう。

タイトルバーの幅や四方の枠の幅を調べたり、もしくは調べるまでもなく
内側の領域の数値を指定してサイズ変更する方法があったら、教えてください。
861デフォルトの名無しさん:2008/10/31(金) 20:23:56
>>860
APIに書いてあるよ
862861:2008/10/31(金) 20:31:28
ど忘れしてたから確認してきた
多分Insetsのことだと思うけど違うかな
863860:2008/10/31(金) 22:09:12
おおー!
Insets でググったらわかりました!
ありがとうございますー!
864デフォルトの名無しさん:2008/10/31(金) 22:23:21
>>860
packメソッドとかじゃね
865デフォルトの名無しさん:2008/10/31(金) 22:53:13
>>860
コンテンツ区画の推奨サイズを指定してpack
Insets分を加えてJFrameのサイズを指定するよりスマート

> また、画像描画などの位置を、ウインドウの最上端からのピクセル数ではなく、
> タイトルバーの下からのピクセル数で指定したい。
これは普通コンテンツ区画上のコンポーネントかコンテンツ区画そのものかに描画するだろうから
ウインドウの左上端が原点になることはないのでは?
866860:2008/10/31(金) 23:14:29
お返事ありがとうございます。
勉強しながらのプログラミングなので、まだわかっていない事が多いです…
コンテンツ区画というのは、JFrame内の、描画や配置ができる範囲ですよね?

現在作っているのが、固定画面アクションゲームのマップエディタです。
昔Visual C++で作った固定画面アクションゲームの、
マップデータを作るエディタを、JavaのGUIの勉強がてらに作っています。
最低限のマップチップ配置&キャラクター配置をして、
それをバイナリファイルに保存することまで作りました。
しかしJFrameに直接 Graphics2D.drawImage() で描画しているため、
JFrameの枠線・タイトルバーを考慮しない座標になっているため、
これを回避するために、>860の質問になりました。
Visual C++ でいうと、ウインドウに直接 BitBlt() しているような感じです。

>862さんの言う Insets を使った方法でおそらく回避できると思いますが、
コンテンツ区画というものを理解したほうが、より「力押しではないプログラム」になりそうですので、調べてみます。
867デフォルトの名無しさん:2008/10/31(金) 23:31:17
>>866
例えば大雑把にはこんな感じに
import java.awt.*;
import javax.swing.*;
public class Hoge {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JComponent() {
public void paintComponent(Graphics g) {
g.setColor(Color.RED);
g.drawLine(0, 0, getWidth(), getHeight());//とりあえずコンポーネントの原点から右下端までの線分
}
});//描画するためのコンポーネントをコンテンツ区画に配置する
f.getContentPane().setPreferredSize(new Dimension(400, 400));//コンテンツ区画サイズが400x400
f.pack();
f.setVisible(true);
System.out.println(f.getSize());//フレームのサイズはコンテンツ区画のサイズにInsetsを加えたものに
}
});
}
}
> JFrameに直接 Graphics2D.drawImage() で描画しているため
これを直接でなくコンポーネントを定義してそのコンポーネントの中で描画する
上の例ならg.drawLine()しているところ
868デフォルトの名無しさん:2008/10/31(金) 23:51:09
直接JFrameに描くのではなくコンポーネントに描画機能を付けてそれを配置するようにすれば
例えばコンポーネントの周りにデコレーションを付けて表示するとか
ボタンとかの他のコンポーネントもフレーム上に配置するとかする時にでも
それぞれのコンポーネントはフレーム上のどこに配置されているかを気にせずに描画することができるようになる

>>867はコンテンツ区画いっぱいに一つのコンポーネントが広がった状態になるので
コンテンツ区画サイズ=コンポーネントサイズになっているけれど
複数のコンポーネントを配置するようなら
特定のサイズを必要とするコンポーネントに対してその推奨サイズを設定して
コンテンツ区画全体のサイズは指定せずにpackだけしてやれば
レイアウトマネージャが適当に全体のサイズを計算してフレームサイズに反映してくれる
そのときに推奨サイズが反映されるかどうかは設定されたレイアウトマネージャの性質次第だけど
869デフォルトの名無しさん:2008/11/01(土) 00:27:52
GUIの勉強兼ねてるなら、
この辺読むと「コンテンツ区画」について理解できるかもしれない
http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html
英語だが。
870860:2008/11/01(土) 05:35:07
わっ、サンプルコードまで書いていただけるとは、感謝感激です!
SwingUtilities.invokeLater() というのは初めて見ました、
描画したいコンポーネントをスレッドとして渡す… って使い方でしょうか。
いただいたサンプルコードをしっかり理解できるように調べて、
色々書き換えてみて勉強させていただきます。

>869さんもありがとうございます、がんばって読んでみます。
871デフォルトの名無しさん:2008/11/01(土) 10:26:21
SwingUtilities.invokeLaterはSwingを使う標準の手続きです
mainの中でこれやらずに直接Swingコンポーネントを使ったりすると危険だよ

Sunのドキュメントにも書いてある
872デフォルトの名無しさん:2008/11/01(土) 12:36:26
>>860
まさか他のスレッドからコンポーネントにアクセスしてないだろうな・・・
873デフォルトの名無しさん:2008/11/03(月) 20:31:55
JTextFieldの幅がキャレットが描画される分を考慮していないので、テキストの描画がうまくいかない場合がある。
それで困っている人がいたら、getPreferredSize()をオーバーライドして
super.getPreferredSize().width++とやるとピッタリになる。

たぶんテキスト関連の他のコンポーネントも同じかと思う。
874デフォルトの名無しさん:2008/11/04(火) 08:01:32
Javaはオフにしてますから
875デフォルトの名無しさん:2008/11/04(火) 08:54:19
876デフォルトの名無しさん:2008/11/05(水) 20:08:33
JREをインストールしてないって意味かな
877デフォルトの名無しさん:2008/11/05(水) 20:36:43
>876
Javaとjavascriptの違いが分からん人かと。
878デフォルトの名無しさん:2008/11/06(木) 09:29:14
879デフォルトの名無しさん:2008/11/07(金) 13:07:52
ところでなんでSwingって名前なの
880デフォルトの名無しさん:2008/11/07(金) 20:16:43
同じコンポーネントクラスでも、オブジェクトごとにlafを設定する方法はありますでしょうか?
881デフォルトの名無しさん:2008/11/08(土) 00:12:06
882デフォルトの名無しさん:2008/11/08(土) 00:30:18
自分も基本Javaはオフです。
Swingもオフにできますか?
883デフォルトの名無しさん:2008/11/08(土) 01:03:03
Javaをオフにするというのがわからないが、
Javaプログラムが動作しない環境で、
Swingだけが動作するというのがあったら、むしろすごいな。
884デフォルトの名無しさん:2008/11/08(土) 09:47:35
885デフォルトの名無しさん:2008/11/09(日) 23:32:24
Synthについて質問です。
テキスト関連のコンポーネントのテキストの描画方法を変更したい(テキストにグラデーションをかける、など)のですが、SynthGraphicsUtilsのpaintTextは描画に用いられていないようなのです。
変更を加える方法はありますでしょうか?
886デフォルトの名無しさん:2008/11/09(日) 23:54:54
Synthのソース読んでみましたがどうもComponentUIから実装しないとだめっぽいですね
例えばJTextAreaでしたら、SynthTextAreaUIと同じものをBasicTextAreaUI拡張して作成して、paint()メソッド前でごにょごにょ
あとはXMLの方でdefaultPropertyでui設定。。。

テキストコンポーネント毎に書くとなると相当面倒みたいですね。お騒がせしました。
887デフォルトの名無しさん:2008/11/10(月) 20:52:46
これは期待。
http://www.pej-hed.jp/washo/2594.html
ピアソン本買うの数年ぶりだ。
888デフォルトの名無しさん:2008/11/10(月) 21:25:16
Swing Hackみたいにがっかりする内容じゃないっぽいね
889デフォルトの名無しさん:2008/11/10(月) 22:04:11
http://filthyrichclients.org/
ここのExamples見てみて。
なかなかにがっかりだよ
890デフォルトの名無しさん:2008/11/11(火) 00:11:05
洋本読んだけど、
Swing一通り学んだぐらいの中級者以上の人には
かなりいい内容だと思うよ。
エフェクトとか、そこまで必要かよ!みたいな内容も
勉強としては読む分にいいんじゃないかな。
ただ6000円は高い気がする。
891デフォルトの名無しさん:2008/11/11(火) 00:30:02
>>890
filthyrichclientsの英語のPDF版を買おうと思ってたから、和訳が出るならそっちにしようかな。。
ただ、6000円だったら、PDF版にしようか迷うなー。
個人的には、EffectiveJAVAの新刊が早く和訳されるといいなと思う。

>>888
>>889
ところで、よくSwingHacksは、がっかりな内容だったって意見を目にするし、
filthyrichclientsもがっかりそうだと言っていますけど、
例えば、どういう内容だと良いのでしょう?

たしかにSwingHacksは、個人的には技術的に得るものはなかったものの、
SwingやJAVA2Dの書籍自体が少ないので、読み物としてそれなりに楽しめたけど。
892デフォルトの名無しさん:2008/11/11(火) 00:46:05
>たしかにSwingHacksは、個人的には技術的に得るものはなかったものの、
たぶんみんなこれ思ったんだよ

おまけのJavaSoundなんて入れないほうがいいくらいひどいし
それくらいならSwingにもっとページをさけよと
893デフォルトの名無しさん:2008/11/11(火) 00:46:36
Swing終了のお知らせ
http://www.pushing-pixels.org/?p=758
894デフォルトの名無しさん:2008/11/11(火) 01:22:59
>>893
こういう話しは引くな〜
895デフォルトの名無しさん:2008/11/11(火) 01:32:54
void func(Graphics g)
というメソッドを作っていて、この引数だけからgのサイズ x, y, w, h を得る方法はないでしょうか?

Rectangle getClipBounds()がありますが、APIを見るとイマイチ分からないのですが、
クリップが設定されてないときとは、明示的なsetClip(null)以外にいったどのようなときなのでしょうか。
896デフォルトの名無しさん:2008/11/11(火) 01:37:04
>>892
>たぶんみんなこれ思ったんだよ
>おまけのJavaSoundなんて入れないほうがいいくらいひどいし
>それくらいならSwingにもっとページをさけよと
あぁ、これは特にそう思った。
いま、目次をざっと見たけど、10,11,12章は特にいらない。
読み物としてもつまらなかった記憶がある。

つまらないといえば、JTable,JTree,JList,JTextComponentといった、
Swingの核とも言えるようなものも、hackというには、ありきたり過ぎでつまらんと思った。
ただ、Swingを使い込んでない人(初級から中級位かな)には有用だと思うけど。

結局、タイトルがいけなかったのかね。
"Hacks"とかつけなければ良かったのかも、"hack"がつくと、
どうしても買い手の期待値があがってしまうね。

ところで、filthyrichclientsの著者や、Swingチームのトップは、
今年Adobeに行ったけど、Swingは今後どうなんだろう。
897デフォルトの名無しさん:2008/11/11(火) 02:16:51
Swing使いならinvokeLater()を知らないと駄目
http://pc11.2ch.net/test/read.cgi/tech/1204155623/871
898デフォルトの名無しさん:2008/11/11(火) 03:25:49
SwingUtilitiesのinvokeLaterを使うのが許されるのは、小学生までじゃねぇの?
EventQueueのinvokeLaterを直接呼んだほうがよくない?
899デフォルトの名無しさん:2008/11/11(火) 05:29:41
小学生がほざいてるよw
900デフォルトの名無しさん:2008/11/11(火) 08:14:45
たしかにhacksって名乗るほどhackしてなかったな
もっとUIいじりまくりコンポネントをぐりぐり自作lafぐらいまで
あったらhackっぽくなるんだろう
901デフォルトの名無しさん:2008/11/11(火) 12:53:40
>>900
>もっとUIいじりまくりコンポネントをぐりぐり自作lafぐらいまで
>あったらhackっぽくなるんだろう
それもいいんだけど、個人的には、コードをそのまま利用できなくてもいいから、
「おぉー、これは!」と思えるような意外な発想とか、着眼点とか、
通常、そういう使用方法や実装のサンプルがないapiの意表をついた
使用のサンプルとか、そういうのが少しでもあれば面白かったと思ったかな。
何がhackに値するかは難しい。。。

902デフォルトの名無しさん:2008/11/11(火) 20:10:28
iTunesみたいなUIの動きを
Swingで実現できたら激しくHackだと思う。
903デフォルトの名無しさん:2008/11/11(火) 20:27:23
>>895 どなたか・・
904デフォルトの名無しさん:2008/11/11(火) 20:56:16
高度なアニメーション、半透明とかかな。
GUIをアフィン変換して変形したりできれば、それなりに面白そうなものが出来そうだけど
905デフォルトの名無しさん:2008/11/11(火) 22:11:12
使いにくそうだなw
906デフォルトの名無しさん:2008/11/11(火) 22:43:23
たしかSwingXでそんなサンプルがあったなー
ありゃ度肝抜かれたわw
907デフォルトの名無しさん:2008/11/11(火) 23:32:51
>>893
>>894
Commentにも目を通した?
まぁ、今後、どちらの話が真実になるかは知らんけど。

そもそも、何のコンポーネントも追加されたりしないし、バグは修正されないしで、
今までだって、Swingって停止状態な気がするんだけど、気のせい?
908デフォルトの名無しさん:2008/11/11(火) 23:41:55
swingパッケージはコンポーネントの集合だってことを忘てないか。
Graphics2DやJava3Dとかと全く別者で、ごっちゃにしてる奴がいるけどこいつは何?
909デフォルトの名無しさん:2008/11/11(火) 23:52:37
コンポーネント単位で追加されたのって JSpinner ぐらいだっけか?
910デフォルトの名無しさん:2008/11/12(水) 00:29:22
swingに精通してんならコンポーネントぐらい自分で作ってみろよww
911デフォルトの名無しさん:2008/11/12(水) 01:05:45
コンポーネント自作してみたいんだけど、Javaのコードだけで自作できるの?
912デフォルトの名無しさん:2008/11/12(水) 01:11:35
>>911
Swingが何で出来てると思ってたんだよ
913デフォルトの名無しさん:2008/11/12(水) 01:28:01
この一連の流れで言ってるコンポーネントって、java.awt.Componentのこと?
それともJComponentや、そのサブクラスを含めた総称としてのコンポーネントのこと?
それと、なぜJava2DとJava3Dでなく、Graphics2DやJava3Dが出てきてるの?

914911:2008/11/12(水) 01:30:51
>>912
なんでできてるの?
915デフォルトの名無しさん:2008/11/12(水) 01:46:11
>>913
おまえは、勉強の、やり直し!
916デフォルトの名無しさん:2008/11/12(水) 02:16:13
>>915
何の勉強。。
コンポーネント、コンポーネントって言ってるけど、
何を指してるか意味不明だし、なんでGraphics2DやJava3Dと異なる軸が
出てくるのか分からないから、聞いてみただけなんだけど。
あほらしいから、もういいや。
917デフォルトの名無しさん:2008/11/12(水) 04:16:23
>>916
コンポーネントを分かってないようだけど大丈夫か?
もう一回Hacksを読み直した方がいいかもな。
918デフォルトの名無しさん:2008/11/12(水) 05:49:41
>>911
JTextFieldにマウスもっていってコントロール押しながらクリックしてみろ!
919デフォルトの名無しさん :2008/11/12(水) 20:26:55
>>893
だれか内容を要約してくれないか
920デフォルトの名無しさん:2008/11/12(水) 20:38:54
Sun が SwingX への資金を打ち切りやがった。
Sun は Swing から JavaFX にシフトするみたいだ。
Swing は見捨てられた。Swing はもう終わりだ。

みたいな感じ?
921デフォルトの名無しさん:2008/11/12(水) 21:46:46
ところでSwingXってなんですか?
922デフォルトの名無しさん:2008/11/12(水) 22:02:16
923デフォルトの名無しさん:2008/11/12(水) 22:22:31
swing labs のプロジェクト全体のことだったんですか。
924デフォルトの名無しさん:2008/11/12(水) 23:20:17
http://swinglabs.org/ 全体っていったらこっちじゃね?
925デフォルトの名無しさん:2008/11/13(木) 02:37:46
じゃ、特定コンポーネント向けのアルゴリズム集の全体ってところですか。
コンポーネント自体じゃなさそうですけど。
使ったことないんですけど、便利そうですね。
926デフォルトの名無しさん:2008/11/13(木) 07:41:23
とりあえず「全体」にしたいのなw
927デフォルトの名無しさん:2008/11/14(金) 09:06:59
SwingXがペヤングだとしたら
SwingLabsは、まるか食品みたいなもんだ。
928デフォルトの名無しさん:2008/11/14(金) 09:48:55
おまえ、何年生まれだよw
929デフォルトの名無しさん:2008/11/14(金) 14:37:11
>>920
Java FXって内部でSwingを呼び出してるわけじゃないの?
完全に独自ライブラリ?
930デフォルトの名無しさん:2008/11/14(金) 14:50:17
>>929
SwingLabsで、SUNと外部開発者は協力してたはずなのに、
SUNは一方的にJava FXに都合のいいように、Swingの描画機構を
書き換えやがった、チクショー、もうこねぇよ、って話。
931デフォルトの名無しさん:2008/11/14(金) 18:07:20
>>930
どうも。そうするとSwingLabsの人々は変更された機構に合わせて
自分たちのコードを書き直さないといけないのが嫌だということなんだね。

まあSunも一言言うなりしてもよかったと思うが・・・
でもこれでSwingが死んだというのはちょっと言い過ぎに見えるというか
どこが終わったのかさっぱり判らん

SwingLabsの人々にとって死んだと言うことなら話は通るけど
932デフォルトの名無しさん:2008/11/14(金) 19:28:34
SwingLabsはSunの中の人とSun以外の外部開発者がいて、
将来的にSwingLabsの成果物は Swing に取り込まれるのが目標で、
そのために両者が協力していく場としてSwingLabsがあったというか。

SwingLabs内のSunの中の人が勝手に描画機構を削ったって事らしいので
「自分たちのコードを書き直」せばいいとか、forkすりゃいいって問題でもないらしい。
Swing に取り込まれる可能性が低いのがわかってりゃモチベーション上がらんし
人も集まらんし。
933デフォルトの名無しさん:2008/11/14(金) 21:34:04
怒るのも分かるけど、そいつらはJavaFXの方を全く知らんのだろ。
SUNはswingもjavafxも両方精通しているわけだし、将来的にjavafxはjavascriptと同じくavaと連携するんだろうし、だからそういう決定をしたんじゃないの?
だから一方的にひがんでるだけじゃないの?
934デフォルトの名無しさん:2008/11/15(土) 14:02:54
Microsoftならここで互換性を残す
935デフォルトの名無しさん:2008/11/15(土) 20:02:29
Swingの目的はメジャーなWindowSystemの
最大公約数の機能を提供する事じゃないの?
あんまり凝った機能を作ったとしても普通に載らない気がしないでもない。
936デフォルトの名無しさん:2008/11/15(土) 21:30:02
昔のAWTはそうだったけど
いまやシステムトレイとかはいってきてるしそうでもないと思われ
937デフォルトの名無しさん:2008/11/15(土) 23:46:18
Swing と直接関係ない話だが
SystemTray.isSupported() とか
GraphicsDevice.isFullScreenSupported() とか
Window.isAlwaysOnTopSupported() とか
プラットフォームにサポートされてるか
チェックしなくちゃいけないものが増えてきたな
次は透過ウィンドウか
938デフォルトの名無しさん:2008/11/16(日) 03:32:54
>>935
それはAWTの話だろ
939デフォルトの名無しさん:2008/11/16(日) 03:41:10
swingもawtも同じコンポーネントだしGraphics使ってるしどこか大きな違いはあるのか?
940デフォルトの名無しさん:2008/11/16(日) 04:03:10
>>939
重量コンポーネントと軽量コンポーネントについて勉強して出直してこい
941デフォルトの名無しさん:2008/11/16(日) 12:11:53
SwingはAWTコンポーネントの上になりたってるものだけどな

Widgetの話をしているのかAWTパッケージの話をしているのかいつも曖昧だな
942デフォルトの名無しさん:2008/11/16(日) 12:18:38
swingはその両方が中心の話題じゃないのか。たまに「awtはsiwngじゃない!siwngじゃないんだ!!」と決め込んでる奴もいるがw
943デフォルトの名無しさん:2008/11/16(日) 22:19:28
>>941
SwingはAWTの上になりたってはいるが、AWTコンポーネントの上にはなりたっていない
944デフォルトの名無しさん:2008/11/16(日) 22:51:11
>>943
945デフォルトの名無しさん:2008/11/16(日) 23:06:10
>>943
自分の文章を読み返した方が良いと思うぞ。
946デフォルトの名無しさん:2008/11/16(日) 23:10:48
939からの流れであることを考慮してほしいな
947デフォルトの名無しさん:2008/11/16(日) 23:28:10
>>943
使う分には気がつかないが、自分でswingコンポネントを開発してみると分かるよ。ま、君じゃ無理だろうけどねww
948デフォルトの名無しさん:2008/11/16(日) 23:34:28
俺開発してるけど分かんない!
949デフォルトの名無しさん:2008/11/17(月) 08:05:33
>>948
考えるんじゃない
感じるんだ
950デフォルトの名無しさん:2008/11/17(月) 15:24:32
setUndecoratedしたJFrameをリサイズしたいんだけど,いい方法あるかな?
951デフォルトの名無しさん:2008/11/17(月) 15:29:02
setSize
952デフォルトの名無しさん:2008/11/17(月) 15:31:41
ごめん,ユーザがマウスでウィンドウ枠をドラッグできるようにしたいわけだ
953デフォルトの名無しさん:2008/11/17(月) 15:47:20
ウィンドウ枠を消したいのに、枠をドラッグできるようにしたいとは、これいかに

まぁ、自分で枠っぽいコンポーネントでも置いて、
ドラッグに反応してsetSizeするしかないんじゃないかな、と俺は思う
954デフォルトの名無しさん:2008/11/17(月) 16:28:05
>>952
システムが提供してる機能を自分で無効化してるんだから、自前で実装するしかないだろ…
955デフォルトの名無しさん:2008/11/17(月) 17:14:17
今仕事で、既存のswingの機能追加をやってるんだけど
パネルで枠作っても表示されなかったりしてレイアウトがうまく作れない。
レイアウトのサンプルサイトとかみてながらやってるんだけど、
お勧めのサイトか参考書あったら教えて
956デフォルトの名無しさん:2008/11/17(月) 17:20:32
レイアウトマネージャーは何使ってるの?
957デフォルトの名無しさん:2008/11/17(月) 17:24:26
>>956
BorderLayoutとFlowLayoutを使っています
958デフォルトの名無しさん:2008/11/17(月) 17:36:11
>>955
レイアウト試すなら、NetBeans使うのが一番楽。
NetBeansのコードがそのまま使えればそれを使えばいいし、使えなければコピペすればいい
959デフォルトの名無しさん:2008/11/17(月) 17:39:46
>>958
今からインストールしてやってみる
これってEclipseのVEみたいなもの?
960デフォルトの名無しさん:2008/11/17(月) 18:11:41
ビジュアルエディタより軽くて高性能
961デフォルトの名無しさん:2008/11/17(月) 18:36:09
>>953
システムの提供する枠(特にタイトルバーとか)は表示させたくないが
サイズ変更はさせたいという場合があるもので。

もちろん枠っぽいものを書いて置いて,setCursorとかでカーソルを変えながら
ドラッグイベントを取ったりすればいいんだと思うんだけど
定式化されたやり方があるかなと思ったもので。
ないなら自分でやるしかなさそうだね
962デフォルトの名無しさん:2008/11/17(月) 18:38:01
>> 959
一時的に使うなら、インストーラよりも、zip落とすのがいいと思うよ。
リンクは下のほうにある
963デフォルトの名無しさん:2008/11/17(月) 18:41:50
>>954
「システムが提供する機能」が枠を表示しないようにすると全て使えない
というのも、ちょっとどうなのかと思うが・・・装飾なんだから。

とはいえここはJavaDoc嫁ということで。
964959:2008/11/17(月) 18:50:27
NetBeansを使ってみたんですが、ソースのフォーマット(?)が既存のコードに無い記述方式を
使っているので、うまく移行できません。
パネルを宣言するのも下記のような記述になります。
org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
この記述を変換することは可能でしょうか?
965デフォルトの名無しさん:2008/11/17(月) 19:04:35
javax.swing.GroupLayout に置き換えればいいんでね
966デフォルトの名無しさん:2008/11/17(月) 19:05:12
Java2DやSwingの定番のベンチマークツールってある?
jdk1.6u10 でどの描画がどの程度速くなったかちょっと比較してみたいっていう
程度の用途なんだけど…
967デフォルトの名無しさん:2008/11/18(火) 00:13:05
>>959
あんなカスとくらべるな
968デフォルトの名無しさん:2008/11/18(火) 00:16:03
>>964
デフォのレイアウトがフリーデザインになってるから
右クリックで表示されるメニューでレイアウトの変更をするといいよ

それともJavaのバージョンが古いくてもjavaxにしたいってこと?
969デフォルトの名無しさん:2008/11/18(火) 00:17:56
アクセラレータであるJTableにフォーカスを当てるって可能ですか?
970デフォルトの名無しさん:2008/11/18(火) 00:24:05
JFrameにJButtonやJTextArea、JLabelを貼り付けて表示するプログラムを作っていて、
数十回に1回はウィンドウが真っ白(JFrameをsetVisibleしただけのウィンドウ)になる事が
あるんだけど、これはコンポーネントの貼り付け方による不具合と見るのが濃厚でしょうか?
一応イベントディスパッチスレッド(SwingUtilities.invokeLater()を使ってJFrameを生成しています。)
971デフォルトの名無しさん:2008/11/18(火) 01:03:16
>>970
発生タイミングを言わないと判らない。
972970:2008/11/18(火) 01:20:30
>>971
発生タイミングはsetVisibleでウィンドウが表示された瞬間既に
真っ白になっています。ただ表示させただけです。
ボタンを押すとかテキストを入力する等のイベントでは全く問題ないです。
973970:2008/11/18(火) 01:23:11
>>971
書き忘れてしまいましたが、何故かウィンドウを最小化→元に戻すと
表示が直っています。
またウィンドウが真っ白な状態でもKeyListenerやActionListenerは
拾っており、ウィンドウの描画だけがされていないようです。
974デフォルトの名無しさん:2008/11/18(火) 01:26:37
GLJPanelのパイプライン最適化っていつ実施されるんでしょう?
975デフォルトの名無しさん:2008/11/18(火) 01:54:16
swingって最近どうなの?8年くらい前にちょっとやったけどなんか進化したの?
どれくらい実用されるようになった?技術的には速度とかはどうなん?
競合はFlash?Linuxとかでも問題ない?
976デフォルトの名無しさん:2008/11/18(火) 01:57:22
>>964
レイアウトの勉強しる。
レイアウトをBorderLayoutやFlowLayoutに変えればいい。
977デフォルトの名無しさん:2008/11/18(火) 01:58:57
>>975
速度はかなり改善された。機能上のめだった変更はない。
Linuxでも問題ない。競合は通常のウィンドウアプリ。
Flash対抗はJava FX
978デフォルトの名無しさん:2008/11/18(火) 02:04:23
>>975
最新のSun JVM (6u10) だとVistaのSuperFetchみたいな機能で起動も速くなる。
実用では2ちゃんブラウザのV2Cとかは、全OSで愛用者がいるヒットアプリになってる。
979デフォルトの名無しさん:2008/11/18(火) 02:22:58
>>975
Netbeansあたりを動かして見れば、Swingアプリの現状がわかると思われ。
980デフォルトの名無しさん:2008/11/18(火) 02:45:26
どっかアプレットとかでなんかぐりぐりデモしてるとこないのかな?
なんかめっきり見つからんな。いまならアプレットももりもり動きそうな気が
するんだけど、なんか実行環境とかに問題があるんだっけ?
なんか最近のFlashとアプレットとJavaScriptの位置づけというか力関係って
いまいちわかんないんだよなあ。

Flash→デザインきれい。動きもGUIで作れるし、スクリプトもできる。動画送れる。
Java→ごりごりコーディングすればいろいろ作れる。ツールはあんまない感じ。
JavaScript→Ajax!。HTMLを動的にいじれる。互換性対応がだるい。
ActiveX→直接利用より基盤技術か?株トレードとかリアルタイム重視のとこで使われてたり。

こんな印象があるけど、詳しい人コメ頼む
981デフォルトの名無しさん:2008/11/18(火) 02:56:23
力関係
Flash > JavaScript >>>>>>>>>>>> Javaアプレット > Active X
982デフォルトの名無しさん:2008/11/18(火) 05:38:32
>>980
Flashはツールの力が大きい。
SunはJavaFXを作ったけど、ツールはAdobeソフトのプラグインなんで、Flash/AIR越えはできんな。
983デフォルトの名無しさん:2008/11/18(火) 06:09:28
Javaのデスクトップ用のアプリ環境は、jdk1.4で改善されて、今のjdk1.6では
速度や実用などハード・ネイティブなところはほとんど問題とされないぐらいになっている。

winなら表はjava.awtかも知れないけど、内部ではdirectxやopenglでグリグリに変わっているから実質java使うかmfcつかはソフト上効率差はない。
あと、SUNがデスクトップに本腰を入れてきたから、今作業中だけどほぼライセンス・フリーで使えるツール・ライブラリ・パッケージの整備が盛んでappletとかflushとかは
java.awtの敵でもなんでもない感じになっちゃっている。

どれほど作りやすいかは、自分でawtやswingのコンポーネント作ってみれば分かるんじゃないか?
984デフォルトの名無しさん:2008/11/18(火) 06:11:45
グリグリのデモは、java openglのネジの奴と、java2dのswingsetがいいんじゃないか。
swingsetのデモなんかjdk1.2の頃のだけどwwアプレットのデモとかは本家にあると思う。
985964 :2008/11/18(火) 11:55:02
なんとかレイアウトはできるようになりました。
ありがとうございました。

>>965
javax.swing.GroupLayout以前にjavax.swing.*をimportしてたから必要すらなかった・・・
>>968
どうやらjavaのバージョンが低かったみたい最新のjdkにしたら解決した
>>976
昨日Swingの教科書って本買って家で勉強しとります
なんかお勧めの参考書あったら教えてください
986デフォルトの名無しさん:2008/11/18(火) 12:03:21
仕事でやってるんだろ?
勝手にjdkのバージョン上げちゃっていいのか?
987デフォルトの名無しさん:2008/11/18(火) 13:16:34
>>970
マルチ寸名
988デフォルトの名無しさん:2008/11/18(火) 20:41:30
>> swingsetのデモなんかjdk1.2の頃のだけどww
SwingSet2 とか SwingSet3 を知ってるか?
989デフォルトの名無しさん:2008/11/18(火) 21:06:10
諸君、JDKのswingset2は今すぐ消しとき。
警察に踏み込まれてHDDからswingset2が発見されたら、君の社会的立場が危うくなる時代がすぐそこまで迫っている。
デモならswingset3にしとき。これには児童ポルノは含まれていない。

※ いや、Sunはどうも真面目に心配しているらしい。
990デフォルトの名無しさん:2008/11/18(火) 22:51:56
SwingSet2 も SwingSet3 も
LAFは変わったけど、内容は相変わらず初期SwingSetと大差ないよね。
991デフォルトの名無しさん:2008/11/18(火) 22:55:40
>>974
それがきたときやっとJavaの描画がまともになるんだけどねぇ
992デフォルトの名無しさん:2008/11/18(火) 22:57:55
>>986
常識的に考えて5.0はEOD移行期間に入ってるんだから
JDK6で組むのが普通だろう

>>990
速度がupdate10であほみたいにあがったよね
993デフォルトの名無しさん:2008/11/18(火) 22:59:53
>>989
hania.jpgか。

ヒステリックな時代だねぇ。。
994デフォルトの名無しさん:2008/11/18(火) 23:30:51
>>993
いいかげん、この少年、少女のイメージ差し替えれば良いのにね。
おっさんの奴にさ。
995デフォルトの名無しさん:2008/11/19(水) 04:03:15
スイングはtreeとかtableとかのコンポネントを使うには気にならないだろうけど、
本当はGraphics2Dとコンポネント開発(のフレームワーク)だったりするんだよ?
imageとかに特化している場合はimageioとかのパッケージになるけど、swingはコンポネントに特化している。
文句をいわずに使うんだったら関係ないけど・・swignsetから勉強しなおしだなw
996デフォルトの名無しさん:2008/11/19(水) 07:27:41
SwingSet3の検索結果28件・・
もう誰もJavaなんて使ってないのね
997デフォルトの名無しさん
速度も速くなったことだし、デスクトップのクライアントもサポートするみたいだし、これからじゃないか?
ところで次スレw