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


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

Java低速GUI Swing 7



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

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

2 名前:デフォルトの名無しさん [2008/02/28(木) 08:41:32 ]
関連スレッド
Java 高速GUI SWT 3
pc11.2ch.net/test/read.cgi/tech/1164877399/
【JMF】Java Media APIs【JOGL】
pc11.2ch.net/test/read.cgi/tech/1201346803/

3 名前:デフォルトの名無しさん [2008/02/28(木) 08:42:26 ]
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
www.eclipse.org/
www.eclipse.org/vep/
Jigloo
cloudgarden.com/jigloo/index.html

4 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 19:14:30 ]
死ねよ

6 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 13:24:35 ]
削除依頼出しとけよ

7 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:42:27 ]
>>8
super.paintComponentは呼ばないの?


10 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:18:55 ]
>>5-6
お断りだ



11 名前:8 [2008/03/01(土) 00:40:27 ]
super.paintComponentは呼んだほうがいいんですか?
呼んでもうまくいきませんでしたが。


12 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:57:33 ]
>>11
じゃあsuper.paintComponentを呼ばずにそのコードのどこでラベルが描画されていると思っているんだ?
呼んだとしても自分の描画コードがせっかくsuper.paintComponentが描いた文字を塗り潰しているとは考えないんだろうな。
デフォルトコンストラクタしかないけどsetTextとかでラベルは設定しているんだと思って、そこにはつっこまないぜ。

13 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:22:31 ]
>>11
super.paintComponentを、背景を塗った後で呼んだ?


14 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:27:28 ]
最近グラデーションする人多いのね

15 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:17:28 ]
テーマのOCANが始めからグラデーションかかってるけどラベルはかからないんだっけ?

16 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:18:49 ]
テーマがお侠って元気そうでいいな

17 名前:デフォルトの名無しさん [2008/03/02(日) 01:40:52 ]
> 15
かからない。ボタンとメニューとスクロールバーくらいだっけかな。

> 8
そもそもこういうのはUIクラスで実装すべき。

18 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 10:28:27 ]
updateN build12のNimbusだとJPanelの背景が白くなっちまうぜ
こんちくしょう

19 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:15:03 ]
NimbusってSynthベースだっけ?
Synthでは描画コードちゃんと自分で実装しないと真っ白になるけど。

20 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:23:50 ]
Solaris の Java Desktop はなかなかきれいで Linux の GNOME/KDE より速い (俺体感)。



21 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:27:32 ]
JDSはgnomeでしょ

22 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:41:51 ]
>>19
でもbuild 10だと普通だし、白くならないんだよねー

何が変わったんだろ

23 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:03:11 ]
RGB各色4byteずつ使ったら合計で12byteにならないか?
それだと256色じゃなくて4096色じゃないか?
何か勘違いしてる?

25 名前:24 mailto:sage [2008/03/09(日) 02:08:38 ]
何か勘違いしてた。ごめ。

>>23
そんな便利なものはなかったと思うので、
自分で減色するしかないんじゃないかな

26 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:15:48 ]
すみません。確かに説明が悪かったです。
ARGBの4バンドで各1byteずつ、つまり1色4bytes
こう書くべきでしたね。

やっぱりそうですか〜
理解が大変そうでクラスライブラリに頼りたかったのですがそんなものまではないんですね。
勉強してみます。ありがとうございました。

27 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 05:05:49 ]
ScrollPaneがScrollしたというイベントはどのListenerで知る事ができるんでしょうか?

28 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 09:45:50 ]
JScrollBarを取得して、それにAdjustmentListener登録でいんじゃね?

29 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:49:01 ]
viewPortからも取れるよね

30 名前:29 mailto:sage [2008/03/09(日) 15:50:38 ]
む、イベントが発生しないと意味なかった。失敬



31 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:32:21 ]
IndexColorModel内のRGBデータフィールド(int rgb[])は絶対に変更できないのでしょうか?
どのコンストラクタでも、引数のrgbデータは直接は用いず、全くsetterもないので方法が思いつきませんでした。
あるインデックスの色だけ変えたい場合には
 getRGBs(int[] rgb)
でコピーし、再びオブジェクト作成しか方法はないのでしょうか?

32 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:12:50 ]
Swingの話じゃないなぁ
Java2Dの書籍とかドキュメントとか見直してみたら?

33 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:01:03 ]
>>31
IndexColorModelのカラーパレットは変更できないから新たに作るしかないような

前スレでスレタイにAWTの文字が入ったのに消えちゃったからな
>>1の過去スレリストでも改変されてるし黒歴史扱いか

34 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:17:25 ]
AWTがはいっていたとしてもJava2Dは別の場所での話しでしょう
ここはGUIコンポーネントについての話であって汎用部分の話ではないわけで

35 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:30:20 ]
>>23
氏ね

36 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:37:53 ]
ネタもねぇのに贅沢な連中だな

37 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 19:34:29 ]
ネタがあろうがなかろうがスレ違いはいらん

38 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:28:20 ]
>>33
そうですね。IndexColorModelをパクることにします。
ありがとうございました。

39 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:36:25 ]
SwingXおもしろいねー
いらんもんがかなりあるけどなんだか楽しく作ってる感じするね

40 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:36:13 ]
JFileChooserで下部のコンボボックスで選択したファイルタイプを取得する方法はありますか?



41 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:57:51 ]
JFileChooser#getFileFilter() じゃなくて?

42 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 13:43:57 ]
すみません!getSelectedFileのノリでgetSelected...で探してました。ありがとうございます。

43 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 14:22:02 ]
JFrameを継承したアプリケーションを作ることは一般的に推奨されないようですが、それはなぜなのでしょうか?
ビューはビューとして完全に分離させないといけないからでしょうか?

44 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 14:25:42 ]
「JFrameを継承したアプリケーションを作ることは一般的に推奨されない」
って言ったやつに聞けよ…

45 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 14:32:57 ]
一般に推奨されないかどうかは知らないが、
ビューはビュー、モデルはモデル、コントローラはコントローラと、
役割ごとにクラスを分けるのはそれなりに合理的かと

でも別にいけないことはないだろう
全部のメソッドをひとつのクラスに入れてオブジェクト指向なにそれ?でもいいわけだし

46 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 14:45:00 ]
ありがとうございます。確かSwing Application Framework関連の読み物に書いてあって、ずっと引っかかってたから聞いてみたんです。
それの示す意味は、JFrameは継承するな、ではなくその中にアプリケーション関連のコンテクストを何でもかんでも詰め込むなよ、という意味なんでしょうね。
ちゃんと分離できているのであればokってことで認識しておきます。ありがとうございました。

47 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:00:33 ]
まぁswingは基本的にコンポーネントを継承しなくてもほとんどのカスタマイズができるから
あまりコンポーネントから継承する理由がないんだよな…
個人的には完全に自作するコンポーネントや複合ウィジェットみたい
なものでしかコンポーネント類からの継承は使わないかも

48 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:20:04 ]
Swing Application FrameworkつかったらJFrameは継承しないとだめだろうなぁ

つーか、事実上GUIエディタつかわないと効率よく開発できないんだから
その流儀に従うだけ、というのが正解

49 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:32:14 ]
継承したところで、それ用に作られてる一部のメソッド以外をオーバライドなんて怖くて出来ないし
単にコンストラクタでパブリックメソッドを呼び出すくらいなら、コンポジションを使った方が堅固。
しかし、作ったクラスに対して、自作のメソッドとコンポネントのメソッドを両方呼び出せると便利だし
一方、あのコンポネントの大量のメソッドを委譲するメソッドをひたすら書くのは死ねるので
まあ、継承してもしかたないかな...みたいな感じだが
JFrameなど作ったその場で表示してあとは放置するようなものは、継承を使わなくても書けるので
(焼け石に水だけど)使わない方がいいじゃない?みたいな感じじゃね?

50 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:34:13 ]
>>49
コンポーネントにアクセスするのが大変にならないか?



51 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:37:10 ]
>一方、あのコンポネントの大量のメソッドを委譲するメソッドをひたすら書くのは死ねるので

そういうのはeclipseに自動生成させればいいよ
だからって別にやらないけど

52 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:07:51 ]
>>45
この考え方はClass間の相互依存が強くなって、カプセル化など構造化プログラミングに真っ向から逆らってる。

53 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:49:55 ]
ttp://lessisbetter.org/blog/howto_swing_pulldownbutton.html
を参考にしてプルダウンメニューを作っています。
CompoundBorderを用いることで元のボタンのボーダーに装飾をつけているようなのですが、CompoundBorderを用いる時点である程度のマージンが発生してしまいます。
よってできあがったものは通常のボタンのサイズにPullDownBorderのインセットを加えた値より大きなものとなってしまいます。
この方法では完全な実装は不可能なのでしょうか?

54 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:57:20 ]
うほっ勘違いっす。
BorderFactory.createCompoundBorder(getBorder(),new PullDownBorder());
ここのgetBorder()で単純に元のボーダーを取得せずに
BorderFactory.createCompoundBorder(((CompoundBorder)getBorder()).getOutsideBorder(),new PullDownBorder());
こんな感じでボタンだけのボーダー取得してやりゃ解決ですね。
すみませんでした。

55 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:52:09 ]
JSE 6 にしたら JFileChooser がすっげー遅くなったような気がするんだけど
切断してるネットワークドライブでも見に行くようになったのか?

56 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:59:35 ]
>>55
bugs.sun.com/view_bug.do?bug_id=6578753
かなり前からですんで。

57 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:19:41 ]
ちょw まじですかwww

58 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 10:40:50 ]
一応正式リリース版なはずのjava6で、こんな致命的なバグが8ヶ月も修正されないってのは、
Sunの技術の低さか、そうじゃないとしたら、Swing(のWindows LaF)軽視、デスクトップアプリ市場放棄だろ。


59 名前:55 mailto:sage [2008/03/27(木) 10:51:45 ]
AWT の FileDialog の方は何の影響もないね。むしろ JFileChooser の不自然極まりない
ダイアログよりネイティブのダイアログなんでかなりまともに見える (久しぶりに使ったんでちょっと感動)。

Swing と AWT の混在ってコンポーネントやメニューの重なり以外に何かあるんだっけ?
AWT のダイアログが上に来るのなら基本的に大丈夫だよね?

60 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:34:44 ]
大丈夫だけど、FileDialogにはフィルタを設定できないという欠陥が・・・



61 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:54:02 ]
LightWeight って、いったいどこが LightWeight なの???

62 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:40:48 ]
>>61
OSの機能を使っているコード量がライト。

63 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:52:02 ]
>>58
最初から悪かったわけではなくu2で発症したことを考えるとなんかありそうだ
ちなみにjdk5.0の時代はもっと放置してた致命的なバグがあったんだぜ・・・


>>61
懐かしいテンプレだな

64 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:52:49 ]
>>59
機能不足過ぎる

65 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:26:16 ]
>>62
馬鹿だろお前

66 名前:デフォルトの名無しさん [2008/04/08(火) 19:02:08 ]
数年ぶりにswingさわったけど、カレンダーコントロールすらないのにびっくりしたよ。
カレンダー実装でおすすめある?

67 名前: mailto:sage [2008/04/08(火) 19:25:50 ]
使ったことないけどSwingX

68 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:43:09 ]
駄目。
Swingのスレッドモデルを勉強したら分かるかもしれないぞ。

おそらく、1つ目のダイアログが出た後に、ループ側のスレッドが
初めのとは別スレッドから別のダイアログを立ち上げようとして変になっているんだろう。
invokeLaterや、SwingWorkerなどを利用してみましょう・・・

72 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:00:45 ]
どうせ例示するならinvokeAndWaitの方が適切のような。

73 名前:70 [2008/04/14(月) 21:18:01 ]
レスありがとうございます。回るたびに新しいスレッドを
作ろうとしてしまうということですか?

invokeLaterは、やってみましたが、
やり方が悪いのか、うまく行きませんでした。SwingWorkerは
SUNのチュートリアルを読みましたが、理解できませんでした。
invokeAndWaitは呼び出す側を間違えたというエラーが
出ました。結城さんのデザインパターン、マルチスレッド編の
GuardedSuspensionまで読んで分からなかったので、
一旦聞いてみたくなりました。結構いろいろ、ググりましたが
決め手になると思える情報がないように感じました。大村さんの
Swingの本の1巻目を買いますと、3巻目だかにスレッドと
Swingの関係が扱われていると書かれていますが、Amazonで目次を
見ると、スレッド関連のものが見当たりません。

74 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:20:48 ]
>>73
オープンソースなのに何でソース読まないの?

75 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:26:19 ]
イベントスレッドの動き理解してねぇのにソース読ませるのはかえって混乱するだけだろ。

76 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:30:46 ]
AWTスレッドとかイベントディスパッチスレッド、シングルスレッドモデルとか
しらべてみるほうがいいぞ

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

この問題は別にSwingに限らないしね
GUIのアプリ作る場合は常についてくる

77 名前:70 [2008/04/15(火) 10:16:43 ]
昨日、寝る前、結城さんの本をパラパラめくっていたら、
まだ読んでない後ろのほうに、ご指摘の単語が一杯
出ているのを見つけました。最後まで読んだほうが良さそうです。
また調べなおして出直してきます。
皆さんのレスを読んで煮詰まり感が、いくぶん解消されたので
じっくり考えようという気分になりました。ありがとうございます。

78 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 19:28:32 ]
JTreeとJTableじゃなく、
TreeModelとTableModel見て可能かどうか考えてごらん。




81 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:05:44 ]
MVCから勉強し直した方が良いんじゃない?

82 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:07:56 ]
硫化水素ガス自殺が流行ってんだってな。
Swing+AWTでry

83 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 01:15:48 ]
行き詰るの間違いだと思う

87 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 02:11:31 ]
本来は会議なんかで結論がまとまっていくみたいなときに使うね。



88 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 11:07:17 ]
>>85
この「用法・用量」って使い方あってるっけ?

89 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:54:23 ]
>>86
みんな「煮える」って表現とごっちゃになるんだよね。

90 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:57:27 ]
料理下手の人だと、煮詰めるのに失敗して焦がしちゃう事を連想するんじゃね?



91 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 20:18:43 ]
うわ……まさかと思ってググったら……
「煮詰まる」っつー言葉、誤用されてる事が多いのか。

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

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

せめて事前に @Deprecated アノテーションを付けてだな……

92 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 20:48:57 ]
うけたww
その気持ち分かるわ〜w

93 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 20:49:52 ]
>>91
確信犯の誤用ってのは「悪い事と確信していながら犯罪を行う人」じゃねーか?
計算高い犯罪、なんて意味で確信犯って言ってる奴は見たことねーぞ

94 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:27:47 ]
>>91
@Deprecated .... System.getenv のようにdepricated指定を外されたりしてな・・・・
>>93
俺もそっちの誤用だと思う。

悪いと分かっていながら犯罪を行う人間と
正しいと信じて犯罪を行う人間だったら・・・
前者の方が何とかできそう感があるよな・・・・

95 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:49:01 ]
>正しいと信じて犯罪を行う人間だったら・・・

こっちの人間はダメか?

96 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 13:18:24 ]
そっちのネタだけで引っ張るなw 戻せ思い出せ!ここはSwingスレ!

97 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:59:49 ]
答えて欲しかったな・・

98 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:05:03 ]
updateNかJavaSE7がでればネタはいくらでも・・・

99 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:00:06 ]
JavaSE7はクロージャ以外の目玉ってなんかありますか?

100 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:07:08 ]
>TreeModelとTableModel見て可能かどうか考えてごらん。
解決しました。
できました。



101 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:00:26 ]
>>91
>そういうのはマジやめてほしい。
>正しかったはずの俺の方が、何時の間にか間違いになるなんてゴメンだぜ。

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

たいていの言語学者が一笑に付す日本語の正しい・正しくない議論だけど、
どうしても正しい日本語を決めなきゃならないんだったら平安時代の宮ことばにしてほしい・・・


102 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:30:21 ]
>>88
言わんとする所は「いま一般的な辞書的用法」とかの方が誤解ないだろうね
用法用量つったら医薬品の使い方だろうし、他の意味で使われる例って思いつかないな。ぐぐってもそんなんばっかりだ

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

誤解を少しでも省きたい時は、結局他の言葉に言い換えるしな

103 名前:デフォルトの名無しさん [2008/04/24(木) 02:00:44 ]
おいおい、用法・用量ってのはギャグだろ・・・常考・・・

104 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:12:43 ]
>>101
悪い悪い。なんか言い方が悪かった。
「何時の間にか」は間違い。「ある日を境に突然」が本意だった。

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

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

言いたい事さえ正しく通じるなら、「正しい日本語」レイヤについては、俺ぁ気にしないね。

105 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:20:00 ]
おまえの脳内妄想なんか聞いてねぇからグダグダ引っ張ってないで引っ込んでろカス

106 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 08:27:35 ]
何だとコラ対面恐怖症のグズ野郎

107 名前:デフォルトの名無しさん [2008/04/25(金) 12:34:18 ]
>>104
久しぶりにキモイのが現れたな

108 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:17:03 ]
頭がおかしい

109 名前:デフォルトの名無しさん [2008/04/26(土) 01:00:22 ]
お前が一番おかしい
昭和生まれは死ね

110 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 01:34:23 ]
ほとんど昭和生まれだと思うんだがw



111 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 05:36:34 ]
こよいは平成20年なわけだし、まあそうだなよな

112 名前:デフォルトの名無しさん [2008/04/26(土) 08:24:39 ]
変なのが湧いてるな
GW厨とかいうやつか

113 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 16:19:07 ]
GWってなに
休出まうまう

114 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 22:46:58 ]
>>113
それは組織の問題か個人の能力が組織の要求に足りていないのかどっちだ?

115 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:50:43 ]
いま帰宅した 両方ですね
俺と会社、どっちがさきに潰れるかっていう弱小
夢も希望もない方の低能です

116 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 15:20:02 ]
イベントディスパッチスレッドで発生した例外を一括して捕捉する方法は
ないでしょうか?
死んでしまわれる前になんとか捕捉してログを出すなり状況を記録するなりしたいのですが。

117 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:02:39 ]
必ずイベントディスパッチスレッドだけで発生した例外?

118 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:25:53 ]
>>116
これは?
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Thread.html#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)

119 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 13:05:44 ]
>>118
ありがとうございます。それでできそうな気がします。
イベントディスパッチスレッドを得るメソッドって標準ではないですよね?
invokeLaterとかで放り込んでイベントディスパッチスレッド上で実行
するのがいいでしょうか。

120 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 13:08:40 ]
SwingUtil か何かにあったろ。



121 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:32:29 ]
どれ?

122 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:36:48 ]
SwingUtilities#isEventDispatchThread() みたいな名前の奴

123 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 05:29:48 ]
EDTを返すわけじゃないんじゃ

124 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:45:46 ]
いえ、システムトレイ事態は使えていて、メッセージのみ使えないんです。

127 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:47:56 ]
そういや同じXP搭載マシンでもjava.awt.Desktopが動くマシンと動かないマシンがあるのは有名だね
たしか例外は出してなかったと思う
この1.6で追加されたクライアントサイドの強化のapiはバグバグとはよく言われてる

128 名前:デフォルトの名無しさん [2008/05/04(日) 10:52:36 ]
>いえ、システムトレイ事態は使えていて、メッセージのみ使えないんです。
では、下記では?
SystemTray#isSupported()のjavadocには以下のように記述。
『開発者は、すべてのシステムトレイ機能がサポートされていると
想定しないでください。』

129 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 11:59:22 ]
excelのツールバーにある図形描画と同等の機能をSwingで実装しろといわれています。
そんなことできるのでしょうか?
また参考サイト等ありましたら教えていただけないでしょうか。

130 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:08:28 ]
>>129
>そんなことできるのでしょうか?

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

普通にSwing系の解説サイトでもあさると良いよ



131 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:54:20 ]
期待されてるのはすぐ使える ActiveX コンポーネンツ のようなリブラリーが存在するかという事だと思うんだ。

135 名前:133 mailto:sage [2008/06/03(火) 02:57:24 ]
そこまで志低いんだったらPGやめろ、と言おうかと思ったんだが、
俺それ作って売ろうかな・・・
Java2D弄るの好きだし。


136 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:19:45 ]
>>133
今、eclipseにAmaterasUMLって言うのが入っていて、エクセルみたいに直線、
四角をD&Dで調整しながら作成できることを確認しました。
これはeclipseプラグインなので、SWTで実装されていると思いますが、
Swingで実装しなければいけない制限があり、Swingでのサンプルソース的なものがあるサイト等ありましたら
教えていただけないでしょうか。

137 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:33:38 ]
継承・インターフェイスを使った図形クラス管理
マウス・イベント処理
描画

と、まさに初級向け課題として定番だと思うので、授業を思い出して自力でがんばれ

138 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:36:34 ]
これとか
ttp://www.jgraph.com/

139 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 12:42:45 ]
なんと言うかホントJava初心者っぽくて・・・・時間かかりそうだな・・・・
サンプル以前にどう作るかを考える段階じゃないかね・・・・

というか、Excelみたいってのをどう捉えるか要件定義から入ろうぜ。
課題出した奴に詰め寄って、しっかりヒアリングからだ。

140 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:19:05 ]
jgraphはレイアウト機能が有料。
jungならオープンソースで全部そろうよ。
ttp://jung.sourceforge.net/

この手のグラフライブラリの話題は、定期的に出るなぁ。



141 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:11:28 ]
ラベル文字を5秒おきに変えたり、RMIでメッセージを受け取ったら背景色変化させたいのですが、
UIアクション以外の内部アクションを発生させる方法はあるでしょうか?

142 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 15:19:27 ]
>>141
よくわからないけどSwingUtilities.invokeLaterとか?

143 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:25:05 ]
JButtonのマウスイベントでボタンのD&Dを実装(setBoundsの連続)しました。
D&Dでボタン同士が重なり、また通過しても2つのボタンは正しく表示されていますが、
Graphics#drawLineで描いた線の上を通させると、ボタンは残りますが線は通過した範囲のみ消えます。

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

通過後も線を残すためにはどのようにすればよいでしょうか。

144 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:46:12 ]
>>143
その線はpaintComponent(Graphics g)の中で描いているか?

145 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:07:22 ]
>>144
マウスイベンクラスないで、親パネルのgetGraphicsをとって、drawLineしています。

146 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:16:21 ]
>>145
ボタンなどを移動させると、swingはボタンを元の位置から消して新しい位置に描き直さなければならない。
このとき、swingは影響のあるコンポーネント全員に、「すまんが、表示が変わったので、もっかい描き直してくれ」 と通達を出す。
パネルやボタンなどはこれに応えて、背景を塗りつぶしたりボタンの絵を描き直している。
自分で勝手に描いた線などはこのとき一緒に消されてしまうので、自分もswingの通達に応えて線を描き直さなければならない。
具体的には、再描画が必要なタイミングで各コンポーネントの paint(Graphics) または paintComponent(Graphics) メソッドが呼ばれるので、
このメソッド内で drawLine を呼んで線を描き直すようにしておけば良い。

147 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:33:03 ]
スイングの設計方針を良く分かっていらっしゃる

148 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:34:21 ]
>自分で勝手に描いた線などはこのとき一緒に消されてしまうので、自分もswingの通達に応えて線を描き直さなければならない。 

問題はここを教えてあげることだったんだけど。

149 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:48:09 ]
>>146
ありがとうございます。できました!
線を描いても、書いた線に画像を通過させても残るようになりました。

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

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

そもそも書いた線をJButtonのような何かのコンポーネントとして扱うことはできないのでしょうか。
縦横のみならラベルにする手もありますが、斜めの場合はラベルではできないと思います。

150 名前:デフォルトの名無しさん [2008/06/04(水) 21:55:52 ]
>>148
どういう意味?



151 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:22:39 ]
どうでもいいんだけどさ、JMenuBarに未実装メソッドでsetHelpMenu()なんてあったんだね。

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

どういう機能なんだろ・・・

156 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:28:11 ]
>>155
メニューバーの項目をひとつだけ右端に表示する機能じゃないかと想像する・・・

157 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:37:39 ]
なんだ〜 それならBoxですぐ可能かぁ 期待して損した。

158 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:54:27 ]
>>153
Line2Dなるクラスがあったのですが、求めているものではないようです。
線オブジェクトみたいなものはあるのでしょうか?

159 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:22:10 ]
>>155
awtにそのプロパティあったからそれをもとにに作ったのはいいが
プラットフォーム依存でやめたと予想

160 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:15:32 ]
>>151
それだとクリック毎に全部の線の範囲確認なので、できれば色を取得して
線の上でない場合、の処理を加えたいです。座標でピクセルを選択し、色を取得する方法はあるのでしょうか?



161 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:12:28 ]
>>160
色で判定とかマジでやめとけ
* 直線描画にアンチエイリアスがかかったら色判定できない。
* 直線の上しかつかめない。(実際のアプリケーションだとほかにオブジェクトが
ない場合はちょっと離れててもつかめるようにすることが多い。)
* 色をとる処理自体軽くない。

162 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:13:04 ]
>>160
直接画面に描く代わりにBufferedImageに線を描いておけば、BufferedImage#getRGBで色を拾える。
もしMacで動かす場合は、デフォルトでアンチエイリアスがかかるみたいなので、切っておかないと期待した色が出ないかもしれない。

画面上のピクセルを拾う方法もないこともないけど・・・あんまりおすすめできない。
画面がフルカラーでない場合、線を描くときに減色されて色が変わってしまうし。
他のウィンドウやコンポーネントが上に重なってると、色を拾えないし。
(アプレットの場合は)セキュリティにひっかかるし。

163 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 08:33:53 ]
JListやJTableなどの、実際にはレンダラーとしてしか存在しないコンポーネントにマウスイベントや、その他のイベントを伝えるにはどのようにすればよいでしょうか?
例えば、JListのレンダラーの一部にボタンを入れて、そのボタンを押す(ように見せる)ときなどです。

自分でやってみたのは、クリックされたポイントからそこにあるコンポーネントを取得し、そのコンポーネントのすべてのMouseListenerにMouseEventを伝える、という方法ですが、とてもいい方法とは思えません。
何かおすすめの方法はありませんでしょうか?

164 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 09:44:21 ]
そもそもsunのレンダラにJComponentの子を使ってるっていう設計自体が間違ってるのでそれに依存した実装はよくない。

165 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 09:46:21 ]
swingでHTMLを使って文字列を表示する処理を入れているのですが、
たまに一瞬HTMLのタグが見える問題に悩んでいます。
(もちろん、その後すぐに正しく文字列は表示されますが。)
HTMLタグの記述が多ければ多いほど、問題が発生しやすいようですので、
HTMLタグの解釈に時間がかかっているのだと思います。
上記の問題はどうすれば解決するでしょうか。
よろしくお願いします。

166 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:50:10 ]
>>169
>MVCで切り分けたらいいんでね?

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

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

なるほど。。

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

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

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

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

おっしゃる通り、ドキュメントの理解をきちんとしておく必要がありそうです。
しかし、おかげ様でかなり理解が深まりました。
レスありがとうございました。

172 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:19:11 ]
>>152
計算が理解できなかったので他の方法を探ってみました。
new Line2D.Doubleで線オブジェクトにして、contains(イベントからのポイント)でいけると思ったのですがダメでした。
javadocを確認したら、線は領域を持たないということで、常にfalseを返していました。
Areaというものがあったので、ラッピングしてみましたがこれもダメでした。
new Area(line).contains(point)
線に対して、指定ポイント上にあるかの判断は標準ライブラリとして用意されていないのでしょうか?

173 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:51:42 ]
mouseDraggedの発生タイミングって決まっているのでしょうか。
例えば1ピクセル移動ごとに発生とか。

175 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:56:52 ]
決まってない。
てきとーに発生する。

176 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:25:41 ]
>>173
ありがとうございます!!!!
できました。これを駆使して、描画した線のD&Dが実装できました。
感謝です。

177 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:01:30 ]
ボタンを押したら凹んだままになり、再度押すと凸になるボタンてないのでしょうか。
JButtonにはそれらしきプロパティがなかったです。
トグル系もラジオボタンとチェックボックスしかなくダメなようです。

178 名前:デフォルトの名無しさん [2008/06/06(金) 18:25:12 ]
>ボタンを押したら凹んだままになり、再度押すと凸になるボタンてないのでしょうか。
javax.swing.JToggleButton


179 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:30:43 ]
>>172
あれ?線分までの最短距離を出すメソッドがあってそれ一発で済むと思ったけど…
Line2D#ptSegDist() だっけ?

180 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:12:39 ]
計算内容を理解せずに使うという点では結局どれも同じだと思うけどな



181 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:08:04 ]
ラベルがあるパネルに背景をBufferedImageでセットしています。
ラベルの表示、非表示機能を実装しようとし、ラベルのsetEnabledをしましたが、
ラベル部分がデフォルト背景(?)の灰色になり、BufferedImageが適用されません。
また、ラベルのマウスイベントも生きているようです。
ラベル非表示をsetBounds(new Rectangle(0,0,0,0))で実現していますが、邪道でしょうか?
もっとスムーズな方法があればご教授ください。
やりたいことは、見た目の完全消去(BufferedImageで塗りつぶし)、イベント等も発生させない、です。

182 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:41:05 ]
>>181
setVisible(false) は?

183 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:29:20 ]
java2dといわれたら普通に分かると思うんだけど…
ただ、感謝もあったし、親切なのはいいことですね

184 名前:デフォルトの名無しさん [2008/06/07(土) 00:35:10 ]
計算の方を理解するのはたぶん無理でしょ。
線形代数とかになるけど、結局その式一つを説明するにしても高度な数学wを理解しなければならないことと同じだからね。

化学とか薬学・医学の人すら使わないし、PGは理系文系の混在だからなんともいえない。
数学の理解よりも、分からない人は、そういうのは頭いい人に任せておいて無理しないでjava2dとか使って素直に実装してくれればいいよ。

185 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:10:28 ]
質問があります。
Swingで日韓の文字を交ぜて表示したいのです。
JEditorPaneのtext/htmlモードでは普通に(タグで指定とかしなくても)うまくいきました。
JEditorPaneのtextモードでは表示してくれませんでした(・・・ナカグロになります)。
JTreeで表示したいのですが、どうすれば良いでしょうか?

環境はOSがWindowsXP、JDK(JRE)が1.6.0_06、
LookAndFeelはWindowsLookAndFeelを使用していますが、使用しなくても支障ないです。

186 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 18:34:01 ]
>>185
ググったら一発なんだけど。
www.alles.or.jp/~torutk/oojava/maneuver/1998/swing/swing_ja.html#doc1_id606

187 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:33:12 ]
>>188
>>56 が直ってないんじゃないかと。

190 名前:デフォルトの名無しさん [2008/06/09(月) 09:33:18 ]
OSとかCPUとかMEMかかないと・・・



191 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:55:35 ]
newするところで重くなったんじゃなかったけ?
なので、最初にnewして起動処理と思えばある程度納得できる。

193 名前:デフォルトの名無しさん [2008/06/09(月) 10:05:47 ]
そのスペックで5秒はおかしいだろ

194 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:33:52 ]
>>192
ありがとうございます。
あらかじめJFileChooserオブジェクトを生成しておけば、素早く
ダイアログが起動するようになりました。
JRE1.5で動かすように修正し始めていたので助かりました。

>>193
本当に数えたら平均5秒だったんです。
6秒以上のときもあります。。

195 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:49:05 ]
>なので、最初にnewして起動処理と思えばある程度納得できる。

たしかにそうでした。
画面を表示することが遅くなりました。やはり、5秒くらいかかります。
簡単なツールを作っているので、この遅さは気になるので
1.5で作ることにします。。無念です。ありがとうございます。

196 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:17:43 ]
これ実行環境の問題なのに?

197 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:38:30 ]
>>196
少しだけ1.6に依存するコードを書いていました。

今、1.5で動くようになりました。
1秒ほどで起動でき、「ファイルを開く」ダイアログも早く
起動できるようになりました。とりあえず、安心しました。。

198 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:51:29 ]
いい加減直ってほしいバグだな…

199 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:53:25 ]
同じパネルに乗っかっているボタンを重ねたときの上下関係って
デフォルトではaddした順ぽいのですが、addし直さなくても上下関係を変える方法はあるでしょうか?

200 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:49:57 ]
setComponentZOrderは?



201 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:52:12 ]
そもそもボタンを重ねるようなユーザインターフェースってどうかと思うが…
setComponentZOrder かレイアウトをOverlayLayoutにするとかかな

202 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:54:06 ]
もしかしてCardLayoutみたいなことしたいんじゃ?

203 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:38:04 ]
>>193
FileChooserが重くなる不具合しらんのか?
u2からでてきたやつだよ

204 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:59:29 ]
つ ClassLoader#getResource

206 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:02:18 ]
>>204
java.sun.com/docs/books/tutorial/uiswing/misc/icon.html

207 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:10:19 ]
jarファイルの話?それならjarがルートになっているからそうなると思う。
画像はres(リソース)とかimg(イメージ)とかルートの直下にフォルダを作って
img/sample.pngとかでアクセスするのが普通なのかな。

208 名前:デフォルトの名無しさん [2008/06/09(月) 21:12:03 ]
そもそもSwingの話なのか?

209 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:31:26 ]
画像を
C:/eclipse/workspace/sample/img/sample.png
ここに移動して
ImageIcon sampleIcon = new ImageIcon("img/sample.png");
っていうのも試してみて。押し付けがましいけど、こっちの方がいいと思うから。



211 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:35:38 ]
>>210
>ImageIcon sampleIcon = new ImageIcon("img/sample.png");
>っていうのも試してみて。押し付けがましいけど、こっちの方がいいと思うから。

いえいえ、ありがとうございます。
画像はimgの中にまとめてみます。

212 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:26:48 ]
>>208
ImageIcon自体はSwingだから大目にみなされ
クラスパスの理解が足りないだけだから確かに関係はないけど

213 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:35:16 ]
ここで質問する前に The Java Tutorials で調べてみましょう。
java.sun.com/docs/books/tutorial/uiswing/index.html

214 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:22:12 ]
swingでネットワーク経由の処理要求を常に受けたい場合、
つまり、画面イベントではなく別なイベントループでswingと連動したい場合は、
SwingWorkerのdoInBackgroundでイベントループ(アプリを終了するまでreturnしない)し、
その中でpublish呼び出しし、processで画面更新処理、
という設計にすればよいでしょうか。

215 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:37:17 ]
SwingWorkerのソースコードみてみると、ワーカースレッドは最大10個までみたい
それを恒常的に1個消費するというのはどうだろう・・・
アリといえばアリのような気もするけど、微妙なところ

216 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:59:32 ]
swingで時計表示(1秒後とに更新)のようなアプリってどうやって実装するのが普通なのか?

217 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:00:48 ]
SwingのTimerでいんでね?

218 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:11:04 ]
1つのjavaプロセスで複数のWindowを表示するときって(同じスレッドでnew JFrame()を何回か実行)したとき
全画面のイベント処理スレッドって一個だけになっているけど、
ウィンドウごとに分けること、つまり他の画面更新が頻繁でその影響を食らいたくない場合用に
イベント処理スレッドを画面分起動することなんてできるのだろうか?

219 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:28:58 ]
>>218
無理です ♥
アプリのプロセス毎分離してみては?

220 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:25:03 ]
>>216
時計だけならSwingのTimerでいいが実際のところバックグラウンドで南下したい場合
普通にデーモンスレッドにすればいいだけでしょ

そこからイベントディスパッチスレッドになげるだけ



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

>イベントディスパッチ以外のスレッドからのJComponentのアクセスは、
>paint以外やらないほうが良いのでしょうか?
「やらないほうがいい」じゃなくて「やってはならない」だ。
それと呼んでいいのはrepaint()ね

223 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 10:37:24 ]
そういやjavaSEには同期でpaint()呼ぶメソッドないな。MIDPにはあるんだが。

224 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:29:24 ]
>>222
ありがとうございます。
「コールすることはできないということです」ではなく
「スレッドセーフではないので保証されなく、呼んではいけない」ですね。

できないって書いてあったので、new Exception().getStackTrace()からスレッドをチェックしているのかと思って。

225 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:45:12 ]
「できない」という場合、「してはならない」という意味のことが多いな

226 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:03:02 ]
>>226
>  frame = new JFrame();
>  frame = new JFrame();
参照を理解していないようだから、
何の参照か理解すれば、分かるはず。
Swingの問題ではない。

228 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:32:52 ]
>>227
ちょっとまて

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

こうなってるぞ

229 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:54:08 ]
>>226
どのみちdispose()はすべきじゃないの?完全に管理下に置いているなら。
あとは空間と時間のトレードオフと思われ。おまけ:
frame.remove(); // -> frame.removeAll();
frameshow(); // -> frame.show();

230 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:59:51 ]
たぶん画面が必要になるたびにJFrameオブジェクトをつくるか1度だけ作って
不要になったときdisposeだけしてオブジェクトを使いまわすのとどっちがいいのかって
ことを聞きたいんだろうけど…

好きにすれば?

ってか典型的なメモリとCPUのトレードオフじゃね?
そのフレームがどの程度の頻度で表示されるか?とか
想定する実行環境のメインメモリの量は?CPUは?とかいろいろ考えて決めてくれ。
ものすごく頻繁に再表示されるならdispose()しないという選択肢もあるだろうし。



231 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:51:58 ]
>>224
閑話休題

それでスレッドチェックはできるが
「無茶苦茶」重くなる。
次世代か、現世代かで、(別だったか?)
Exceptionのスッタクトレース生成のコストを
計った事があったけど、かなり重量級処理になった。
誰かがブログに載せてたな。

232 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:14:33 ]
スレッドのチェックって Thread.currentThread() か ThreadLocal では?
なぜスタックトレース?

233 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:12:59 ]
>>229
disposeはsetVisible(false)と同じことなのでしょうか。
disposeはネイティブスクリーンリソースの開放とありますが、
java内部ではshow()で復活できるようにメモリは破棄しないで保持しつづけるのでしょうか。

完全にリソースを消したかったので、removeAll()を実行しましたが、
画面は表示されたままですが、イベント関係は死んでいるようです。
正しい手順としては、
frame.setVisible(false);
frame.removeAll();
frame = null;
でよろしいでしょうか。

234 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:39:07 ]
>>233
>disposeはsetVisible(false)と同じことなのでしょうか。

そこが間違い。
dispose()すればウィンドウシステム上のウィンドウ本体(動くGUI)はなくなるけど、
それと同じものを復元できるだけの本質的なデータ(プロパティ)はJVM側に残っている。
だから再びsetVisible(true)できる。
それを残しておくゆとりがないならremoveAll()でもすればいい、ということ。

235 名前:デフォルトの名無しさん [2008/06/13(金) 17:48:16 ]
そりゃ違うだろ

236 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:59:52 ]
ゆとりがないならJFrameを含めて破棄しろよw
frame.setVisible(false);
frame.dispose();
frame = null;

237 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:12:27 ]
>>236
frame.removeAll();しなくて大丈夫でしょうか?

frame.setVisible(false);
frame.dispose();
frame.removeAll();
frame = null;

238 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:13:39 ]
removeAll()がどんだけ破棄の効率に影響するかという点は疑問だが、まあ参照切れそうだしいいんじゃね

239 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:15:42 ]
>>237
そこまで行くと>>227かな

240 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:16:56 ]
frameの子コンポーネントがframe内部以外から参照されてないなら frame = null で済むし
frame以外から参照されてたらまずそっちの参照をなくさないと意味ない
参照切るって意味わかってるのかしら…?



241 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:18:21 ]
GCを信用できない心境ってあるでしょ

242 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:59:11 ]
>>240
イベント処理クラスが絶対握ってるから、そこの参照取るように終了系のメソッド呼ぶ必要はないの?
簡単に想像できるけど。ちなみにJFrameのfinalizeにも何もないから…終了系メソッドコールは必要でしょう?

243 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:09:52 ]
>>242
必要ないよ。
そのイベント処理クラスとやらのインスタンスが他から参照されてないなら。

244 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:10:12 ]
JFrameにはfinalizeがなくてもそのスーパークラスのFrameやWindowにはfinalizeあるよ

245 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:43:50 ]
>>244
javadoc見たけどないですよ・・・

246 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:18:14 ]
>>245
1.6でなくなった

247 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:05:21 ]
消えたのか・・・ 1.5見てたよ・・・

248 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:51:27 ]
ウィンドウ幅は変更せずに、ウィンドウ内の部品や描画した線を全体的に拡大する事がさくっさできる方法はあるでしょうか?
イメージとしては、グーグルマップの拡大・縮小です。
また、グーグルのグリップオンでの移動のようなことも簡単でできる方法はあるでしょうか。

249 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:58:37 ]
アファイン変換でもすれば?

250 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:20:18 ]
>>249
あれ?Swingでそれやっちゃだめじゃなかった?



251 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:34:40 ]
コンポーネントの描画を自前で面倒見れるなら別に良いんじゃね?

252 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:20:38 ]
>>251
Swingのすべてのコンポーネントの処理を自前で処理するのかい?

253 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:47:42 ]
いやアファイン変換するところだけよ。
Swingの描画はjava2Dで行われてるんだから自分でJava2D使っても一緒だろ。
鏡文字テキストフィールドとかネタで作ったことあるぞ。

254 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:34:57 ]
>>253

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

それにJava2Dの話なら別にこのスレでするような内容でもないし

255 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:41:43 ]
ならJava2Dはどのスレ?

256 名前:デフォルトの名無しさん [2008/06/17(火) 13:44:14 ]
多分ここ
localhost:8083/

257 名前:デフォルトの名無しさん [2008/06/17(火) 13:44:52 ]
間違えた、ここ
pc11.2ch.net/test/read.cgi/tech/1201346803/

258 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:47:58 ]
>>256
吹いたw

259 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:51:35 ]
基本がわからないのなら初心者スレでいいだろ
ネタのない現世代Javaでもいいだろうし

260 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:08:46 ]
なんか昔、縦書きどうやるんですかって質問で、
ただGraphicsを回転させるだけのネタ回答があったな。
マウスポインタの座標そのままで。



261 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:20:06 ]
>子のコンポーネントについても拡大縮小されるべき
出来ないこともないぞ。描画時にjava2D使ってドローベースでスケーラブルUI実装すれば良いだけだから。
実際そういうGUI作ってる実験プロジェクトが昔あったし。
SwingHacksでも同じことやってたし。

262 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:38:21 ]
できないことはない
といったらなんでもできるというのと同義になっちまうだろ。

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

極端すぐる。

263 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:32:13 ]
読み込んでドローしたイメージの倍率を変えたいのですが、どのようにすればよろしいでしょうか?
現在下記の通りに処理しております。
ImageIO.read で読込み
new TexturePaint() に読み込んだものを渡す
Graphics2D.setPaint ペイントをセット
Graphics2D.fillRect ドロー

264 名前:デフォルトの名無しさん [2008/06/17(火) 19:38:11 ]
それはSwingなのか?

265 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:45:59 ]
だからJava2Dは>>257だって

266 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:17:57 ]
>>248
ttp://weblogs.java.net/blog/alexfromsun/archive/2006/07/jxtransformer_t.html


267 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:48:59 ]
Windowsの色の選択ダイアログ(グラディエーションのやつ)を実装したいと思うのですが、
あの縦横の色の出し方はどのような計算でしているのでしょうか。
また、ちょっと前のレスでもありましたが、クリックした場所の色を取得することはできるのでしょうか?

268 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 11:20:46 ]
Color#HSBtoRGB
hue=0〜1を横に
saturation=0〜1を縦に

269 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:42:47 ]
>>267
Javaのウィンドウでないと駄目じゃん・・・と思ったけど
色キャプチャモードに入ったときに
java.awt.Robotで全画面キャプチャしてそれを全面表示したWindowから選ばせる
とかなら可能かも。

270 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:54:48 ]
>>269
ピッカーじゃなくて色選択ダイアログの話だろ。
JColorChooserみたいなの



271 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:55:23 ]
>>270
てっきり色選択のダイアログについてる
任意の部分の色を、パレットに取ってきたいって話かと・・・

272 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 19:05:04 ]
クリックした場所の色を取得するのではなく
クリックした場所を元に表示と同じ計算をしてだしたほうがいいよ

Javaに限った話ではないけど

273 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:17:59 ]
ん、どういうこと?

274 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:34:58 ]
描画の時、ここは何色、ここは何色・・・ってやってくっしょ?
それを逆に計算しろってこと。
邪道な手を使うなら、BufferedImageのGraphicsにコンポーネント書かせて、getRGB(int,int)。最悪ね。

275 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:47:31 ]
getRGB(int,int)これは色の取得だと思うけど計算なのか?
最悪って程でもないんじゃないのかな。fpsによるけど。

276 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:55:44 ]
1ピクセルのクリッピング枠にも最大限効率的に対応できるように描画メソッドを書くわけですね、わかります

277 名前:デフォルトの名無しさん [2008/06/19(木) 20:59:26 ]
>>276
BufferedImage使っても十分効率的に出来るし、アルゴというか実装次第じゃないの?

278 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:03:41 ]
全く話がかみあってないなw

279 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:07:15 ]
>>275
>>274は「普通は計算してやれ、getRGB()でもできるけど邪道だ」っていってるんだろ…
より低負荷で簡単な方法が目の前にあるなら普通はそっちを選ぶだろ…
BufferedImageに書かせるって時点で本来やる必要がまったくないことを
やってるわけでCPUもメモリも無駄すぎてどうしようもない。最悪。

280 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:16:16 ]
>>279
解説ありがとう。まさにその通り。
質問の内容のレベルから、頭使わずにできる方法も提供したってところです。



281 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:30:42 ]
>>279
その程度か。>>277よく読んでほしかったけど、ま、いいけど。

282 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:43:17 ]
>>281
十分効率的ってのが実用的な速度て動くって意味ならその通りだろう。
問題ない速度で動く。でもそれだけだ。
単純に計算した方が速いし省メモリじゃね?

283 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:02:51 ]
画像から取得だとピクセルフォーマットに左右されるのがやばい

284 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:54:24 ]
>>272から参加してたから、前の方をよんでなかった。
カラーチューザーの話しだったから計算できるのか。
画像とかの色のことだと思ってた。

285 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:22:59 ]
画像のスポイトにしてもオフスクリーンで描画している画像からのルックアップだな

286 名前:使用書無しさん [2008/06/23(月) 07:45:23 ]
swingはそんなに遅くないよ。
jdrafter.sakura.ne.jp
↑これ100%pure java でswinngベースのドローソフトだけどnative版とそん色ない。

287 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:11:45 ]
MouseListenerでマウス右クリックを実装したいのですが、Windows、Linux、Macで実装が違うと本に書いてありました。
具体的にはどういう違いがあるのでしょうか?

288 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:17:05 ]
pressとreleaseのどちらをトリガにするかがプラットフォームによって違うので
それを判定する必要があったと思う。判定用のメソッドが用意されてる。

289 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:41:49 ]
>>288
ありがとうございます。

290 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 12:05:57 ]
右クリックか・・・
Macのワンボタンマウスのことも忘れないでね



291 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 12:24:04 ]
右クリックじゃなくて、ポップアップメニュー出すかどうかの判定が欲しいんじゃね?

292 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:08:17 ]
>>286
だれもそんな話してないだろ?

293 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:02:17 ]
宣伝だろ

294 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:06:47 ]
MouseEvent#isPopupTrigger
てのがあるねい


295 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:06:33 ]
しかしそれではアプリケーションキーやSHIFT+F10には対応できない

296 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:10:45 ]
>>290
もう、忘れちゃって、2本指でタップしていただけませんでしょうか。

あと、mighty mouse。

297 名前:287 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:49:52 ]
JComponent#setComponentPopupMenu っていうのもあるよ

299 名前:287 mailto:sage [2008/06/23(月) 18:29:29 ]
>>290-291,294-296,298
ありがとうございます。

300 名前:使用書無しさん [2008/06/23(月) 23:43:23 ]
java廚のみなさん
これ jdrafter.sakura.ne.jp
にjavaとawtのすべてがつまってるお
くやしかったらこれに匹敵するのつくってね



301 名前:デフォルトの名無しさん [2008/06/24(火) 00:19:37 ]
まったく口惜しくないんだが、この感情をどうすればいいのだろうか?

302 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:20:15 ]
このコテハンうぜー

303 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:34:30 ]
>>301
URIで透明あぼーん。

304 名前:デフォルトの名無しさん [2008/06/24(火) 00:39:28 ]
URI wwww

305 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:55:39 ]
宣伝うざい

306 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:29:10 ]
しかもSWTスレでもあばれてるな
SWTじゃSwingみたいに作れないでしょうとか

そしてSwingスレでも馬鹿にした言い方はまるでGKに似てるな

307 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:53:08 ]
>>306
せっかくあぼーんしてんだから話題に出すなよ。

308 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 11:10:25 ]
しかし、宣伝にしても全く買いたくなくなる口調だから、
多分アンチだろ・・・・・

309 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 13:41:36 ]
ボタンの上に線を描くことはできないでしょうか。
ボタンの親パネルのpaintないでdrawLineしてもボタンの下に隠れてしまうので、
ボタンのpaintComponentないで、super.paintComponentした後drawLineしましたが
ボタンの上に描画できませんでした。

310 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 13:57:52 ]
>>309
どういうことをしたいのかわからないとなんともいえないけど
とりあえず glass pane でぐぐってみたらどうだろう



311 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:03:35 ]
やりたいことはたぶんglass paneとは違う気がする

312 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:08:39 ]
>>310
ありがとうございます。
やりたいことは、エクセルの描画ツールで線の太さを選択できるダイアログ?がありますが、
あれを作りたいと思っています。
画像を作ってボタンに張ればいいのですが、太さのパターンが増えたとき画像を作るのが面倒なので、
画像なしボタンの上に線を描画できたら簡単かなっと思って質問いたしました。

313 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:15:14 ]
Iconインタフェイスを実装してボタンに貼ればいいと思う

314 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:54:59 ]
>>312
なあ、この時点でむしろ面倒になっていると思わないか?

315 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:10:51 ]
エクセルで線を2本描画しCTRLで2つ選択してドラッグすると、2つともドラッグできますが
Swingでやる場合、簡単なグループ化的なドラッグ方法は用意されているでしょうか。
またない場合、良いアプローチ法はありますでしょうか。

319 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:53:39 ]
Excelの表と同じものを作ればおなじようになるよ



なんか最近へんな質問が多い気がする

320 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:05:20 ]
複数ドラッグは簡単だが問題はどうやって視覚的フィードバックを与えるかだな。
java2Dでドラッグ対象のコピーとってグラスペインに描画って感じか。



321 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:02:45 ]
図形オブジェクトを複数選択して移動する話じゃないのか?
図形オブジェクトがコンポーネントになってれば「選択されてるコンポーネント(群)」を
移動するだけだと思うのだが…

322 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:22:34 ]
>>312
その場で描画できる程度の画像を作るのが面倒とは

323 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:04:32 ]
はじめてSwingアプリを作ることになり色々調べてはいるものの
理解が及ばないところがあるため質問させて下さい。

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

このとき、EDTは要求が同時に付いたときも順に処理してくれるのでしょうか?
それとも要求待ち受け様のsyncronizedメソッド等を自作し、順にinvokeLaterを投げる
ようにすべきなのでしょうか?

324 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:11:24 ]
イベントディスパッチスレッドは単一のキューだから大丈夫だよ
EventQueueに追加してるところでsynchronizedしてる

325 名前:デフォルトの名無しさん [2008/06/25(水) 21:22:57 ]
東部夏時間??

326 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:25:18 ]
>>325
このすれでそのボケはありえない。


327 名前:デフォルトの名無しさん [2008/06/25(水) 21:31:26 ]
なるほど、「Event Dispatch Thread」か
初めての割りに、よくこんなもの知ってたな

328 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:56:45 ]
AWTにもEDTあるけどな

329 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:19:29 ]
>>324
Swingはスレッドセーフじゃないと漠然とした情報があっただけなので
ここもなのかなぁ・・・と、ちょっと不安でしたorz
ご回答ありがとうございます。

330 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 00:50:03 ]
ソース読むといいよ
IDE使ってるならCTRL+クリックとかでおっていけるでしょ



331 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:50:51 ]
単なる興味ですが、プロパティの変更通知するオブジェクトは
”changesという名前のPropertyChangeSupport クラスのインスタンスが含まれている”
という変なルールなんでしょうか?
マーカーインターフェースとかのほうが、よっぽどわかりやすいのですが・・・。
この仕様が出来た当時は、こういったスタイルが主流だったのでしょうか

332 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 10:51:18 ]
>>329
スレッドセーフじゃないからこそ全部1つのスレッドで順番に処理してるんだろーが…

333 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 18:32:45 ]
>>331
PropertyChangeSupport 使わなくても通知できるからそれじゃ識別できないのでは?
swing コンポーネントとかはそれ継承した SwingPropertyChangeSupport 使ってるし
変数名も changeSupport とかになってるしねぇ…

334 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 18:59:07 ]
changesってどっかのセミナー資料とかみてるからとか

335 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:17:57 ]
>>333-334
えっ、そうなんですかorz
ここ見ながらやってました。丸山さんって有名な人ですよね・・・。
www.wakhok.ac.jp/~maruyama/summer98/node32.html

336 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:48:21 ]
>>335
別にそんなに変なことは書いてないだろう?
「beanでプロパティの変更を通知可能にしたければこのようにすればいいよ」って書いてあるだけで
「このように実装されているものだけがプロパティの変更を通知可能なbeanです」とは書いてないし…

337 名前:デフォルトの名無しさん [2008/06/30(月) 11:07:43 ]
背景をキャプチャーして
Windowを透明にする方法以外に
Windowを透明にする方法はあるでしょか

またswtなどに透明にできるコンテナはあるのでしょうか

338 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 11:17:49 ]
JButtonにプログラムからクリックイベントを発生させることってできますか?
マウスがボタン上にない場合は、できればマウスは動かさないで・・・
要は単純にイベントだけがほしいのですが。

339 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 11:40:34 ]
>>337
jdk6updateN だと com.sun.awt.AWTUtilities#setWindowOpacity(java.awt.Window, float) 使える。

340 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 11:42:33 ]
ラベルのテキスト文字がラベル幅内に収まらないとき
ラベル幅を超えてすべての文字が出るようにしたいのですが
手段はあるでしょうか?



341 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:39:01 ]
>>338
AbstractButton#doClick

342 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:47:18 ]
>>340
・ラベルのテキストの先頭に "<html>" を付けると複数行に折り返して表示される
・ラベルをJScrollPaneに包むとスクロールバーでスクロールできる
・setToolTipTextを設定するとマウスを乗せたときにポップアップする
・そもそもラベルの幅を広くする

343 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:12:17 ]
>>342
ありがとうございます。
ラベルの幅をかえる場合、現在のフォントと文字列から実際の幅を計算する手段はあるでしょうか。

344 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:24:14 ]
SwingUtilities#computeStringWidth

345 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:24:37 ]
>>343
label.getPreferredSize()

346 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:39:30 ]
レイアウトマネージャの再発明をしそうな予感

347 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:01:59 ]
>>338
複数から呼び出される処理ならば
イベントでがりがりかくのではなくて
外にメソッドで出しといたほうがいいよ

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

あとでほかの場所からも同じ処理をした上で
追加で行う処理とかでてきたりするものだ

348 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:21:25 ]
drawLineするときにstrokeかなんかでJComponent#setBorder見たいに外枠をつけることってできますか??

349 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:54:48 ]
>>348
こんなの?
((Graphics2D)g).draw(stroke.createStrokedShape(new Line2D.Double(x1, y1, x2, y2)));

350 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 18:28:00 ]
いつまで糞コテなの?

354 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 18:47:26 ]
糞コテ馬鹿丸出し

355 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 18:53:52 ]
>>351
できました。
ありがとうございます。

356 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:10:36 ]
>>343
Font font = Component.getFont();
FontMetrics fm = JComponent.getFontMetrics(font);
int stringwidth = fm.stringWidth("なにがし");

こんなのもあった。

357 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 22:01:06 ]
ダイアログでない別の画面を開いてから、それを閉じる間
元の画面の操作を無効にしたいのですが、どうすればよいでしょうか。
visible(false)だとなくなってしまいました。

358 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 22:07:36 ]
それがフレームなら、glasspaneにMouseListener登録するのが楽でいいかもねー

359 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 22:30:26 ]
俺はダイアログのコンポーネントをglasspaneに描画してglasspaneでイベント握り潰してるけど

360 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 11:13:04 ]
ダイアログにJFrameの画面を描画するというような、そんなことってできるのでしょうか?
それができればまったく問題無しなんですけど。



361 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 11:34:52 ]
JDialogではいかんのか?

362 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 12:24:09 ]
JFrameの中身のコンポーネントを描画することはできなくもない

363 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 13:59:58 ]
>>360
それ必要なこと?

364 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 14:27:09 ]
階層ありポップアップある数階層のJMenuにアイテムを1つ追加して
ポップアップに対しvalidateを呼んだあとshowしましたが、
追加が反映されませんでした。最初から作り直さないとダメなんですかね?

365 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 14:41:46 ]
>>363
ある共通要の設定画面があり、
時と場合で、出しっぱなしの他画面操作OKだったり
出したらその画面を終了するまで、他の画面はノータッチ、との要求が上がっています。
要求に対しての馬鹿さについてはすんません。
ただJFrame継承の画面があり、こいつで何とか実現しないといけなくなったのが現状で・・・

366 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 15:40:23 ]
setEnabled(false) してしまえ

367 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 17:42:05 ]
>>365
俺が言いたいのはJPanelで共通化されてればいいだけでしょ?ってこと
そしてJDialogやJFrameですきなようにはりつければいい

368 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 18:50:42 ]
コンポーネントをglasspaneやWindowサブクラスに貼れることを理解してないんじゃない?

369 名前:デフォルトの名無しさん [2008/07/04(金) 00:00:31 ]
クリップボードについてお聞きしたいのですが
コピーしたときのイベントではなく
選択されたときのイベントを得ることは可能でしょうが
(たとえばブラウザでテキストを選択するときのイベント)

370 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:05:12 ]
クリップボードと関係ないだろ
CaretEventでもみてみるといい



371 名前:デフォルトの名無しさん [2008/07/05(土) 07:57:54 ]
Swingを使う人は
java使いで一番やさしいね

372 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 18:12:32 ]
swingのバリデーターって皆さんどうやってますか?
自分の場合は、画面に対応したBean(StrutsのActionFormみたいなの)を作ってOKボタン等を押した時に
画面からBeanに変換するときにエラーになったら画面にエラー内容をリスト表示するようにしてるんですけど
ちょっと非効率な気がしています。
何かかっこいいライブラリか何かでかっこよく解決できないですかね。

373 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:48:16 ]
まずかっこいいの定義からだな

374 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:20:38 ]
jgoodies

375 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:45:40 ]
イベントを強引に呼ぶ方法ってありますか?
SwingはMVCを採用していますが、既存のアプリケーションに接続する時、
GUIモデルのインターフェイスにアダプトさせるのはめんどくさいので、
リスナでデータの同期を行いたいのですが、
コンポーネントを初期化して、その次にリスナを登録しますが、
この次に強引にイベントを発生して同期を行いたいです。

376 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:42:39 ]
fireXXXEvent()

377 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:59:59 ]
それってコンポーネントのメソッドですよね。
モデルから飛ばす事は出来ないんですか?
Swingのオブザーバパターンはモデルとリスナの間で採用されているはずです。
モデルから飛ばせないならば、ビューがプログラミングに必要以上に絡んでくる事になります。

378 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:15:07 ]
ごめん日本語が難しすぎて良くわかんないんだけど、モデルの持ってる値をviewに反映させたいってこと?
だったらBeansBindingあたりを調べれば幸せかもしれない。的外れだったらスマソ。

379 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:20:40 ]
モデルをBean化してpropertyChangeイベントに対応させる。
ビューはpropertyChangeListenerにする。


380 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 04:23:21 ]
Java Swing の質問

普段はタスクトレイに常駐してタスクトレイのアイコンをクリックしたら
起動(画面を表示する)というのはできるのですが、これをショートカットキー
(例えば Alt-zなど)で起動する方法があったら教えてください



381 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:44:20 ]
それSwingじゃなくてAWTだけどAWTもここか。
java6以降じゃないと出来んよ。
詳しくはjavadoc嫁。ググレ。

382 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:14:41 ]
>>381
ホットキーの登録っててできるようになったんだ?

383 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:11:03 ]
>>381
神降臨

384 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:25:04 ]
>>381


385 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 09:12:13 ]
ホットキー対応したんだ 帰ったら試してみよっと

386 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:18:06 ]
嘘つき!!

387 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:46:29 ]
キツツキ!!

388 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:36:47 ]
お手つき!!

389 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:39:48 ]
>>381
馬鹿乙

390 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 08:10:42 ]
餅つき!!



391 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:23:33 ]
hotkeynasai

392 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 15:59:56 ]
Windowsでメモ帳とかがデフォルトのフォントで使っているFixedSysを使いたいんだけど
どうすればいいでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 16:39:41 ]
フォント一覧取得してそれにでてこないの?

394 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 16:45:46 ]
でないっす。

395 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 16:46:51 ]
動的によみこんじゃえ

396 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 16:57:51 ]
TrueTypeしか読めないんじゃね?

397 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 17:17:41 ]
Fontsフォルダにあるのしかつかえんよ

398 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:30:54 ]
java6から自分で用意したフォント登録できるようにならなかったっけ?

399 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:02:04 ]
外注がC#で作ってきた糞重い、グリッドビュー(700×30)をswingのJTable
で書き換えたらかなり速くなって思わずニヤニヤしてしまった。
まぁ、今更Javaでいくことにはならないんだけどね。

400 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:47:56 ]
.netは10年前のjavaだ。



401 名前:デフォルトの名無しさん [2008/07/16(水) 00:22:57 ]
>Windowsでメモ帳とかがデフォルトのフォントで使っているFixedSysを使いたいんだけど
>どうすればいいでしょうか

Swing ではなく、SWT使用すればオペレーションシステムの
ネイティブのリソースを使用するのでフォント一覧取得以外のフォントも
できるよ。
しかも、ルックもよい!

402 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:43:19 ]
SWTの開発環境のおすすめは?
VE?

403 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 06:28:33 ]
SwingでEclipseのビューのようなペインやタブの位置をドラッグ&ドロップで自由に移動できるようなものは作れないでしょうか?

404 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 06:41:11 ]
>>403
標準では無いね。オプソとか有償のライブラリを使えばできる。

journal.mycom.co.jp/news/2007/02/06/361.html
www.swingall.com/jdock.html

405 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:14:10 ]
というかドロッガブルなコンポーネントって結構簡単に作れるぞ。

406 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:21:08 ]
難しいのは受け手だな

407 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:23:45 ]
java.awt.Dialogやjava.awt.Frameのx(閉じる)ボタンを表示しないことって、
できますか?

408 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:29:30 ]
無反応には出来るけど非表示は駄目だったと思う。
Windowだとのっぺらぼーだしな……


409 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:34:35 ]
>無反応には出来るけど非表示は駄目だったと思う。
Windowだとのっぺらぼーだしな……
x(閉じる)ボタンの非表示にしてるサンプル、どこかで見た記憶があるんだけど。
どこだったか。

410 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:38:09 ]
Windowサブクラス作ってmacのシート再現するとか



411 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:45:54 ]
>Windowサブクラス作ってmacのシート再現するとか
シートは実装したことがあるから、それでもいいんですが、
Windowの移動自体は可能にしておきたいんです。
例えば、長時間(時間不定)の処理をしている間にメッセージ等で
進捗表示する場合に使用したいんです。
こういう場合、xボタンが表示されていると、これ押すとどうなるの?
という気持ち悪さがあるので。
ショートカットキーでWindowを閉じる場合は別の話で。


412 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:53:33 ]
別に気にしない

ということにしておけばおけ

413 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 01:26:22 ]
>別に気にしない
>ということにしておけばおけ
まぁ、そういうことにしておきます。

414 名前:デフォルトの名無しさん [2008/07/17(木) 10:24:01 ]
Swing ではなく、SWT使用すればオペレーションシステムの
ネイティブのリソースを使用するので
ダイアログのx(閉じる)ボタンの非表示も
できるよ。
しかも、ルックもよい!


415 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:29:48 ]
SWTの開発環境のおすすめは?
VE?

416 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:13:59 ]
>>415
SWTスレで聞いた方が早いんじゃ?

417 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 03:30:56 ]
ボタンが押されたときにJTableを再表示するように作ったのですが、
選択されている行のみrendererを呼び出してくれません。
人為的にselectedRowを再描画する方法は無いでしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:27:56 ]
tableChanged

419 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:56:29 ]
>>417
そういう動作見たことないんだけれども,どういうコードかいたんだ?

420 名前:417 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 22:38:20 ]
2つのパネルを切り替えたいのならカードレイアウトつかったら?

422 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:16:48 ]
テキストコンポーネントのようなものを自作する際、折り返しなどはどのように実装すればよいのでしょうか?
確か前にそれをやってくれるクラスを見かけた気がするのですが・・
ないようであればゴリゴリやります。

423 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:18:45 ]
JTextAreaじゃだめなの?

424 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:20:26 ]
いえ、正直なところ今現在自作しているわけではないのですが、思い出せなくて気持ち悪かったので質問しました。

425 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:21:42 ]
>>422
LineBreakMeasurerかな

426 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:23:54 ]
うほーまさにこれです!
すっきりしました。ありがとうございます。

427 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:01:00 ]
TextLayout,LineBreakMeasurer,LineMetrix,GraphVecter...etc

428 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:24:32 ]
EclipseでSwing関連を書いてるとメソッドの補完候補が多すぎておもってぇのなんのって・・・

429 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:49:19 ]
低スペック厨乙

430 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:15:28 ]
SwingするならNetBeansだろ



431 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:38:04 ]
もっとましなコード吐いてくんないかなnetbeans

432 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:40:27 ]
NetBeans以外はもっとひどいだろ

433 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:02:59 ]
質問です
AwtやSwingにはユーザーからの情報を保存するキャッシュ的なものはありますか?
例えば、背景色の選択・変更を行った後、再訪問した時にもその色を背景色にセットされたまま。
というアプレットは作れますか?
作れるということであれば、どの様な方法か教えてください

434 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:55:29 ]
作れるが、やり方くらいググれ。宿題は自力でやりなさい。

435 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:23:21 ]
SwingAppFWにそのものの機能があるな

436 名前:デフォルトの名無しさん [2008/07/21(月) 03:07:24 ]
【使えるか】JDrafter向上委員会【バッタもんか】
pc11.2ch.net/test/read.cgi/cg/1214838613/

437 名前:デフォルトの名無しさん [2008/07/22(火) 19:57:09 ]
SWTってOS関係なしに動作する?

438 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 20:26:25 ]
いや、決められたOSの上で動く
JavaVMだけサポートされていてもダメだよ

というかSWTスレいけ

439 名前:デフォルトの名無しさん [2008/07/22(火) 20:42:05 ]
TextSS


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

こんな設計でよろしいのでしょうか?こういう場合のクラス配置、アクセス方法のお約束などはあるのでしょうか?



441 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 10:39:42 ]
直接的な回答ではないけれど、親とか子とか特定のコンポーネントとの繋がりはあまり持たせない方がいいよ。

442 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:48:44 ]
>>440
そんなことしたら親画面のレイアウトとか部品とか一切変更不可になるじゃん
親画面に、setStatusText(String text)とかインターフェイスを作って子から呼べばどう
呼ばれた親がどのコンポーネントをどう更新するかは自由に決められるでしょ

443 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 12:50:50 ]
>>440
子と親がどんなデータモデルになっているかによるけど…
- 子と親で同じモデルオブジェクトを持つ
- 子は子画面での編集によりモデルを変更してそれを親に通知(PropertyChangeListerとかね)。
- 通知を受けた親はビューを更新。
みたいな構成はとれない?

444 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:16:12 ]
>>443
親と子で同じオブジェクトを持つのは危険かと思います。
てゆうか何その設計。狂ってますよ。ちゃんと勉強してください。

445 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:29:07 ]
1つのモデルを複数のビューから参照するのは別に変な設計でもないと思うが

446 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:52:12 ]
swing って次バージョンから互換性が切られちゃうものが多いってほんとですか?
java歴2ヶ月でようやく覚え始めたばかりだったのに(T_T)

447 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:59:19 ]
>>446
10年くらい互換性はほとんどもってるよ

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

おかげでキャストが多くなりがちなのが厄介だが

448 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:15:01 ]
>>447
有り難う。自分の無用な心配し過ぎなんですね>互換性

でもsun.comのドキュメント(マニュアル)ページにいく度に警告を読ませられるのは
なんだかなあ。。経験浅い人には結構痛いですわあれ。。(><)

449 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:17:14 ]
このクラスの直列化されたオブジェクトは云々とかいうやつか?
直列化を使わなければまったく関係ないよ

450 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:21:01 ]
ん?互換性ってSwingだったら直列化の話でしょ?
内部の変更が起こりうるからObjectOutputStream&ObjectInputStreamによる入出力は危険ですよ
だから変更には柔軟なXMLEncoder&XMLDecoderを使えってことじゃないの?



451 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 06:46:11 ]
>>445
同じインスタンスでしょ?
まぁビューからモデルを参照するくらいならいいのかな。
MVCをちゃんと守っていればの話だけど。

アプリケーション層でそれやると、バグが検出不可能になりますよ。
たくさんのインスタンスから参照されてる一つのインスタンスのどの状態についても、
参照してるインスタンスの動作を保証しないといけないから、これはめちゃくちゃになる。

452 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 07:42:07 ]
じゃーシングルトンなんてのは存在そのものが悪?

453 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 10:09:03 ]
>>440です。
複数画面構成のアプリケーションを作成しており、ある画面アクションで自身とは違う画面の部品にアクセスする処理が多いです。
マウスアダプタもインナークラスではなく外出しにしているため、
アダプタやその他の画面のコンストラクタで、JFrameインスタンスを渡して内部でアクセスできるようにしています。

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

こんな考え方おかしいですかね。


454 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 10:35:50 ]
>>452 グローバル変数だろ。知れたこと。

455 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:27:07 ]
>>453
イベントはどうしてもGUI部品と密接になりがちだから分離するとますますひどくなるのは常識かと
GUいつくるときにNetBeansとか使ってないのかな

456 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:37:20 ]
JlabelのsetBackgroundで背景色を設定しても、背景色に変化がありません。
getすると変更した色が変えるので、値の変更字体はうまく言っているようです。
何か考えられることはあるでしょうか?

457 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:45:05 ]
>>456
プロパティをながめてごらん

458 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:52:19 ]
>>455
なんでGUI部品と密着になるの?
GUI、つまりSwingだったらビューとコントローラだけど、
これは完全に別レイヤーだろ。
リスナはモデルに対して依存するべきで、ビューは切り離すべき。

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

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


お前らオブザーバパターン理解してないだろ。

459 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:03:11 ]
>>458
理解したうえで現実的に無理だといってるんだが

つまりNetBeans等GUI生成ツールは使い物にならないってことですね

460 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:06:06 ]
使い物になるGUI生成ツールなんてあったか?



461 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:18:17 ]
java beansの事をオブジェクト指向だと思ってるのか?
あんなもん歪んだオブジェクト指向だよ。NetBeansなんて使ってはいけない。

どうしてコンポーネントにリスナが依存する必要があるんだ?
javaはコンポーネントとモデルを切り離してある。ビューの変更はオブザーバパターンを利用して通知してる。
ビューの変更はモデルに影響するから、他のリスナなどはビューに依存する必要がない。
ビューなんか知らなくてもいいし、ビューの情報が知りたければe.getSource()すればいい。
すごく汚い方法だけど、仕方ない場合もある。
わざわざフィールドにコンポーネントへの参照をとって、依存する必要が全くない。

462 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 23:46:35 ]
>>457
半日考えましたがわかりません・・・

463 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 23:52:07 ]
>>462
setOpaque(boolean)

464 名前:デフォルトの名無しさん [2008/07/30(水) 00:00:55 ]
Opaqueって「おぱきゅー」って発音するんですか?

465 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:08:01 ]
dictionary.goo.ne.jp/search.php?MT=opaque&kind=ej&mode=0&kwassist=0
おうぺいく

466 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:18:47 ]
>>461
イベントの通知そのものはだれも問題にしてないでしょ

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

アクセサどれだけ生成するんだよと
コンポーネント増えたり変更されたら終わりじゃないかと
フロントエンドってのはロジックと違って頻繁に手が入るからな

467 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 09:57:00 ]
>>466
ですよね。
別出しにしたイベントクラスをインナークラスにしておけばよかった。
SwingWorkerも内部において、doInBackground内で、すぐに別だしビジネスロジッククラスを呼び出すクラスの分け方が
なんだかんだで、コーディングしやすい。

468 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 10:14:43 ]
>>463
ありがとーーーーーーーーーーーーーーーーーございます。
なきそうだったので助かりました。

469 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 19:59:18 ]
>>466
仮にアクセサが必要だったり、同じオブジェクトを共有しなければならないなら、
それらのクラスは最初から分離されるべきではないという事です。
なんでコンポーネントを触るのか理解出来ない。モデルを触って通知させろよ。
コンポーネントが増えても描画方法が変更されてもモデルはノーダメージです。
お前はMVCモデルが全く理解出来ていない。

470 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 20:17:00 ]
ラベルの色が変わるとかサイズが変わるとか
コンポーネントの状態をいじることってのは頻繁にあるんだが
そんなの外出しにしていてはまともに開発するのは難しいよ

すべてのプロパティに対してアクセサ用意するのかよ
現実解というもの勉強してよ



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

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

現実解もなにもない。
君は設計から間違った考え方をしてるから、わけの分からんコードを書くハメになる。
MVCモデルをちゃんと勉強してください。
おれの方が君より100倍早くコーディング出来ると思うわ。
悪い設計はメンテナンスが出来ない。お前、テストコードとか書いた事ないだろ。

472 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:07:47 ]
ああ夏か・・・

473 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:09:22 ]
>>471
ビューの属性変更を例えばアクションイベント等以外で書くの?

474 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:20:56 ]
ビューの属性って何?
Dimensionとか?
何がしたいのかさっぱり分からないが、
仮にだが、スライダを動かすと何かコンポーネントが縮んだり伸びたりするような事がしたいのか?

475 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:29:39 ]
>>474
おれもよくわからんがプロパティのことだと理解しようと思ったが
詳しいことは>>471にきいてよ

476 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:36:09 ]
>>475
その>>471>>474なんだが。
お前らほんとバカすぎて受けるwさすが高卒w

477 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:37:58 ]
その100倍頭いいぼっちゃんすごいな・・・
自分の書いたことすら忘れるとは

478 名前:デフォルトの名無しさん [2008/07/30(水) 21:42:56 ]
>>465
ありがとう。
今まで恥ずかしいこと言ってった・・・

479 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:53:48 ]
だから気が狂ってるって言ってるだろ。
属性というものを気にする事自体気が狂ってる。
クラスはインターフェイスのみを公開し、フィールドはすべて隠蔽する。
publicなフィールドが許されるのはRectangleとかPointくらい。
あれはjavaの格言にも書いてあるが、速度の問題でそうしたのだろうと。
おれはpubliclフィールド嫌いだけどね。
というか自分のフィールドに対しても直接アクセスせずに、プライベートなアクセサを作る。
それの方が変更に強い。

480 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:55:24 ]
>>479
プライベートなアクセサ か。参考になる。



481 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:02:54 ]
capsctrl.que.jp/kdmsnr/wiki/bliki/?SelfEncapsulation
お前ら本当にオブジェクト指向知らないんだな。
そんなんじゃ柔軟なソフトウェアが書けない。
だからあっぷあっぷになるんだよ。
マーチンファウラーの「リファクタリング」を嫁w

482 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:05:18 ]
プライベートなアクセッサって普通じゃね?

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

というか夏厨がMVC,MVC言ってるがjavaのMVCは本当のMVCじゃないぞ。

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

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

公開するあるなしに関わらず100%アクセサを書く。
そうした方が柔軟になるから。
マーチンファウラーは、ひとまずはフィールドに直接アクセスしといて
必要になったらアクセサを書くと言ってるがそれでも良い。
理由はEclipseには自己カプセル化のリファクタリング機能があるから。

484 名前:デフォルトの名無しさん [2008/07/30(水) 22:18:32 ]
>>483
条件チェックはどこに書けばいいの?

485 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:20:03 ]
>>484
バートランドメイヤーの本を読んでからお願いします。

486 名前:デフォルトの名無しさん [2008/07/30(水) 22:27:25 ]
>>485
ケチ!!

487 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:35:02 ]
プライベートなアクセサがダメとか思ってる時点でカプセル化というものが分かってなくて、
結局構造体の延長でしかない。
デザインパターンも勉強してないだろうし、インターフェイスがなぜあるのかも分かってないと思う。
単純なんだ。関連のあるフィールドとメソッドと一緒にして凝集度を高める。これだけ。

488 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:36:20 ]
>>479
上の質問に答えてよ

489 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:37:08 ]
100倍坊やはJButtonクリックしたらJLabelの色を変えるコードさらしてみ
上で言ってること全部矛盾するから

490 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:52:07 ]
>>489
JLabelにはモデルがない。
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 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:54:49 ]
麻布卒は、帰っていいよ。

494 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:56:03 ]
>>480
プライベートなアクセサなんてカプセル化として当たり前だから
そういうレベルの話をしてるわけではないのだよ


>>492
できねーならもうつっこむのやめれ

495 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:00:05 ]
>>493
オブジェクト指向の話になったのでつい熱くなってしまった。
今は反省している。

ROMります。

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

MVCがどうだとかモデルに対してどうだってのはイベント発行後の話であって、
今回の流れには関係ないわけだし。

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

なんでMVC理解してないやつばかりなの?
理解する気がないのか?
とりあえず>>492に紹介したページを読んでから考え直せ。
インナークラスとか気狂ってるわ。

498 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:21:17 ]
とうとう発狂してしまったようです

インナークラスがなぜでてきたかわかりもしないで

499 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:27:40 ]
久しぶりに「夏ってスゲーなー!」って思ったw

500 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:31:10 ]
>>493,495
何この流れ?と思ってググったら
この人か
d.hatena.ne.jp/testosterone/



501 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:33:23 ]
ひぎぃ、やめてくだしあ

眠いんで寝るわ。
お前らレベル低すぎて付き合い切れない。

502 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:11:59 ]
>>501
夏よな

503 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:12:48 ]
>>501
おやすみ

504 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:55:04 ]
猛暑が続いているので仕方あるまいな。

STOP!地球温暖化。

505 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:59:40 ]
>>500
閉鎖しててわからん

使用しているサービスクリックしたらおっぱいでふいた

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

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

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

507 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 01:17:57 ]
夏だな。
机上の理想論でしかない。>>506のいうとおり結局、妥協の産物でしかない。

508 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 03:01:27 ]
> C++をベースとして言語仕様つくった
文法だけは確かにC/C++に似てるが…

509 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:34:06 ]
>>506
されるわけではない、のではなくて、正しいものが分からないからする事が出来ないの間違いだろ。

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

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

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

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

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

これだから日本のITはしょぼいんだよ。
文系がプログラマになるとかwww

510 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:36:20 ]
>>509
いってらっしゃい。土産は食い物がいいかな。



511 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 10:09:33 ]
哀れすぎて抱きしめたくなっちまうよw

512 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:28:48 ]
夏厨って本当にいるんだなぁ
閉鎖してないほうのblogみてもすごいね

513 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 20:48:29 ]
>>512
おれはブログ1つしかやってませんよ。
testosteroneってやつです。またpublicにしたんで読んでもらえれば^^

514 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:51:21 ]
>>513
君おもろいね。次は、「このスレのヤツらは英語も読めない低脳」とでも言うのかネ。

515 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:58:09 ]
なぜそういう話になるのか。
ずいぶん自虐的ですね。

516 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 23:33:00 ]
>>513
ttp://yaplog.jp/sunlight_heart/

ここ違うのか

517 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:24:24 ]
>>513
がんぱってる感じは出てるのだが、、、もっとたくさん英文嫁

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

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

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

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

同じソフトウェアを作るとして、
Googleのチームと君たちでは書くコード、設計が同じになると思いますか?
答えはNOです。
開発速度は一人あたり1000倍の差が出るでしょう。

520 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 10:08:56 ]
今度は1000倍かよ。

少なくともお前は一般的な技術者と比べて頭悪いんだから関係ないこのスレからでていけ。



521 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 10:26:54 ]
>>518-519
えーと、釣りですか?それとも本気?
どっちにしてもイタいんですけど…。

522 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 11:44:50 ]
>>521
夏はしかたないんだよ。
sophomoreってやつなんだよ

523 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 15:32:17 ]
UIDefaultsに格納されているUI関連のデフォルトプロパティはどの時点で読み込まれているのでしょうか?
例えばButton.backgroundなどです。

524 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 15:35:26 ]
すみません。解決しました。
ComponentUI#installUI()でやるのが基本みたいですね。
複雑な仕組みなのだろうとすぐに質問してしまいました。すみません。

525 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 20:42:04 ]
いいかげん夏厨はスルーしろよ。食いつくから釣られるんだろうが。

526 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:57:23 ]
JTextComponentで、「このElement以下のみ表示」というようなことはできますでしょうか?

527 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 12:52:33 ]
なあなあ、MVC化してどうしてカプセル化出来るんだ?

528 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 06:50:51 ]
>>527
MVC 化はカプセル化が目的じゃない。結合の粗密の問題。


529 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 07:16:55 ]
疎結合も何も、モデルから通知する必要があるから分離しただけだろ。
通知された時に再描画する方が効率的だから。

530 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:44:24 ]
それはjavaの都合であってMVC関係ない気がするが・・・



531 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:13:56 ]
基幹業務アプリケーションってMVCの効果が出にくいと思うんだけどみんなはどう?
…っていうかこういう話をしているスレってどこかない?

532 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:46:33 ]
>>531
結局JavaBeansのプロパティをどこにマッピングするかという情報だらけになるからね

533 名前:デフォルトの名無しさん [2008/08/06(水) 09:25:30 ]
現在はSWTのほうが主流だぞ
いつまでもSwing使ってんなよ

534 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 09:27:53 ]
どこの 2004 年から来た人だ。

535 名前:デフォルトの名無しさん [2008/08/06(水) 13:21:14 ]
>>526
このElement以下ってどういう意味ですか?

536 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 16:40:35 ]
Documentの階層で、『あるノード以下』という意味です。 それ以外を削除することでそれっぽい事はできますが描画するルートを変えたいだけなのでちょっとですねぇ…

537 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:07:46 ]
>>536
ElementとViewのjavadoc読むと良いよ。
ただ、勉強はできるけど、応用が利かないアホな厨房にとって、
モデルの共有は禁忌らしいけどな。

538 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:10:18 ]
>>537
場合による。ミディエータかリスナになら共有されてもいいというのが新理論。

539 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:38:09 ]
エクセプションをキャッチできなかった場合ダイアログを出したいのですが、
エクセプションのコールバックイベントなどあるのでしょうか?

540 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:42:09 ]
エディタのタブ背景をプロジェクトによって色分けするプラグインありますか?
前半で似たような名前があるとタブを見ただけでは解かりにくくて。



541 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:59:16 ]
>>539
Thread#setUncaughtExceptionHandler
Thread#setDefaultUncaughtExceptionHandler

542 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:04:31 ]
>>540
それSwingと関係ある?スレタイ読んだ?

543 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:18:10 ]
マルチの相手をするな

544 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:09:59 ]
Swing Hackのようなおもしろい事やってるサイトがあれば教えてください。

545 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 21:08:13 ]
SwingHackはhackシリーズとは思えない内容の悪さで有名

546 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 23:26:31 ]
聞きたいのはSwingHackの批評ではなく、目からウロコ的な技術をいろいろやってるサイトです。
おもしろいというのも人によると思うので、完全に主観で結構ですのでよろしくお願いします。

547 名前:70 mailto:sage [2008/08/13(水) 13:40:20 ]
ダイアログの中抜けがひとまず解決しました。原因は意外なところにありました。
自作のダイアログはJDialogを継承(extends)していますが、そのコンストラクタで
new JDialogしていたのが直接の原因だったようです。普通にsuper(引数列)したら
正常に表示されました。ループの中でnew MyDialogして、入力が終わったら、
disposeしています。ただ、読み仮名の受け渡しにYomiGanaクラスを作り、
ループとダイアログのスレッド間に対するGuarded Suspensionパターンを使う必要は
あったようです。まだダイアログの動作が不安定で完全解決ではありませんが、
当初意識していた問題は回避されたようです。今のところinvokeLaterやinvokeAndWaitは
使わずに済んでいます。

皆さんの励ましで、結城さんのデザインパターン入門マルチスレッド編は読み終えることが
できました。勉強になりました。ありがとうございます。


548 名前:70 mailto:sage [2008/08/13(水) 13:51:38 ]
書き忘れましたが、今のところループの中ではスレッド起動をせず、
同じスレッドの中でnew MyDialogでよかったようです。

549 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 14:14:05 ]
自作の編集画面をモーダルで表示させることは可能でしょうか。
ネットで調べてみましたが、はっきりとできるともできないともかかれていませんでした。

550 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 14:16:05 ]
自作の編集画面をJDialogに乗せてJDialogをモーダルで表示すればいいんじゃない



551 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 14:52:40 ]
編集画面のコンポーネントをJFrameに乗せるのではなくJDialogに直接乗せる

553 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 16:14:48 ]
>>552
こんな感じですかね。
JDialog d = new JDialog();
d.setModal(true);
for (Component c: jframe.getComponents()) {
d.add(c);
}

554 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 17:01:19 ]
なんで最初からJDialogにaddしない
jframe要らんのちゃうか

555 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 09:49:22 ]
>>554
ごもっともなのですが、要求されていることがめんどくさく、設定によってモーダル非モーダルに選択できるようにといわれていまして、
このような仕様になっています。

556 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 10:03:53 ]
いろいろ画面を開いたり消したりを連続していると、OutOfMomoryになります。
終了するときはdispose()しています。ただfinalizeが呼ばれないのでメモリ消去できていない気がします。
これはアプリ側でdisposeしたフレームを参照しているところがどこかしらあるからということになりますでしょうか?

557 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 16:24:10 ]
setEnabled(false);にしてグレーアウトしたJMenuItemをクリックすると、
そのマウスイベントが呼ばれるのは仕様でしょうか?

558 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:38:05 ]
そういう動作をするとしたら仕様だろうねえ

559 名前: mailto:sage [2008/08/14(木) 17:42:28 ]
アクションイベントなら、setEnable(false)にしたら呼ばれんと思うけど
マウスイベントなどの低レベルのウィンドウシステムのイベントはどうしても呼ばれるんじゃないの。

560 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 00:35:27 ]
>>558
JREにバグがないとでも?




561 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:36:53 ]
DefaultTreeCellRendererのgetTreeCellRendererComponentでラベルを返しているのですが、
ラベルの文字を増やしサイズを大きくし、それをreturnしていますが。最初の幅以降が「...」になります。
jdk1.6です。
「...」にしないで変更された幅で表示するにはどうすればよいでしょうか?

562 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:49:02 ]
試してないけど、毎回サイズ変更したら?

563 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:53:27 ]
>>562
毎回サイズを更新していますがダメです。setSize()、setBounds()両方で、幅を固定で100にしているのですが、
...になってしまいます。

564 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:57:45 ]
revalidateしてもだめ?

565 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 19:00:21 ]
つーかDefault〜を拡張してるならsuper.〜でサイズはちゃんとやってくれたと思うんだけどなぁ

566 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 21:45:00 ]
>>565の書いてる通り、DefaultTreeCellRendererの拡張なら

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

これでいいんでない?

568 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:46:25 ]
getPreferredSize() をオーバーライドしてみたら?

569 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 20:46:05 ]
いや>>567でいけるはず


570 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 01:18:33 ]
TransferHandlerで、アプリケーション内のコンポーネントへのドロップか、デスクトップ上へのドロップかを判別するにはどのようにすればよいのでしょうか?



571 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 01:26:49 ]
ちょっと説明が分かりにくいですね。
やりたいのは実際には存在しないがこれから生成することができるデータをドロップのアクションから生成&ファイルの移動で、例を挙げると
ZIPファイルのエントリーのツリーがあり、それはまだ解凍されていないが、DnDのアクションを受け、そのドロップ位置がデスクトップ上であれば該当するディレクトリへ解凍し移動する。
という感じのことです。

572 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 01:34:24 ]
連投すみません。
現状を説明するのを忘れていました。
現在はドラッグ開始時に呼び出されるcreateTransferable(JComponent c)内でファイルを解凍、テンポラリーファイルとして保存しておき、それを含めたファイルリストのTransferableを作成。
という方法で実現はできていますが、このcreateTransferable内でそんな重い処理をするのはまずいので何か別の方法はないかと思い質問させていただきました。
理想としては現状の処理をドロップ時に行いたいのです。
このような細かいのはやはりjava.awt.dnd.*を使うべきなのでしょうか?

573 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 01:43:22 ]
java.awt.dnd.*を直接使っても同じだった気がする
解決方法は知らない

574 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 02:05:11 ]
デスクトップへのDnDはSWT使わないと無理なはず。少なくともawtじゃ無理。

575 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 09:52:05 ]
>>573
そうでしたか。これからdndパッケージ調べてもし解決法が見つかればまた書き込みます。
>>574
デスクトップへのDnD自体は可能なんですよ。DataFlavor.javaFileListFlavorのTransferableを作ればいいだけです。
問題は作るタイミングなんです。ドラッグ開始で作ってたら他の関係のない動作の時まで不必要な処理を行わなければいけなくなるので・・

576 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:59:45 ]
>>576
手元ではならないよ。
要するに、その部分じゃないんじゃないの?

コード全体をどっかにアップしてよ。

578 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:03:35 ]
>>578
そういうんじゃなくて、
こっちで手を入れないでコンパイル→実行できるヤツを上げてよ。
自分で思っているところじゃないところがおかしいんでしょ?

580 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:12:40 ]
>>578
それJTreeにセットして実行した?
まったく問題ないよ。
ちなみに
tree.revalidate();
this.revalidate();
は必要ないよ。

それからずれるけどTreeCellRendererがActionListenerを実装するのはどうかとおもうw



581 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:35:54 ]
モデルのchangeNodeを実行したとたんに直りました!

582 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 19:39:02 ]
ボタンAのキーエンターが押されたとき、マウスイベントを発生させたいのですが方法がわかりません。
ご教授をお願いします。

583 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:23:22 ]
>>582
それはどんな理由で、マウスイベントでなくてはいけないの?
ほかの方法の方が良いのではないの?

584 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:27:31 ]
>>583
本当にその通りで、マウスのイベントアクション処理を呼びたいだけなんです。
ただ別出しにすると面倒で(数があるので)やるべき処理ではないとは理解しています。
暫定処理として動かすためにです。とりあえず。
よろしければ方法を教えていただけないでしょうか?

585 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:54:16 ]
>>584
よくわからないがjava.awt.Robotでも使えば?

586 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:56:53 ]
ボタンAのキーエンターがいまいちよくわからないんだけど・・
JButton a = new JButton();
getRootPane().setDefaultButton(a);
こういうことじゃないの?

587 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:46:24 ]
ボタンにショートカットを設定したいってことか?

588 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 23:28:10 ]
デフォルトボタンにしたいってことかな?

589 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 01:24:38 ]
久々にエスパーが必要な質問だな

590 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:29:43 ]
>>590
なるほど!!TransferHandlerでやることばかり考えてTransferableの方でって考えがなくなってました。
それは確かに容易に実装できますね。
解凍処理については元々そのようにするつもりでした。進行状況表示させてモーダルにでもすることにします。
本当にありがとうございます!

592 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:37:39 ]
jlabelって座標で位置指定できないんですか・・・orz

593 名前:デフォルトの名無しさん [2008/08/19(火) 22:38:56 ]
>>592
出来る

594 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:45:33 ]
>>592
ヒント:レイアウトマネージャ

595 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:13:51 ]
>>593
>>594
d
レイアウトマネージャーを無効にすればいいんですね

596 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:15:26 ]
ヒントがかえって混乱させそうなので補足。
JavaのGUIにはレイアウトマネージャってのがあって、あるコンテナに含まれるそれぞれのコンポーネントのレイアウトをそいつが決める。
で、座標指定するってことはそれらを無効にする必要があるため、JLabelが乗ってるコンテナをsetLayout(null)してあげて、そのあとJLabelをsetBounds(int,int,int,int)かなんかで位置、サイズ指定する。
こんな感じ。

597 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:16:47 ]
うわ。とっても余計なお世話だったw

598 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:29:34 ]
>>597
いえいえ、とても助かりましたwありがとうw

599 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:45:40 ]
まあnullレイアウトは使わない方が良いんだけどな。
動的レイアウトに対応できなくなるから。

600 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:34:11 ]
>>595
nullにすると他のも全部手動で設定しなきゃいけなくなるから
OverlayLayout使って他のComponents入れたPanelと
ラベルだけ入れたPanelを入れて、
ラベルだけのPanelにemptyBorderを設定すればうまくいく、
かもしれない。



601 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:59:38 ]
nullレイアウトはつかわんほうがええ
絶対座標が使いたいならAbsoluteレイアウトつかえ

実際のところ絶対座標が必要な場面ってのはないけどね

602 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 09:56:13 ]
>>585
ありがとうございます。
できれば、マウスカーソルの移動はさせたくないので、内部的に適宜イベントを発生させたいなと考えています。
ComponentのprocessMouseEventはprotectedなので、イベントリスナーの実装クラス内で呼び出すことはできないと思いますが、
内部的に他のComponentのイベントを発生させることはできないのでしょうか?

603 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 11:36:09 ]
これ見てて思ったけどSwingのテストPGってrobot使うの?もしくはnew MouseEvent()で仮想イベント発生?


607 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 13:21:05 ]
AWTUtilities.setWindowShape使ってみてたんだけど、PopupまでShapeの形に区切られるね@Win
正式版では修正されるのかな。

608 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 13:42:25 ]
>>606
まぁたまにあるといえばあるが、そんなに多くないかな

質問内容見る限り本当にRobot必要とは思えないけど

609 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 16:17:58 ]
>>607
やだなそれ。

610 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:51:15 ]
>>607
setWindowShape した場合はデフォルトで
setLightWeightPopupEnabled を false にしないとって話かな?

Swing側でデフォルト値変えてよって話ならバグ報告すれば対応してくれるかもしれん……



611 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:15:14 ]
>>606
使った事ないけどSwingUnitってのがある。

612 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:41:49 ]
java.awt.Frame,java.awt.Dialog#setUndecorated(true)を実行すると、
resizableプロパティがtrueでも、マウス操作でウィンドウのリサイズが不能になります。
この挙動はjavadocに記載されていませんが、これは仕様?仕様漏れ?バグ?でしょうか?
setUndecorated(true)を使用しながら、ウィンドウのリサイズを可能にする方法はありますか?

613 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:53:03 ]
>>612
bugs.sun.com/view_bug.do?bug_id=6520706

Windowsなら仕様ってことかなー??


614 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:53:51 ]
デコレーションがなくなったらそりゃーリサイズできないでしょ?
もしリサイズさせたいならMouse**Listenerで実装しないとね。

615 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:56:35 ]
そのBTSの報告者は、612とは逆に、ソラリスだとデコレーションなくしても
リサイズできちまうぞー、と報告してるのね。


616 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 23:18:08 ]
>>613
ありがとうございます。
環境はWindowsです。RFEってことは、将来改善されそうですね。
今まで報告したバグも放置されっぱなしな事が多いですし、期待してませんが。

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

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




617 名前:デフォルトの名無しさん [2008/08/30(土) 17:10:32 ]
今ウィンドウに配置されているテキストエリアやボタンを、”送信”ボタンを押したときにすべて削除して
新しいレイアウトにしたいのですが、どうすればいいでしょうか?

618 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:58:52 ]
すいません。最小化して再表示したら出来ていました。。
スレ汚しすいませんでした。いちいち最小化なんてor2



621 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:09:26 ]
本当に削除と追加を繰り返す実装が必要なのかどうか考えたほうがいいかもな

622 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:13:22 ]
imageならImageObserverあったけどコンポーネントにあったっけ?

623 名前:デフォルトの名無しさん [2008/08/30(土) 18:45:06 ]
while(comp.isShowing() != true){
repaint()
}


624 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:55:01 ]
>>620
念のためいっておくと最小化と再表示が必要なのは君のコードが悪い。
それはおいておいて、とりあえずCardLayoutのマニュアルを読んでくれ。

625 名前:デフォルトの名無しさん [2008/08/30(土) 23:27:43 ]
どんなコードがいいんでしょうねぇ

626 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:50:12 ]
本当に画面のコンポーネントを動的に削除したりするのが目的なの?
そもそも本当はCardLayoutのような切り替えがほしいだけじゃないの?

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

そこはどうよ

627 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:46:38 ]
すいません。
レス有難うございます。625は自分ではないです。申し訳ありません。
カードレイアウトで処理することを目指して見ます。


628 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 00:50:24 ]
Componentを非表示の状態で何かに内容を描画したいのですかどのようにすればよいのでしょうか?
具体的にやりたいことは、タスクトレイから出てくるようなアニメーション付きのポップアップです。
手順は今のところ以下のようにしています。

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

一旦表示するといっても一瞬ですので気づかない程度ですが気持ちが悪いのでなにか他の案があれば教えてください。

629 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 10:13:36 ]
フレームAから、フレームBを生成したとき、
フレームBを閉じたら、フレームAにフォーカスを充てるようにしたいの
ですがどうしたらいいのでしょうか?
また、上記のとき、フレームBを閉じてしまうと、
フレームAも同時に閉じられてしまいます。
フレームAが閉じられないようにするにはどうしたらいいでしょうか?
アドバイスお願いいたします_(..)_

630 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 10:28:17 ]
ちなみに、フレームBを閉じたとき、隠すようにすれば
画面上からはフレームBは消え、フレームAも画面上に残すことはできます。
しかし、これは根本的な対策ではないと思います。。



631 名前:629 mailto:sage [2008/09/03(水) 10:29:04 ]
>>630は自分が書きました。

632 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:43:27 ]
>>628
非表示にする前にgetGraphicsしておくとか。

633 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:47:20 ]
>>632
元々表示されていないものなので、「非表示する前」というわけにはいかないのです。

634 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:50:52 ]
試しに子コンポーネント取得でpaintさせたらうまくいきました。
for(Component c:window.getComponents()){
 c.paint(g);
}
すみません。

635 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:58:54 ]
>>629
なんで閉じてもいないフレームがかってにとじられるんだ?
該当部分のソースをさらしてみ

636 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 12:05:31 ]
エスパーすると EXIT_ON_CLOSE を DISPOSE_ON_CLOSE にすればいいんじゃない

637 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 12:14:52 ]
Window#addNotifyで表示可能に出来るみたい。

638 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 12:17:44 ]
>>637>>634にです。

639 名前:デフォルトの名無しさん mailto:sage [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つ目のキーを押しても押されてないことになる。


ソースはここ。
docs.google.com/Doc?id=ddpgzg76_21f7tvdd4z


640 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:51:22 ]
ハードウェア構造上の問題で3つの同時押しを検出できないキーボードがある
Nキーロールオーバーでぐぐるといい



641 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:56:41 ]
>>640

そゆこと (;_;)

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

Thx.


642 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:16:13 ]
お高いキーボードをPS2でつないでる場合はNキーはいるけどそれを期待し
てゲーム作るわけにはいかないよね…
厄介な伝統的問題だ。

643 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:11:48 ]
>>642
PS2でもUSBでもいろんなキーボード触るとわかるが
同時押しが出来るできないはさまざま

PS2だからUSBだからということにはならないし、高いから大丈夫というわけでもない

644 名前:629 mailto:sage [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(){
  ・・・
 }

645 名前:629 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:34:54 ]
EXIT_ON_CLOSEは閉じるとかそういう話ではなく、アプリの終了だろ・・・

647 名前:629 mailto:sage [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フレームは隠してるだけというわけなんですね。

648 名前:629 mailto:sage [2008/09/03(水) 20:38:47 ]
>>646
>EXIT_ON_CLOSEは閉じるとかそういう話ではなく、アプリの終了だろ・・・

まさしく、そこを勘違いしてました。^^;
そのフレームの終了という意味で、BフレームでEXIT_ON_CLOSEを指定していたので。
EXIT_ON_CLOSEは、アプリケーション全体で終了を意味していたのですね。。


649 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 22:02:47 ]
きーぼーど?りあるふぉーす一択だろJK



651 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:58:17 ]
java swingは最初からwindowsにJREがインストされてたら、もっと使われるのだろうに。
最近、.netフレームワークをインストールしないといけなかったりするソフトも
増えてきたし、関係なくはなってきてるが。

652 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:33:07 ]
MacにはJRE入ってるんだよね?

653 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:51:26 ]
古いのがね。
winはJ/Direct騒動でXPSP1あたりから外された。
ただメーカー製OEMだと5.0がプリインスコされてる場合がある。

654 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:39:16 ]
Mac。
今のLeopardなら、JRE6ですよ。

Windowsに関しては、
PCメーカーのツールが利用している時は入っていたりする。
(Microsoft製のJVMはJavaと呼ぶと混乱の元)

655 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:11:24 ]
それにしてもSwingというかJavaのアプリは増えないね。
やっぱりWindowsに標準で入ってないと厳しいのかな。
FreeBSDでも動くみたいだし、もっと増えて欲しい。

656 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:17:25 ]
jarのアイコンが変更可能だったら素敵なのに

657 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 14:20:22 ]
ショートカット作ってそれに好きなアイコンを設定したらええ。

658 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:52:01 ]
jarのexeラッパ無かったっけ?

Swingは多機能なのはいいんだけどGUIレイアウトの敷居が・・・

659 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:54:12 ]
exewrapとかいろいろあるね。

Jigloo or Netbeansで十分かな

660 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 18:43:20 ]
>GUIレイアウトの敷居が・・・

同意。
簡単なレイアウトだったら、レイアウトマネージャを使ってレイアウトしてみるけど、
ちょっと複雑になると、絶対値で指定するようになるんだよね。。




661 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 19:45:00 ]

ならないよ?

662 名前:デフォルトの名無しさん [2008/09/05(金) 19:54:56 ]
>>651
Sunが訴訟起こして止めさせたからなー。

663 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 19:56:32 ]
>>655
俺ももっと増えて欲しいと思う。
でもきょうび一つのOSしか使っていない人が少ないしな
デスクトップでのrun anywhereは大したメリットにならないし
Javaで作るメリットが無いのが痛い

664 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:00:24 ]
>>662
そのままにしておけばマイクロソフト独自のWindows専用のjavaが氾濫していたんだろうなあ?
そしてjavaの統一性の無さにユーザーが苦労することになったのだろう。


665 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 23:11:57 ]
最近MIDPしか弄ってない俺はささっとMIDP3.0を触りたい。
やっとタブペイン使えるんだぜ?

666 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 23:50:59 ]
>>660
絶対値は普通一番使わないものだろう・・・

667 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 23:58:01 ]
>>664
結果サーバーサイド市場とるまでに消えてたね。

668 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:05:29 ]
J/Direct なんて非標準 API あったところで必要な奴以外は使わんだろ。
com.sun 系バリバリでコード書いてる奴なんていないのと同じ。あれはマクネリのいつもの基地外行為。
あの情勢で消えるとか見当違いもはなはだしい。

669 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:47:31 ]
>>668
VisualJ++とかすさまじい挙動にしてたのしらないのか・・・

670 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:40:19 ]
そもそもJ++の吐いたバイトコードsunのVMで動かすとむちゃくちゃ重いしそのうちVM死ぬんだぜ。



671 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:40:43 ]
>>666
おおざっぱなレイアウトはマネージャ使って、さらに細かいところは絶対値指定しない?

672 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:54:00 ]
レイアウトによるよ。
シンプルなレイアウトなら使わない。
絶対値での指定は、おれもたまにやる。

673 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:01:08 ]
>>669
JDK 1.0 時代はそもそも Sun の VM もコンパイラ自身が劇重で自爆してただけだろ。
すさまじい挙動なんてあったか? for 初期化で宣言した変数が for 外の同名変数と重複になるくらいしか覚えていない。
AWT 絡みのライブラリレベルならいくつかあったが、それは今の話とは関係ないしな。
とりあえずあの時代であのコンパイル速度は爆速だった。

674 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:29:43 ]
>>671
絶対値指定はしない
環境変わるとすぐ表示崩れるから
同じWindowsでもクラシック、XP、Vistaで描画がそれぞれうまくいかなかったりするし

675 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:46:25 ]
>>674
>環境変わるとすぐ表示崩れるから

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

676 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 19:01:02 ]
>>675
> 作成するには、レイアウトマネージャ使っても難しいときがあるよ。
> ボタンに文字がすべて表示されなかったり

それはレイアウトマネージャ使う側の意識が不適切な前提をおいてりゃそうなる。
一定以上の幅を期待したりとか一定以下のフォントサイズを仮定していたりとか。

677 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 19:13:09 ]
なんかデジャブな流れw

レイアウトマネージャの良いところは、部品を気軽に追加削除できるところだと思う
もちろんちゃんと作ってればの話だけど

678 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 19:41:42 ]
1スレに必ず1人は現れるからな
絶対座標厨が

679 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:29:09 ]
>>678
仕事だとあるんだけどね、絶対座標でっていうのが。
基本設計の画面設計書に書かれちゃってて。
本当はイヤだけどしかたなく配置して、指定が抜けてるのを見つけてはレイアウトマネージャで
配置したりしたな。
あとはプレーンにレイアウトマネージャで配置して、そのプレーン自体は絶対座標で配置したりとか。

>>675
よほどキチキチに詰めなければ崩れたりしないと思うが。
あとは Look&Feel を OS 依存のものにしなけりゃいいんじゃね?

680 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:28:53 ]
すごいな。
俺は絶対座標を使えという指示は受けたこと無いな。
恵まれてるんだろうか。

以前絶対座標で書いてる人みたことあったけど、
XPの標準とクラシックとで見事にインセットの違いで描画がずれてたな。



681 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:23:05 ]
>>678
癇癪厨w 絶対座標厨って、なぜにおまえがそんなに怒るw

682 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:27:08 ]
なんかカチンと来たらしい人が出ました

683 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:32:34 ]
いや、レッテル貼るほど、癇癪起こしてるやつがいたんで。ね?w

684 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:36:16 ]
誰も怒ってないような

685 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:48:20 ]
>>683
それって君の事なんじゃ

686 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:01:32 ]
>>685
絶対厨じゃないよw

687 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:02:31 ]
自分がよくわかってるくせにw

688 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:40:31 ]
絶対座標だと何がいけないの?

689 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:57:58 ]
絶対厨って言って、うるさいやつが出てくるからねw

690 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:49:26 ]
>>688
いけなくないけど、LaF変えたりフォント変えただけで表示ズレるので
自由に設定できるアプリ作りたいなら絶対座標にしない方が無難。



691 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:37:57 ]
>>659
exewrap、JREも含める事ができるんだね。
配布サイズの問題はあるけど、かなり良さそう。
情報感謝!

692 名前:デフォルトの名無しさん mailto:sagw [2008/09/07(日) 12:21:20 ]
>>691
>exewrap、JREも含める事ができるんだね。

exeファイルの中にJREを含めることができるということ?
詳しく。。

693 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:47:35 ]
>>692
調べたけど、JREフォルダの中につっこんで使用するということだな。

694 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 22:21:37 ]
privateJREはよく使われてるからな

695 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:29:43 ]
JPanel に add した JLabel を一度描画したあと
全て消してもう一回同じ位置に別のものをかきこむいい方法はないでしょうか?
何回も書き込むと描画内容が下へ下へ行ってしまいます。

696 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:36:45 ]
?
add した JLabel に setText()

697 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 10:30:13 ]
古いJLabelをJPanelからremove

698 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:15:01 ]
生成コスト考えると、setTextでおk

699 名前:695 mailto:sage [2008/09/09(火) 20:34:26 ]
>>696 >>697 >>698
ありがとうございます。頑張ってみます。
最後にもう一つ、教えてください。

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

ttp://www.tohoho-web.com/java/swing.htm#JScrollPane

700 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 20:43:04 ]
JTreeにaddTreeSelectionListenerでTreeSelectionListenerをセットして、
valueChangedが呼ばれたら右の画面を好きに変えればいい



701 名前:699 mailto:sage [2008/09/09(火) 20:48:12 ]
>>700
それがなかなかうまくいかなくて。。(汗)
あとソースのURL間違えました。

ttp://www.tohoho-web.com/java/sample/swing/JSplitPaneTest.java

702 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 20:55:59 ]
何をどうしてみたら上手くいかないんだ?

703 名前:699 mailto:sage [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 名前:続き mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:できました! mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 14:05:06 ]
趣味的にはレイアウトマネージャ自体を作るという選択も
FlowLayoutのソースを参考にしてx軸とy軸の役割を入れ替えれば



711 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 16:56:00 ]
JavaFXの話題は無いのか

712 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:19:16 ]
やるなら専用スレ立てるかどっかでやってくれ

713 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 23:43:26 ]
そういやJavaFX、めっきり聞かなくなったなぁ。
スレ立てたら集まるかな?

って、ここでする話題じゃないね。
スマン。


714 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 23:50:42 ]
JavaFXの話題は↓でやるべきかね。
pc11.2ch.net/test/read.cgi/tech/1220531647/l50

715 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 23:53:47 ]
>>710
その手は思いつかんかった。


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


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


『Javaアプリケーション作成講座―Swingプログラミング徹底攻略 (単行本)』著:赤坂玲音
がいいとか聞いたけど廃版だし……


716 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 07:10:46 ]
>>715
eclipseでF3押してSwingのソースに飛んでちょこちょこ読むのが
一番てっとりばやいと思うよ

717 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 16:55:15 ]
>>710の手だけど、他のレイアウトマネージャを内包して、
本質的な配置ロジックはそいつに委譲、返ってきた結果を使って、
表示は自分でx,y,width,heightを入れ替え(あと、反対側の辺から
計った値に変えたり)して使う、みたいなのでいけるかな。

左右だけ入れ替えるのは3年くらい前に作ったことあるけど


718 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:04:24 ]
左右入れ替えるだけなら setComponentOrientation(RIGHT_TO_LEFT) とか・・・

719 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:31:20 ]
ComponentOrientation#isHorizontal()なんていうメソッドもあるんだな。


720 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:38:38 ]
>>719
それ指定しても無視されなかったっけ?
たしかテキストの方向に関しては無視されたような。



721 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:57:37 ]
>>715
>そういやSwingの仕組みとかを解説した本やサイトっておすすめのとかある?
>Model View ControllerをJavaではどう実装してるかとか。
本やサイトを、かなり読みましたが、ソースを読みまくるしかない気がする。
概略であれば、Sunのサイトを漁るの良いでしょう。ただし、一箇所にまとまってませんが。

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

>『Javaアプリケーション作成講座―Swingプログラミング徹底攻略 (単行本)』著:赤坂玲音
がいいとか聞いたけど廃版だし……
以前、新たな発見があるかもしれないと思って、中古を買って暇つぶしに読んでみようかと思いましたが、
Amazonの書評で、書評数が少ないものの、酷評されているため、やめました。
715が購入したら、感想を聞きたいです。

723 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:25:39 ]
>>721
ん、isHorizontal() ってゴニョゴニョして無理矢理 false 返させても反映されなかったような記憶が……

724 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:36:53 ]
>>723
Component#setComponentOrientation(),Component#applyComponentOrientation(),
JComponent#updateUI()を参照してください。

個人的には、isHorizontal() をオーバーライドしたComponentOrientationサブクラスのインスタンスを
生成して不要なリソースを確保する理由に興味があります。
宜しければ、それが必要になるシチュエーションを教えてください。

725 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:42:41 ]
isHorizontalって、isLeftToRightと違って縦書き用でしょ
縦書きまだサポートされてないんじゃ

726 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:49:51 ]
>>723, 725
724です。
すみません。早とちりしてisHorizontal()をisLeftToRight()と読み違えてました。
isHorizontal()(縦書き)は、未サポートです。



727 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:11:01 ]
SWTは使わないから間違ってるかもしれないけど
今調べた限りでは
GridBagLayoutが近いかな。

GUI作るのにIDEは使わないけど、
GridBagLayoutで中にJPanel入れてFlowLayout使うとかが
多いかな。


730 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 14:08:51 ]
JTableの列ヘッダ部分(JTableHeader)はJScrollPaneにのせる事で始めて描画されますが、
その後JScrollPaneのcolumnHeaderを別の物に変更(scrollPane.setColumnHeaderComponent(Component c))しても
それらが乗っているコンテナを可視化したりするとJTableHeaderが勝手にscrollPaneのcolumnHeaderに設定されています。

これはどこで変更されているのでしょうか?



731 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 14:31:41 ]
>>730
Javadoc の JTable#configureEnclosingScrollPane の説明文を読む

732 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 14:33:23 ]
ありがとうございます。熟読してまいります。

733 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 14:49:37 ]
>>716
やっぱりそうかな。
標準ライブラリはいい教科書になるってよく言うしね。

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

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


アンガトサン


734 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:42:52 ]
再び質問です。
JScrollBarでバーをドラッグ中に、内部では定期的(?)にマウスの位置を取得し、バーの位置を表す値が変化しますが、その取得の頻度を変更する方法はないのでしょうか?

735 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:51:03 ]
内部ではマウスイベントが来るたびに更新してるだけだと思うが
取得するのは自分で取得しに行くんだから好きな頻度で取得すればいいのでは
何をしたいのかよくわからない

736 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 19:01:13 ]
そのマウスイベントの発生周期はもちろん変更できませんよね?

単純にJScrollPaneにComponentのせているのですが、そのコンポーネントの描画処理がとても重く、スクロール中にあまり頻繁にリペイントして欲しくないんです。
paintあたりをオーバーライドして、ある時間が経過していなければpaint無視という感じにするしかないのでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 20:06:01 ]
コード例までわざわざありがとうございます。
移動中は全く描画しないのは寂しいので、それを応用して回数を減らさせることにします。

739 名前:728 [2008/09/25(木) 01:34:42 ]
>>729
なるほど。。GridBagLayoutの中にFlowLayoutはいいアイデアかも!
やってみます!ありがとうございます

740 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 05:03:46 ]
質問です。
今のJPanelにコンポーネントが何個か表示されていて、イベントが起きたらそれを一つ増やしたい場合どうすればいいですか?
例えば、最初にボタンが5個表示されていて、イベントが起きたら10個にする、という具合です。



741 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 09:08:14 ]
イベントを拾ってJPanelにコンポーネントをaddしたらいいんじゃない?

742 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 12:26:31 ]
すると次に
「JFrameのサイズを変更しないと追加したコンポーネントが表示されません。なぜですか?」
という質問がくるわけだな?

743 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 12:31:20 ]
>>741
JFrameのサイズを変更しないと追加したコンポーネントが表示されません。なぜですか?

744 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 17:34:03 ]
>>743
イベントが起きる前にウィンドウを最大化しておけば良いよ。

745 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 17:04:43 ]
>>743
pack()しなおしたらいいんじゃない?


>>742を見るによくある質問みたいだけど。
調べた?


746 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 17:57:23 ]
>>745
pack()したらユーザがウインドウのサイズを変更していた場合にも強制的にサイズ
変更されちゃって使いにくいUIになっちゃうな。

Swingならコンテナ(この場合JPanel)に対してrevalidate()を呼べばいいんだっけ?

747 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 08:55:41 ]
コンポーネントをマウスで移動したりしてソリティアみたいな動きにしたのですが、どこから手をつければいいのでしょうか?
public abstract void componentMoved( ComponentEvent e )
のコンポーネント・イベントがあるみたいなんですがこれですか?


748 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 09:20:38 ]
そもそも、「コンポーネントを動かす」という動作は、その特定のコンポーネントがサポートしていない限り行えません。
単純にそのコンポーネントにMouseMotionListener,MouseListenerなどでマウスの動きを監視して、動かす動作がなされたらそのコンポーネントを移動、というようにすればいいです。

749 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 09:28:02 ]
コンポーネントをドラッグ・アンドドロップにしたいってこと?

750 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 09:40:37 ]
ググってみてもあまり解説ないですね。一応、英語のチュートリアルにも目を通してみたんですけど、サンプルもありませんでした。
コンポーネントをマウスで移動する(ソリティアみたいなの)は、低レベル処理のような感じがするんですけど、自分で一から実装するものなんですか?



751 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:33:48 ]
一から実装ってそんなに大変じゃないよ?
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/421.java
たったこんだけでコンポーネントの移動はできる。

分かりやすくするためにいろいろNGなこともしちゃってるけど実装するならマウスの動き監視するだけでいい。

752 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:35:47 ]
あ、ちなみにこの例ではコンポーネントを実際に動かしてるけど、glassPaneに移動の様子を描画して、正しい動作であれば実際に移動みたいなこともよくする。

753 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:43:44 ]
まさにソリティアですね。
2DのGUIはあまりやってなかってんで参考にします。
実はAWTでよかったんですけど(マルチスレッドとイベントをたくさん使うので)、ありがとうございます。

754 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:49:25 ]
>>752
なるほど、ドラッグで、ウインドの(いちいち描画される)リサイズみたいなヤツですか?
それだと、swing限定で、awtで実装するとなると大変ですね。やっぱり低処理なんですか。
一応、swing限定であれば、internal frame のコンポーネントは機能的に同じ感じはしてたんですけど…
スレッドとかバンバン使うんでswinはなんとも…swingだとプロトタイプ用途かな。

755 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 14:46:18 ]
スレッドをバンバン使うからawtで、という発想がまったく理解できないけど…

756 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 14:54:18 ]
え?swingはシングルスレッド(でイベントと描画処理)じゃないの?
非同期処理とかやるときは、invokeLater()以外でやるとすればどうするの。

757 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 14:56:44 ]
>>752
そういえば、split pane の区切りバーみたいなヤツですか?

758 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 15:33:43 ]
そのinvokeLaterでやれよ

759 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 21:36:44 ]
ん?>>755がEDT理解してないでFA?

760 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 21:52:46 ]
>>754がアホでFAでしょ



761 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 00:34:36 ]
スレッドがわかっていない>>754がいるスレはここですか

762 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 02:25:32 ]
すみません、質問させてください。

JPanelの中にJLabelをいくつか配置した構造を作っています。
JLabelをクリックした際にMousePressイベントが呼び出されるのですが、
下にあるJPanelやJLabelのMousePressイベントも呼び出すにはどのようにしたらよいでしょうか?

763 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 02:34:10 ]
それぞれのaddZZZListener()に入れるインスタンスを同じのにする。

764 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 02:35:56 ]
ところdえ、EDTって何の略ですか?

765 名前:デフォルトの名無しさん [2008/09/30(火) 02:47:05 ]
>>764
東部夏時間

766 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 03:03:55 ]
東部夏時間てのは、頭のてっぺんが禿げてるってことか?

767 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 03:10:24 ]
>>763
なるほど、ありがとうございます!

768 名前:デフォルトの名無しさん [2008/09/30(火) 03:17:40 ]
>>766
違います。東部夏時間とはイベント処理スレッドのことです。

769 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:23:59 ]
swing的にはevent dispatch thread


770 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:42:00 ]
>>751
コンポネントを動かすのは、awtで実装するのは難しそうですね。



771 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:53:20 ]
>>770
なんでそう思うの?
>>751の全てのコンポーネントをAWTの物に変えて、setOpaqueやらsetDefaultCloseOperation()やらを消したらそのまんまで実行できるよ。
setDefaultCloseOperation()の変わりにWindowListenerとりつけるの忘れずにね。

というかマルチスレッドだからAWT使うって・・・
コンポーネント動かすとかより先にすべきことがいろいろあると思うなぁ。

772 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:13:34 ]
protected void processMouseEvent(MouseEvent e)
{
super.processMouseEvent(e);
}

途中のコードは省略しますが、ここでsuperを呼び出さなくても動くんですけど、呼び出さないとどういう影響が考えられますか?

773 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:16:14 ]
どのJComponentを拡張したの?
スーパークラスでやってることを調べたらいいと思うよ。

774 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:56:55 ]
各コンポーネントのZオーダーの問題も考えるとやっぱり複雑ですね。
addZZZListener()とprocessEvents()は連動していて(イベント伝達は内部では同列に管理されていて)、
superしないとListenerの方には伝達されないんですか?

775 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:09:36 ]
そりゃそーだ。

776 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:42:46 ]
extends JPanel だと簡単なんですけど、JComponentから継承して自作コンポネントを作るのはととても大変ですね。
getUI()とか、swing特有の設定がたくさんありすぎてわからないんですけど、結局何を設定すればいいんですか?

777 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:52:26 ]
結局 paintComponent だけ書けばいいと思うよ
あとはマウスリスナとかキーリスナとかで

778 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:52:43 ]
getUIはUIを委譲してるだけだから別に気にしなくてもいい。
paintComponent(Graphics g)
getPreferredSize()
この二つが比較的多いかな。

779 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:06:41 ]
JComponentから継承してsetOpaque(false);とかsetDoubleBuffer(true)とかやってるんですけど、
なぜか表示されると、そのコンポネント(のインスタンス)が1ドットのサイズになってしまうんですけど、いくらsetSize();をやっても変化ないです。
どうすればいいのでしょうか。


780 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:24:02 ]
getPreferredSizeをオーバーライドして自分の望むサイズを返せばよい



781 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:30:48 ]
setLayout(null);なんですけど、getPreferredSize()を上書きするとその推奨サイズに固定されませんか?
それと、ご指摘のことをやっても1ドットでした。
レイアウトマネジャと、swingの複雑な作法が混ざっていて、バク探し以上にかなりカオスですw

782 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:36:06 ]
今のところextends JPanelでしのいでますが、JComponentから派生したいのにこれだとJPanelのルールに縛られてしまいます。
やっぱりgetUI()とかupdateUI()の上書きになるんじゃないですか?
英語チュートリアルは長くて、siwng固有の作法(getContetPane().add()とかpaintComponent()の作法)も複雑だし、完読出来てません。

783 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:30:29 ]
たぶんあなたには自作コンポーネントは早い。どうしても作りたいならソース晒せ。

784 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:55:23 ]
JTableに,複数のクラスのオブジェクトのメンバ変数の値を混ぜて
表示したいのですが,どのようにやるのがスマートでしょうか?

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

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

というか,そもそもこういったデータはどう保持・参照するのがよいのでしょうか
SQLでも使うべきですかね

785 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:27:51 ]
自前のTableModelを作るべき

786 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:24:39 ]
>>785
ありがとうございます
自前のTableModelを作ろうとは思っておりました

データ保持部分とそれからの取り出しについて
もう少し詳しい回答をいただけないでしょうか

787 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:34:17 ]
AbstractTableModelを拡張するのが楽だよ
大抵はそれで事足りる。
肝心のデータはどういう形式で持ってるの?
リストかなんかでそれぞれ別々に保持してるのかな?

788 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:35:09 ]
JTableにどう表示したいのかイメージがわかないなぁ。こんな感じ?
|   店名   | 売り上げ | 店主名 |年齢|商品の値段|
|○×商店   |\4,200,000|○田△三|50歳|     \100|
|スーパー△◇|\4,200,000|☆野◎●|41歳|     \199|

789 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:35:33 ]
>>787
はい,その方向でやってみます
現在,各オブジェクトはメインのクラスがいくつかのArrayListで持っています
ArrayList<Shop> shops, ArrayList<Person> persons...
みたいな感じです

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

>>788
はい,そのような形です

790 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:48:48 ]
テーブル使う時はだいたい1行に1オブジェクトってのが多いな
今回のなんてもろそうでしょ?
従業員クラス作って、商品の値段のリスト作って、店クラスにでも持たせて、そのオブジェクトのリストをTableModelで一つもつ。
そうすると別に厄介じゃないよ。



791 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 02:44:48 ]
>>790
ありがとうございます
今のところは1行に1オブジェクトではなく,複数のオブジェクトからのデータが混じっています
788の例ですと,店・人(従業員)・商品からのデータで,つまり参照しているクラスは3つありますね
1行に1オブジェクトがそういう意味でなかったらすみません

人(従業員)クラスや商品クラスは既にあるのですが,この中の特定フィールド値のリストを
別のところに作っておけということでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 11:00:14 ]
階層構造にして1行を1つのBeanにしとけ
把握がらくだから

793 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 18:24:17 ]
>>階層構造にして1行を1つのBeanに
すみませんがここをもう少し詳しくお願いします

794 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 20:36:50 ]
>>793
792本人じゃないけど、下記みたいな行を表現するクラスやインタフェイスを実装して、
TableModel内で管理するってことだと思うよ。
つまり、Shop,Person,...みたいなListを個別に持つ必要はないってこと。
そんな風にTableModelを実装すると管理も面倒だし、メモリリソースも無駄。

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



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


796 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:20:33 ]
違う

TableModelとはテーブルの情報を保持するもの

797 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:25:36 ]
java beanは、具体的にはMVCでいうModelを担当するはずだったはずですけど、どこか具体的に解説しているところないですか?
javadocのjava bean 技術解説のところもイマイチ抽象的なので、swingやserverとかの具体事例を交えて解説しているお勧めなとこはないでしょうか。

798 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:27:58 ]
>>794
>つまり、Shop,Person,...みたいなListを個別に持つ必要はないってこと。

それだと、RowData[]で管理するわけで結局Listなんじゃないですか?

799 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:51:37 ]
>>797
JavaBeansはMVCとは関係ないよ
プロパティアクセスとそれに伴うリスナーの規約に過ぎない

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

>>798
個別にListもつと不具合の種でもあるからひとつにまとめて行を確実にもつのは大事なこと

800 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:41:19 ]
うわ,見てない間にかなり進んでたようですね

>>794
ありがとうございます
これはJTableに表示したい組み合わせ(クラス・フィールド)をがっちりハードコーディングしている
のでしょうか?
それですと,組み合わせごとにRowData Beanを作らなくてはならなくなったり・・・しないでしょうか?



801 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 10:58:57 ]
>>801
確かにぱっと見るとたいした手間ではなさそうです
フィールド値による絞り込みで,「所在」が「日本」であり,かつ「店主の姓」に「山田」があるもののみリストせよ
とかいう場合にどうするかちょっと考えてみたいと思います

803 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:33:19 ]
>>802
それがファサード化で問題になるか?

804 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 21:01:55 ]
>>802
そういうのはTableModelをラップしてフィルタリング機能を持たせたTableModelを作るのが定石。

…だったけど、Java 6から便利な機能が追加されたんだね。
「JTableクラスでのフィルタリング」
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070323/266096/
こういうのは毎度自作してたからなぁ。最初からあったら便利だ。

805 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 00:31:37 ]
VEってもう古いの?

806 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 00:55:15 ]
うん

807 名前:デフォルトの名無しさん [2008/10/06(月) 01:20:48 ]
今は何?

808 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:28:22 ]
NetBeansじゃねぇの?

809 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 15:26:04 ]
NetBeansでポトペタやってEclipseでリファクタリング。

810 名前:デフォルトの名無しさん [2008/10/06(月) 17:52:59 ]
ネット豆の作るコードが気に食わねえ



811 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 17:55:26 ]
どう気に食わない?
かなり柔軟に設定できるが。

812 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 21:06:46 ]
VEはもっとひどいが

813 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 06:01:15 ]
>>810
NetBeansの作るコードが気にくわないというのは、カスタマイズの方法がわからないというだけじゃねぇの?
ほとんどプロパティのコードのところで制御できるんだが。

814 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:10:08 ]
Netbeansは.formファイルがないと編集できない時点で論外
最初からNetbeansだけで組むならいいかもしれないが
VEのほうがまだましに見える



815 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 21:09:41 ]
VEはまともに開発が出来ない時点でソースがきれいだろうが論外
作りたいのはアプリなのでNetBeansのほうがましに見える

816 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 21:33:48 ]
NetBeansでGUI作ってEclipseで編集している俺様最強。

817 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 11:08:57 ]
NetBeansは信者がすごい

818 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 13:28:30 ]
>>817
Eclipseのほうがすごいと思うけどな

819 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 01:23:40 ]
JComponentサブクラスのソースにjAccessibleContextが、ずらずらと記述されていて、
気になっているのですが、javax.accessibility.*パッケージって何ですか?
何ができるのですか?
javadocにも抽象的な説明しか記載されていませんし、検索してもサンプル等を見つけられないので。
参考URLでも良いので、ご存知でしたら教えてください。英語でも良いです。

820 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 15:45:47 ]
javadocのアクセシビリティの項目からのリンクに詳しく書いてなかったっけ?



821 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 23:13:48 ]
>820
>javadocのアクセシビリティの項目からのリンクに詳しく書いてなかったっけ?
javadoc内に詳しいといえば、詳しく書かれているのかもしれませんが、
前置きなしに使用されている単語などが漠然とし過ぎていて、個人的には理解できないものでして。

もっと根本的なところから説明されているサイトがないものかと。
できれば、詳細な説明と「こういうコードを書くと、こんなことができるよ」的な、
基本的な短いサンプルがあると理解しやすいのですが。


822 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 14:30:48 ]
あれは必要な人が使うものだから分からんレベルのお前さんには関係ないよ。
javadoc読んで分からんなら必要ない人だ。

823 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 21:19:12 ]
Javaのバージョンが1.5という縛りでSwingのLAFをNinbus変更する方法はないですかね?

824 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 21:24:54 ]
Ninbusは単体で配布されてるが5じゃつかえないの?

825 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:34:36 ]
Nimbus

826 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 23:06:51 ]
GUIはNetBeansで作ってコーディングはeclipseでやりたいんですけど、
どうやったらいいですかね。
今はForte+eclipseです。

827 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 16:55:41 ]
GUIはnetbeansで作ってeclipseでコードいじれば良い。馬鹿か?

828 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 17:32:32 ]
Forte・・・だと?

829 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 22:32:39 ]
俺も昔はForteだったよ。eclipseに移ったけど。
あのころに比べればnetbeans6がかなりまともになってる。

830 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 22:53:21 ]
いまだにForteって信じられんな
Swing使ってるなら3.5からはNetBeansに移行するのが自然だと思うのだが

>>829
VEの放置っぷりがすさまじいよね



831 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 01:44:14 ]
で、なんでEclipseでコーディングやりたいの?

832 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 03:22:33 ]
エディタの親切さがNetbeansよりも上

833 名前:826 mailto:sage [2008/10/20(月) 07:44:07 ]
eclipseのソースの取り込みがForteは楽だったからForteでした。
Netbeansで取り込もうとしたけどうまくいかなかった。

834 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 14:43:32 ]
そういえば、project importer って使ったこと無いな。

835 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 10:29:24 ]
UIの形を連続的に変化させたり、フェードイン・フェードアウトをスプライン曲線風にスーッとアニメーションしたいんだけど
何で組むべきかなぁ

javax.swing.Timerとか使えばいいのかね

836 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:42:20 ]
よかよ

837 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:57:58 ]
>>835
Timing Framework
https://timingframework.dev.java.net/

838 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:55:04 ]
Swingもこれほど時間が経つのに、いまだにデスクトップに
透過PNGをそのまんま表示することすらできないという現実

頭が痛いぜ・・・

839 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:04:34 ]
デスクトップはswingと何の関係が…?

840 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:26:42 ]
ウィンドウ透過できるようになったんじゃ?



841 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:34:33 ]
>>840
なったの?JWindowとかにsetOpaque(true)して効果ある?

>>839
意味がわからない。Swing GUIはデスクトップ以外でどこで使われるというんだ

842 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:44:48 ]
>>841
jdk6 update10以降ね。

java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/
この辺でも読んどいてくれ。

844 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:04:06 ]
正式のu10以前から入ってて結構騒がれたんだが・・・今まで気付かなかったのか。

845 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:29:15 ]
>>843
com.sun.awt パッケージって事は一応ベンダ固有の拡張APIって位置づけなのか。

846 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 00:09:40 ]
アップルもGNU CLASSPATHもどうせ勝手に実装するだろう。
AWTなんて元々ピア部分はもろ実装依存だし。

848 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:38:12 ]
編集可能なJComboBoxで、用意した選択肢以外の項目が手で入力されたことを
検出する方法は、どうすればいいんでしょう? getSelectedItemで得たものを
自分で照合しないといけないんですか? よろしかったら、教えてください。

849 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:03:07 ]
if (comboBox.getSelectedIndex() == -1) とか?

850 名前:848 mailto:sage [2008/10/24(金) 19:31:56 ]
レスありがとう。試してみます。



851 名前:デフォルトの名無しさん [2008/10/27(月) 23:16:00 ]
JBUTTONのbackgroundの色にグラデーションをつけることは出来ますか?

852 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 23:47:30 ]
Look & Feelに依存するから、一般的にやるのは難しいだろうね
自分でBasicButtonUI拡張して作ってみたら?

853 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:04:03 ]
JTextPaneでselectionの範囲に色が付きますが、
複数行を選択したときに行末より右の部分にも色が付くようにしたいです。
どうやればいいでしょう?


854 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:28:50 ]
getSelectionHighlighter を差し替えた DefaultCaret を
JTextPane に setCaret してやる……んだったかな
うろおぼえ

855 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 20:30:32 ]
swingで作られるウインドウってWindowsとMacで外観が違ったりするの?
JREのバージョンによって違うのは自分の環境でたまたま発生したけど…

856 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 22:05:05 ]
少なくとも、L&Fの設定によるんじゃね?
最近のはプラットフォームのネイティブを真似たモノがデフォ。
昔は、MacOSXはAquaで他はMetalだったはず。

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

JREのバージョンによる差は、似せ具合の作り込みの差とかいろいろ。


857 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:08:05 ]
>>856
SystemLAFがデフォになったの?

858 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 03:28:50 ]
SunのJREではMetalがデフォ
ただしフレームはL&Fに関わらずシステム依存

じゃないかえ

859 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:20 ]
なぜネイティブのL&Fがデフォルトではないかよく考えてみるべきだった

860 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:08:53 ]
JFrameでサイズ指定すると、タイトルバーや四方の枠線も含めたサイズを指定することになるよね。
そうではなく、内側の、描画が反映される範囲のサイズで指定したい。
また、画像描画などの位置を、ウインドウの最上端からのピクセル数ではなく、
タイトルバーの下からのピクセル数で指定したい。

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

タイトルバーの幅や四方の枠の幅を調べたり、もしくは調べるまでもなく
内側の領域の数値を指定してサイズ変更する方法があったら、教えてください。



861 名前:デフォルトの名無しさん [2008/10/31(金) 20:23:56 ]
>>860
APIに書いてあるよ

862 名前:861 [2008/10/31(金) 20:31:28 ]
ど忘れしてたから確認してきた
多分Insetsのことだと思うけど違うかな

863 名前:860 mailto:sage [2008/10/31(金) 22:09:12 ]
おおー!
Insets でググったらわかりました!
ありがとうございますー!

864 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:23:21 ]
>>860
packメソッドとかじゃね

865 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:53:13 ]
>>860
コンテンツ区画の推奨サイズを指定してpack
Insets分を加えてJFrameのサイズを指定するよりスマート

> また、画像描画などの位置を、ウインドウの最上端からのピクセル数ではなく、
> タイトルバーの下からのピクセル数で指定したい。
これは普通コンテンツ区画上のコンポーネントかコンテンツ区画そのものかに描画するだろうから
ウインドウの左上端が原点になることはないのでは?

866 名前:860 mailto:sage [2008/10/31(金) 23:14:29 ]
お返事ありがとうございます。
勉強しながらのプログラミングなので、まだわかっていない事が多いです…
コンテンツ区画というのは、JFrame内の、描画や配置ができる範囲ですよね?

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

>862さんの言う Insets を使った方法でおそらく回避できると思いますが、
コンテンツ区画というものを理解したほうが、より「力押しではないプログラム」になりそうですので、調べてみます。

867 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:51:09 ]
直接JFrameに描くのではなくコンポーネントに描画機能を付けてそれを配置するようにすれば
例えばコンポーネントの周りにデコレーションを付けて表示するとか
ボタンとかの他のコンポーネントもフレーム上に配置するとかする時にでも
それぞれのコンポーネントはフレーム上のどこに配置されているかを気にせずに描画することができるようになる

>>867はコンテンツ区画いっぱいに一つのコンポーネントが広がった状態になるので
コンテンツ区画サイズ=コンポーネントサイズになっているけれど
複数のコンポーネントを配置するようなら
特定のサイズを必要とするコンポーネントに対してその推奨サイズを設定して
コンテンツ区画全体のサイズは指定せずにpackだけしてやれば
レイアウトマネージャが適当に全体のサイズを計算してフレームサイズに反映してくれる
そのときに推奨サイズが反映されるかどうかは設定されたレイアウトマネージャの性質次第だけど

869 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:27:52 ]
GUIの勉強兼ねてるなら、
この辺読むと「コンテンツ区画」について理解できるかもしれない
java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html
英語だが。


870 名前:860 mailto:sage [2008/11/01(土) 05:35:07 ]
わっ、サンプルコードまで書いていただけるとは、感謝感激です!
SwingUtilities.invokeLater() というのは初めて見ました、
描画したいコンポーネントをスレッドとして渡す… って使い方でしょうか。
いただいたサンプルコードをしっかり理解できるように調べて、
色々書き換えてみて勉強させていただきます。

>869さんもありがとうございます、がんばって読んでみます。



871 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 10:26:21 ]
SwingUtilities.invokeLaterはSwingを使う標準の手続きです
mainの中でこれやらずに直接Swingコンポーネントを使ったりすると危険だよ

Sunのドキュメントにも書いてある

872 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:36:26 ]
>>860
まさか他のスレッドからコンポーネントにアクセスしてないだろうな・・・

873 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:31:55 ]
JTextFieldの幅がキャレットが描画される分を考慮していないので、テキストの描画がうまくいかない場合がある。
それで困っている人がいたら、getPreferredSize()をオーバーライドして
super.getPreferredSize().width++とやるとピッタリになる。

たぶんテキスト関連の他のコンポーネントも同じかと思う。

874 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 08:01:32 ]
Javaはオフにしてますから

875 名前:デフォルトの名無しさん [2008/11/04(火) 08:54:19 ]
>>874


876 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 20:08:33 ]
JREをインストールしてないって意味かな

877 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 20:36:43 ]
>876
Javaとjavascriptの違いが分からん人かと。

878 名前:デフォルトの名無しさん [2008/11/06(木) 09:29:14 ]
>>874


879 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:07:52 ]
ところでなんでSwingって名前なの

880 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 20:16:43 ]
同じコンポーネントクラスでも、オブジェクトごとにlafを設定する方法はありますでしょうか?



881 名前:デフォルトの名無しさん [2008/11/08(土) 00:12:06 ]
>>874


882 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 00:30:18 ]
自分も基本Javaはオフです。
Swingもオフにできますか?

883 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:03:03 ]
Javaをオフにするというのがわからないが、
Javaプログラムが動作しない環境で、
Swingだけが動作するというのがあったら、むしろすごいな。

884 名前:デフォルトの名無しさん [2008/11/08(土) 09:47:35 ]
>>882


885 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 23:32:24 ]
Synthについて質問です。
テキスト関連のコンポーネントのテキストの描画方法を変更したい(テキストにグラデーションをかける、など)のですが、SynthGraphicsUtilsのpaintTextは描画に用いられていないようなのです。
変更を加える方法はありますでしょうか?

886 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 23:54:54 ]
Synthのソース読んでみましたがどうもComponentUIから実装しないとだめっぽいですね
例えばJTextAreaでしたら、SynthTextAreaUIと同じものをBasicTextAreaUI拡張して作成して、paint()メソッド前でごにょごにょ
あとはXMLの方でdefaultPropertyでui設定。。。

テキストコンポーネント毎に書くとなると相当面倒みたいですね。お騒がせしました。

887 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:52:46 ]
これは期待。
www.pej-hed.jp/washo/2594.html
ピアソン本買うの数年ぶりだ。

888 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:25:16 ]
Swing Hackみたいにがっかりする内容じゃないっぽいね

889 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 22:04:11 ]
filthyrichclients.org/
ここのExamples見てみて。
なかなかにがっかりだよ

890 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:11:05 ]
洋本読んだけど、
Swing一通り学んだぐらいの中級者以上の人には
かなりいい内容だと思うよ。
エフェクトとか、そこまで必要かよ!みたいな内容も
勉強としては読む分にいいんじゃないかな。
ただ6000円は高い気がする。



891 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:30:02 ]
>>890
filthyrichclientsの英語のPDF版を買おうと思ってたから、和訳が出るならそっちにしようかな。。
ただ、6000円だったら、PDF版にしようか迷うなー。
個人的には、EffectiveJAVAの新刊が早く和訳されるといいなと思う。

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

たしかにSwingHacksは、個人的には技術的に得るものはなかったものの、
SwingやJAVA2Dの書籍自体が少ないので、読み物としてそれなりに楽しめたけど。

892 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:46:05 ]
>たしかにSwingHacksは、個人的には技術的に得るものはなかったものの、
たぶんみんなこれ思ったんだよ

おまけのJavaSoundなんて入れないほうがいいくらいひどいし
それくらいならSwingにもっとページをさけよと

893 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:46:36 ]
Swing終了のお知らせ
www.pushing-pixels.org/?p=758

894 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 02:16:51 ]
Swing使いならinvokeLater()を知らないと駄目
pc11.2ch.net/test/read.cgi/tech/1204155623/871

898 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 03:25:49 ]
SwingUtilitiesのinvokeLaterを使うのが許されるのは、小学生までじゃねぇの?
EventQueueのinvokeLaterを直接呼んだほうがよくない?

899 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 05:29:41 ]
小学生がほざいてるよw

900 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 08:14:45 ]
たしかにhacksって名乗るほどhackしてなかったな
もっとUIいじりまくりコンポネントをぐりぐり自作lafぐらいまで
あったらhackっぽくなるんだろう



901 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:53:40 ]
>>900
>もっとUIいじりまくりコンポネントをぐりぐり自作lafぐらいまで
>あったらhackっぽくなるんだろう
それもいいんだけど、個人的には、コードをそのまま利用できなくてもいいから、
「おぉー、これは!」と思えるような意外な発想とか、着眼点とか、
通常、そういう使用方法や実装のサンプルがないapiの意表をついた
使用のサンプルとか、そういうのが少しでもあれば面白かったと思ったかな。
何がhackに値するかは難しい。。。



902 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:10:28 ]
iTunesみたいなUIの動きを
Swingで実現できたら激しくHackだと思う。

903 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:27:23 ]
>>895 どなたか・・

904 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:56:16 ]
高度なアニメーション、半透明とかかな。
GUIをアフィン変換して変形したりできれば、それなりに面白そうなものが出来そうだけど


905 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:11:12 ]
使いにくそうだなw

906 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:43:23 ]
たしかSwingXでそんなサンプルがあったなー
ありゃ度肝抜かれたわw

907 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 23:32:51 ]
>>893
>>894
Commentにも目を通した?
まぁ、今後、どちらの話が真実になるかは知らんけど。

そもそも、何のコンポーネントも追加されたりしないし、バグは修正されないしで、
今までだって、Swingって停止状態な気がするんだけど、気のせい?

908 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 23:41:55 ]
swingパッケージはコンポーネントの集合だってことを忘てないか。
Graphics2DやJava3Dとかと全く別者で、ごっちゃにしてる奴がいるけどこいつは何?

909 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:11:35 ]
>>911
Swingが何で出来てると思ってたんだよ

913 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:28:01 ]
この一連の流れで言ってるコンポーネントって、java.awt.Componentのこと?
それともJComponentや、そのサブクラスを含めた総称としてのコンポーネントのこと?
それと、なぜJava2DとJava3Dでなく、Graphics2DやJava3Dが出てきてるの?



914 名前:911 mailto:sage [2008/11/12(水) 01:30:51 ]
>>912
なんでできてるの?

915 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:46:11 ]
>>913
おまえは、勉強の、やり直し!

916 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:16:13 ]
>>915
何の勉強。。
コンポーネント、コンポーネントって言ってるけど、
何を指してるか意味不明だし、なんでGraphics2DやJava3Dと異なる軸が
出てくるのか分からないから、聞いてみただけなんだけど。
あほらしいから、もういいや。

917 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 04:16:23 ]
>>916
コンポーネントを分かってないようだけど大丈夫か?
もう一回Hacksを読み直した方がいいかもな。

918 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 05:49:41 ]
>>911
JTextFieldにマウスもっていってコントロール押しながらクリックしてみろ!

919 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:26:55 ]
>>893
だれか内容を要約してくれないか


920 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:38:54 ]
Sun が SwingX への資金を打ち切りやがった。
Sun は Swing から JavaFX にシフトするみたいだ。
Swing は見捨てられた。Swing はもう終わりだ。

みたいな感じ?



921 名前:デフォルトの名無しさん [2008/11/12(水) 21:46:46 ]
ところでSwingXってなんですか?

922 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 22:02:16 ]
https://swingx.dev.java.net/

923 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 22:22:31 ]
swing labs のプロジェクト全体のことだったんですか。

924 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:20:17 ]
swinglabs.org/ 全体っていったらこっちじゃね?

925 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 02:37:46 ]
じゃ、特定コンポーネント向けのアルゴリズム集の全体ってところですか。
コンポーネント自体じゃなさそうですけど。
使ったことないんですけど、便利そうですね。

926 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 07:41:23 ]
とりあえず「全体」にしたいのなw

927 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 09:06:59 ]
SwingXがペヤングだとしたら
SwingLabsは、まるか食品みたいなもんだ。


928 名前:デフォルトの名無しさん [2008/11/14(金) 09:48:55 ]
おまえ、何年生まれだよw

929 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:37:11 ]
>>920
Java FXって内部でSwingを呼び出してるわけじゃないの?
完全に独自ライブラリ?

930 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:50:17 ]
>>929
SwingLabsで、SUNと外部開発者は協力してたはずなのに、
SUNは一方的にJava FXに都合のいいように、Swingの描画機構を
書き換えやがった、チクショー、もうこねぇよ、って話。



931 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 18:07:20 ]
>>930
どうも。そうするとSwingLabsの人々は変更された機構に合わせて
自分たちのコードを書き直さないといけないのが嫌だということなんだね。

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

SwingLabsの人々にとって死んだと言うことなら話は通るけど

932 名前:デフォルトの名無しさん mailto:sage [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の
最大公約数の機能を提供する事じゃないの?
あんまり凝った機能を作ったとしても普通に載らない気がしないでもない。






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

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

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