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


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

Java低速GUI Swing 5



1 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:50:09 ]
ハードウェアの高スペック化、JavaVMのホットスポットの高速化に伴い、
パフォーマンスの問題は徐々にですが改善されつつあります。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。

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 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:51:02 ]
参考スレッド
クライアントサイドJavaどうよ?
pc3.2ch.net/tech/kako/1002/10021/1002160815.html
クライアントサイドJavaどうよ?:part2
pc2.2ch.net/tech/kako/1032/10326/1032665721.html
クライアントサイドJavaどうよ? part3
pc2.2ch.net/tech/kako/1045/10458/1045891783.html

Java 高速GUI SWT
pc5.2ch.net/tech/kako/1032/10324/1032448424.html
Java 高速GUI SWT 2
pc5.2ch.net/test/read.cgi/tech/1068349883/

FrontPage - java
www.wikiroom.com/java/

3 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:51:38 ]
[ja]
WisdomSoft - JAVA入門
wisdom.sakura.ne.jp/system/java/javax.html
developerWorks - マルチスレッド化Javaアプリケーションの作成
www-6.ibm.com/jp/developerworks/java/010427/j_j-thread.html
[en]
Creating a GUI with JFC/Swing
java.sun.com/docs/books/tutorial/uiswing/
Threads and Swing
www.math.cuhk.edu.hk/TechInfo/JavaTutorial-2/ui/swing/threads.html
The Last Word in Swing Threads
java.sun.com/products/jfc/tsc/articles/threads/threads3.html
Painting in AWT and Swing
java.sun.com/products/jfc/tsc/articles/painting/

4 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:52:38 ]
書籍
赤坂玲音著「Javaアプリケーション作成講座 - Swingプログラミング徹底攻略」
www.amazon.co.jp/exec/obidos/ASIN/4839913862/

大村忠文著「Java GUIプログラミング」Vol.1〜3
www.amazon.co.jp/exec/obidos/ASIN/4877830510/
www.amazon.co.jp/exec/obidos/ASIN/4877830529/
www.amazon.co.jp/exec/obidos/ASIN/4877830537/

サンソフトプレス「グラフィックJava2」AWT編、Swing編(上)(下)
www.amazon.co.jp/exec/obidos/ASIN/4756134513/
www.amazon.co.jp/exec/obidos/ASIN/475613582X/
www.amazon.co.jp/exec/obidos/ASIN/4756135838/

Java実践プログラムによるデザインパターン入門講座
- Swingプログラムで体得する23のパターン
www.amazon.co.jp/exec/obidos/ASIN/4894712563/

5 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:53:18 ]
Creating a GUI with JFC/Swing
java.sun.com/docs/books/tutorial/uiswing/

為政敦男氏が1998〜1999年にSwingExamplesを書き、
オリジナルサイト消滅後もミラーされ続けている。
5年以上前にSwingの素晴らしい使い方を示してくれた為政さんに感謝します。
www.senun.com/Left/Programming/Java_old/Examples_swing/JTableExamples1.html
www.physci.org/codes/tame/

6 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:53:53 ]
SynthLaF
ユーザーを虜にするものは機能だけではありません。
見た目のCoolさでアピールしてはいかがでしょうか。
(雄の孔雀が美しい尾羽を持つように:-))
[ja]
IBM 進歩したSynth 最新のSwingルック・アンド・フィールを使うとカスタムUIが手軽に
www-6.ibm.com/jp/developerworks/java/050318/j_j-synth.html
[en]
Sun The Synth Look and Feel
www.javadesktop.org/articles/synth/index.html

7 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 12:14:56 ]
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
www.eclipse.org/
www.eclipse.org/vep/

8 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 15:36:12 ]
>>6
Synthって情報少ないよなぁ・・・

9 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 18:49:02 ]
JPanelを任意の個数だけ、for文使って作ることって、できるんでしょうか?

10 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 18:59:41 ]
出来ないと思った理由が聞きたい



11 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 20:08:29 ]
9です。

たとえば、JPanelを10個まとめて作りたいとき

for (int i = 1; i <= 10; i++){
String s[i] = ("jPanel_"+i);
JPanel s[i] = null;
}

↑みたいに、for文使って一気にJPanelを作りたいですけど、↑じゃうまくいかないので
他に方法があれば教えていただければと…

12 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 20:21:33 ]
言語仕様から学び直せ。
sは2回宣言されています。

13 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 20:35:27 ]
>>12
s[i] ってのは変数名には使えないし、
配列なんだとすれば宣言と同時に配列アクセスしてるし……

>>11
JPanel[] panels = new JPanel[10];
for(int i = 0; i < panels.length; i++) panels[i] = new JPanel();

14 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 13:55:09 ]
この質問、初心者質問スレで読んだ気がするな。

15 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 16:20:46 ]
マウス側面の拡張ボタンをJavaで使う方法おしえて。

16 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 16:34:36 ]
マウスイベントって3つまでしかサポートしてなかったような
5.0からはマウスのボタンの数は取得できるがそれを使ってどうのこうのはできないはず

17 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 17:43:40 ]
返答どうもです。

やっぱ無理か…。
5ボタンマウスって、あんまり使われてないのかなあ。

18 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 17:50:42 ]
ほとんどのアプリは3ボタンだし、ただのショートカットがほとんど

ショートカット以外の使われ方してるアプリってどれだけある?


19 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 18:02:27 ]
ボタン5個も何に使うの?

20 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 19:06:46 ]
ブラウザやファイラで「進む」・「戻る」に便利に使ってるよ。
でも5ボタン必須のアプリなんて、ちょっと思い当たらない。

ホイールでスクロールみたいに、あれば便利って程度かな。



21 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 19:28:11 ]
ホイールは定着したけど、5ボタンは流行らなかったね。

22 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 19:37:48 ]
まわりの奴におしえても、使わないんだよね。ホイールは使うようになったけど。

23 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 19:44:55 ]
3ボタンでも真中は特別使い道がない。

24 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 20:59:58 ]
進む戻るだけは俺も使ってるけどあれはショートカット効果だけだからなぁ
4以上のボタンを使ってるわけではないだろう

25 名前:デフォルトの名無しさん [2006/10/20(金) 22:03:08 ]
>>23
ネトゲではよく使うお

26 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:38:17 ]
>>23
自動スクロールに対応してればちょくちょく使うよ。
あとFirefoxだとタブを簡単に閉じられるしね。

27 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:56:14 ]
Firefoxだと通常のクリックが真ん中ボタンといえるくらいだ
考えて左クリックを使う

28 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:57:34 ]
そういやそうだね
いつも新しいタブで開いてるや

29 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 23:09:59 ]
>>25
5ボタンも、そんなところでしょ。

30 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 23:33:46 ]
7ボタンとチルトホイールはどうだろう?



31 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:12:53 ]
ところで、ゲームパッドに標準で対応してほしい。あとタブレット

32 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:16:50 ]
ゲームパッドってどんなOSにも標準で対応してたっけ?
積集合OSであるJavaにはそういう限界があるよ。
タスクトレイやブラウザとかがJava6に出てきただけでも感慨深い。

33 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:42:22 ]
対応していないメジャーOSはないはずだし
一部だけで動く実装でも1.4以降は投入されてるから理由にならん


34 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:44:21 ]
MSXのようにパッド0番目はキーボードとかいう実装にしておけば
キーボードとパッド両対応作る手間がないし未対応OSであっても問題ないんじゃね?


35 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 05:42:06 ]
あ、1chip MSXの入金忘れてた

36 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:38:55 ]
ちょ、全然スレ違いw

5ボタンなんてケチくさいこと言わず、101個ボタンつけたらどうよ?
で、ボタン押すと文字が入力されるようにしておくの。
そしたらキーボード要らないじゃん。

37 名前:デフォルトの名無しさん [2006/10/21(土) 23:46:22 ]
>>36
それ、キーボードじゃん!!!

あー、食いついちゃった。orz

38 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:46:45 ]
Choiceで選択してButtonで実行てどうやるんですか?

39 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:03:03 ]
ChoiceとButtonを用意してButtonのActionListenerに処理を実装すればいい。

40 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:25:35 ]
Choiceってのはなんだ?



41 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:43:33 ]
public void itemStateChanged(ItemEvent f) {
String a = (String)f.getItem();
if( a.equals("A") ){
}
else if( a.equals("B") ) {
}

}
public void actionPerformed(ActionEvent e) {
if( e.getSource() == b1 ) {

}
}

処理の部分でどれをチョイスしたか分かるようにしたいんですが

42 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 16:02:55 ]
>>41
ButtonGroupを利用しなされ
ButtonGroupに、JRadioButtonをaddしておき、
actionが起こったときに、ButtonGroupからgetSelection()で選択されたものを取ればOK

43 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 06:13:08 ]
AWTは1コンポーネント=1ウインドウだからシステムリソースを食いまる問題って解決されたの?

44 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 07:04:53 ]
誰も使ってないのに何が問題なの?











45 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 12:41:50 ]
AWTはスレ違い

46 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 05:13:03 ]
>>43
AWTコンポーネント自体使うことが推奨されてないから解決されることはない。

47 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 08:24:56 ]
SWYスレっていつの間にかなくなってたんだね

48 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 12:39:25 ]
>>46 誰が推奨してないの?

49 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 18:39:53 ]
おれおれ

50 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 01:50:11 ]
ゴスリンから大切なお知らせとお願いです。
古い年式のウィジェットを探しています。
ネイティブにピアを生成するタイプで、ご覧のバージョンの JDK の引き取りや、アップデートを行っています。
対象 JDK は万一の場合、訴訟事故に至るおそれがありますので、直ちに使用を中止していただき、
至急、ご連絡をお願い申し上げます。

      ____  . .| |
    /\二___\.. | |
    |\/‖   '''.|  | |    DUKE
    | |  ‖┌┐ .|  | |     ↓
    | |  ‖└┘ .|┌|=.|ヽ_ ゝノ゛
    | |  ‖    .|二| |回_  ●>
    | |  ‖    .|└|=.|/    〆
    |ミ.|  ‖    .|  | |
 |\ノ.|ミ.|  ‖    .|  | |
 |_》 | |  ‖    .|  | |
    \|_‖____.|  | |



51 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 08:14:49 ]
旧い入門書だとSwingすらサンプルがねぇw

で、SWTスレどしたのよ。

52 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 19:57:31 ]
こっちの方が良かったかな…。

Java SE 6ではActionにSELECTED_KEY、DISPLAYED_MNEMONIC_INDEX_KEY等が追加されたんだね。
今まで何でないのか不思議だった。AbstractButtonにもHideActionTextプロパティが追加されてる。

53 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 00:43:50 ]
質問なのですが
ttp://www.gremlin.jp/yada/java_JTable/SimpleRowHeader.htm

↑のアプレットみたいに、ウィンドウサイズを変えたら、そのウィンドウと同じサイズにJTable
をリサイズするにはどうしたらいいのでしょうか?
ComponentListenerを使うのでしょうか?

54 名前:デフォルトの名無しさん [2006/11/04(土) 01:04:21 ]
>>53
よくわかんないけど、普通に貼り付ければこうなるんじゃないんだっけ?
BorderLayoutでCenterに配置するとか。

55 名前:53 mailto:sage [2006/11/04(土) 01:41:03 ]
普通に貼り付けただけだど、JTableがリサイズされないで、JFrameの大きさだけが
変わってしまいます…

ウィンドウサイズと同じサイズにリサイズさせたいのですが、そのやり方わからなくて…

56 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 01:45:56 ]
>>55
レイアウトマネージャをどう使っているか次第。
NullLayoutなどだと、座標で配置されているから、ロジック書かないとリサイズはされない。

>>54が書いているように、BorderLayoutでCenterに配置するのが普通。


57 名前:53 mailto:sage [2006/11/04(土) 10:32:33 ]
>>54,56さん

ありがとうございまいた。私の知識不足でした。レイアウトマネージャをBorderLayoutにして
CENTERに配置すればできました。

できなかった理由としてFlowLayoutとGridLayoutを使っていたためだと思われます。
レイアウトマネージャについて勉強してきます。

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

58 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 11:49:30 ]
NetBeans使うというのも手

59 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 12:58:25 ]
ネット上のxxxx.jpgなどの画像ファイルをGUIに表示させることって出来ますか?

60 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 13:02:45 ]
URLクラスからopenStreamすればいいよ



61 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 13:05:08 ]
とおもったが別にImageIO.readはURLをそのまま受け取れたなw

62 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 14:44:06 ]
表示させるだけでいいなら、JLabelでHTML書けばOK。

63 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 14:49:38 ]
JavaのHTMLってどこまで準拠してんの?

64 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 15:11:41 ]
あんまり知らないけど、信用してはいけないことは知ってる。
実装がかなり前に止まっているとか。

65 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 16:26:11 ]
Swingアプリで、「HTMLのテーブルみたく表示したいんだけど。」
と聞かれて、面倒くさいから、「setTextでHTMLをセットするとOK」と答えた。

で、setTextするための、HTMLを文字列でセッセと作っていたのが、そのうち
Velocityで雛形作って、セットするようになっていた。

ほとんど、Webアプリ

そのうち、IEだと、こう表示されるのが、うまくいかないとか言われそう。

66 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 16:38:25 ]
JEditorPane#setText()したものを、HTML表示にすることってできます?
バージョン情報を表示するに、書式をいろいろ変更して使いたかったんですけど、
なんかHTMLがそのまま表示されます。
ファイルにしてsetPage()使わないとダメなのかな。。
仕方ないので、今はJTextPaneを使って、ちまちま書式設定して出してます。

67 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 17:00:17 ]
>>43
つttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/awt/1.3/designspec/lightweights.html

68 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 17:05:30 ]
>>66
自己レス。JEditorPane#setContentType("text/html")を使えばいいのね。

69 名前:デフォルトの名無しさん [2006/11/04(土) 22:17:17 ]
質問です。
JTableの1行目のcolumnを1列目に縦に表示するには、どうすればよいのでしょうか?

70 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 22:59:45 ]
>>69
意味不明。



71 名前:69 [2006/11/04(土) 23:09:15 ]
>>70
すいません。
エクセルみたいに行番号(1,2,3..)列名(A,B,C...)のような表示をつくりたいのですが…

72 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 23:10:18 ]
>>69>>71の内容につながりが見当たらない件。

73 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 23:18:16 ]
列ヘッダ(A,B,C...)は、普通にJTableにある機能でできる。
分からなければ、JTable自体を基礎から勉強すべし
java.sun.com/docs/books/tutorial/uiswing/components/table.html

行ヘッダ(1,2,3...)は、JTableにはそんな機能ないから、それっぽく見せる実装をしなければならない。
>>5にある、為政氏のサンプルにある。
www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html


74 名前:69 [2006/11/04(土) 23:30:21 ]
>>73

JTableにはもともとないんですね…
サンプル大変参考になりました。

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

75 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 22:21:18 ]
なんか質問な〜い?ただいまSwing勉強中。

76 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 00:33:11 ]
>>75
システムフックの方法が知りたいけどSwingの話題じゃないので黙っておく

77 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 00:44:13 ]
質問
フォーカストラバーサルサイクルルートについて詳しく

78 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 09:04:51 ]
>>77
初耳だ。ちらっと見た感じだと、
TABを押した時なんかの、
次にフォーカスを与えるコンポーネントを探すクラスかな?
今まで使う場面が出たことがないけど、
FocusTraversalPolicyを継承してクラスを作れば、
コンポーネントの値とかでも順序を付けられたりするみたい。
質問が具体的なら、もう少し調べてもいいが。

79 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 13:27:23 ]
JTableの中のセルにJPanelいれたときとかこれいじらんとだめだよな

80 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 19:38:24 ]
>>78
具体的じゃないけど便乗で
5.0 -> 6.0 でフォーカス関係で変わった事ってまとめてるとこないかな?
5じゃ動いてたコードが6で動かなくなっちゃったから・・・



81 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 19:54:29 ]
>>79
なるほど。

>>80
ごめんなさい、わかりません。
思ったとおりにリスナーが呼ばれないとか、そんな感じですか?

82 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 22:00:45 ]
>>80
まじか
そのへんまではまだ詳しく調べてないけど困るな
正式版が出たらチェックしようという状態だったがSwingに大幅に手が入ってるのなら別だ
Sunなにやってるんだよ〜
1秒でわかるSwingのバグつきを夏にリリースしてたし

まぁ5.0でJavaSoundの挙動が大幅に変更されたりとか
日本語印刷が通らないあたりでおかしい気はしたが

83 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 22:14:34 ]
>>82
今日たまたまJavaで印刷のサンプル動かしたら、
DocFlavor.INPUT_STREAM.AUTOSENSE を使わないと、テキストが印刷できなかった。
しかも日本語文字化けしてるし。これは当たり前?5.0から?
TEXT_PLAIN_HOSTとかいろいろ試したけど、こっちはエラーが出た。
あと、印刷が終わっても、紙が排出されないんだけど、最後に何かする必要あります?
今は、DocPrintJob#print(○,○); で終わってます。

なんか印刷大変そうだなぁ。。。

84 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 22:37:08 ]
>>83
それはどのVMで動かした話?

85 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 22:50:17 ]
>>84
5.0での出来事でした。下の記事を参考にしました。
ttps://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jps/spec/jpsOverview.fm4.html#998638

86 名前:デフォルトの名無しさん [2006/11/06(月) 23:20:31 ]
質問です。
JLabel→JLabelのようにJLabelからJLabelへ矢印を表示するには
どうすればよいのでしょうか?

87 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 23:26:22 ]
>>86
質問の意味がわかりませんが。。。
とりあえず「→」を書きたいなら、
真ん中に「→」を書いたJLabelを置いてみれば?矢印の画像でもいいけど。
もし矢印が長かったり、角度が中途半端なのであれば、drawLineで自分で書く。

88 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 23:41:13 ]
>>85
updateナンボかが問題

89 名前:86 [2006/11/06(月) 23:44:14 ]
>>87さん
配置してあるJLabelどうしを矢印で結んだ図を表示させたかったのですが
そういった場合は自分で書くしかないんでしょうか?
JLabelの位置を計算して、矢印を表示することはできないんでしょうか?
よろしくおねがいします。

90 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 00:13:12 ]
>>83
印刷APIはサービスが追加されたけど、今までのも動くよ
ただし、日本語問題が解決されたのは今年の春くらいのバージョンから
1.5年ほど日本語バグは放置されていた

そしてそのバグが直ったと思ったらSwingにバグがついたというわけだ
正確にはWindows版のLAFだけだからすべてではないがWindowsって一番ユーザー多いから影響もでかい、と
NetBeans立ち上げればおかしいのはすぐにわかるはずなのにそれに気がつかなかったSunちね



91 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 01:12:43 ]
>>89
なんだかんだとコンポーネントが追加されてるJPanel上の特定のJLabel間に線引きたいって事?

それならJLabelをaddするときに線を引きたいJLabelだけのコレクションを別に持っておいて自分で矢印を描画しないとだめだね。
常に次ぎが右横とか規則があるならJLabel継承した横に矢印付け足す描画をするJLabelWithArrowとかでもいいのだろうけど。


92 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 02:24:57 ]
>>89
噂では、JLabelなんか使わないで、全部自分で描いた方がラクだって話もあるよ。

93 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 04:40:58 ]
SWT だとなんかそういう軽量コンポーネントがある。

94 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 07:48:31 ]
>>86
グラフ書きたいなら、JGraphとかSWTのdraw2dとか使った方が楽だよ。
ttp://www.jgraph.com/
ttp://www13.plala.or.jp/observe/#draw2d
グラフって言っても、XYグラフのグラフじゃなくてグラフ理論のグラフだからね。

95 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 09:35:29 ]
>>94
JGraphなんてものがあるのか。知らなかった。
LGPLの他に商用ライセンスがあえてあるってことは、商用で使う場合はお金かかる?
無知なので質問ですが、SwingとSWTって混ぜて使ったりするの?
水と油だと思っているのですが。。。

96 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 12:30:07 ]
>>95
JGraphは商用利用も含めてフリー。LGPLだし。
一方JGraph Layout Pro というのがあって、JGraphの高機能版。こっちは有料。
JGraphだとノードの自動レイアウトが出来なかったりと、いろいろ不便。
他にもこういうのもあるけどね。
ttp://openjgraph.sourceforge.net/
こっちならレイアウトできたり、グラフに制約(巡回不可とか)かけられたりできる。
ただ、開発が4年以上止まっているけど。

97 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 12:35:17 ]
自前で描画しとけ


98 名前:86 [2006/11/07(火) 15:37:54 ]
>>91さん
規則性はないので、その際は手作業なんですね…
ありがとうございました。

>>92さん
それは
ttp://homepage1.nifty.com/algafield/JavaGUIFaq19j.html
このページにあるQ8.6にも、書いてある通り描く方がいいてことでしょうか?

>>93さん
SWTではあるのですか…

>>94さん
JGraphというのがあるのですね!これについて調べてみようと思います。
表示したいのはちょうど、グラフ理論を使ったものなのでぴったりだと思います。

皆さんありがとうございました。
Java2DかJava3Dで描画しなきゃいけないかもって思ってました。それ以外の方法もあるのですね。

99 名前:96 mailto:sage [2006/11/07(火) 16:09:10 ]
JGraph使うのなら、標準の機能ではレイアウトできないことを覚悟しておかないと
後でハマるよ。
ここでいうレイアウト機能ってのは、適当にノード並べてエッジ引いた後で、
ボタン1クリックでノードやエッジの位置を設定し直してくれる機能。
俺の場合、SWTのdraw2dで提供されてるレイアウト機能だけ使って
強引に何とかしたけど。

100 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 16:52:14 ]
グラフ/ネットワーク構造の描画コンポーネントが欲しいんならJGraph以外にもいくつかある
ttp://jung.sourceforge.net/index.html
ttp://www.nanoworks.nl/
デモとかサンプル見て好きなの使ってくれ.



101 名前:96 mailto:sage [2006/11/07(火) 17:12:49 ]
>>100
いつの間にか、JUNGが使えるライブラリになってるね。
2年前にこの手のライブラリについて調べてたんだけど、
当時のJUNGはグラフの編集機能がなくて、使うのをあきらめた覚えがある。

102 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 17:29:39 ]
>>101
4年前に全部自前でやった事がある。
あの頃と比べたらオープンソースなライブラリがよりどり緑でありがたい。


103 名前:86 [2006/11/07(火) 18:31:17 ]
>>99さん
ご忠告ありがとうございます。

104 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 23:24:14 ]
>>98
別にSwingでもNetbeansには普通にそういうモデリング描画用
ライブラリはあるわけだが。Graph Libraryというのがね。

105 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:36:43 ]
Graph Libraryは、NetBeansのほかのライブラリに依存してるから、NetBeansの外で使うのはきついよ。
NetBeansプラットフォームで作っちゃえばいいんだけど。

106 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:37:44 ]
Javaがどんなに疎結合を頑張っても、IDEがそれを否定するのな

107 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 01:17:29 ]
疎結合っていうのは、業務アプリの各画面を独立させましょうという程度でしかないからな。
GUIのひとつの画面は、どうしても密結合になる。

108 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:04:36 ]
jarファイルを実行したとき、そのjarファイルが置かれているディレクトリの
パスを取得するにはどうしたらよいでしょうか?


109 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:32:48 ]
>>108
クラスパスルートがたくさんある場合はどう解釈するの?

110 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:42:27 ]
>>108
実行時のディレクトリを知りたいのかな?
String path;
path = new File(".").getAbsolutePath();
とか。



111 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:58:03 ]
>>110
それなら、System.getProperty("user.dir")の方がよくね?


112 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 21:50:28 ]
設定ファイルをjarと同じディレクトリに置きたいんだよ。
フォルダごと移動させれば他のPCに環境をそのまま移せるように。
設定ファイル以外にもいろいろ置きたいからjarのパスが知りたい。

113 名前:108 mailto:sage [2006/11/10(金) 23:31:12 ]
皆様ありがとうございました。
jarファイルを実行したときに、jarファイルと同じディレクトリにあるファイルで
拡張子が.zzzのもので、最終更新日が最新のものを自動的に読み込むという処理が
必要で、上記のような質問をさせて頂きました。

解決致しましたので、ご報告致します。
File f = new File(".") ;
String[ ] files = f.list( ) ;

これで実行ディレクトリのファイル一覧を配列に取得することができました。
ありがとうございました。

114 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 23:40:31 ]
そのやり方は本当は危険なんだけどね。

115 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 23:42:23 ]
OS(というかVM)に依存するんだよね。


116 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 23:48:06 ]
GUIアプリならコマンドラインで打つようなことも無いのかな?
俺なら保険的に<md5>.md5みたいなファイル用意して
確実に実行元がカレントディレクトリである必要があるようにするかも

117 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 04:15:14 ]
>>108
亀レスだけど、System.getProperty("java.class.path")
sunのVM限定だと思う。
他の方法としてはJARファイル内にリソースを格納して、
this.getClass().getClassLoader()#getResourceでURLを取得するとか。

118 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 09:24:40 ]
>>117
java.lang.System#getProperties()のjavadocに明記されてるし、
J2SE5.0の仕様の上ではVMによらず使用可能とみていいんじゃないかな。

119 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 16:24:32 ]
resources などというディレクトリを作ってそこにクラスパスを通し、
そこに設定ファイルを置いてファイルを取得

120 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 17:20:18 ]
resources などというディレクトリはどこに作られるのかと。
jarと同じディレクトリに作りたいでしょ?
でも、いちいちクラスパス通したくない。ではjarのパスはどこ?
というお話し。



121 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 17:31:55 ]
jar ファイルを実行、とあることから、
関連するライブラリなどへのクラスパスは jar ファイルのマニュフェストに記述されると勝手に推測。
そこに resources への相対パスも追加すればいいんじゃまいかと思ったが
そもそも読み込むファイル名は決まっていないのね。

122 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 18:22:59 ]
俺がこれまで使ったJavaにおける設定ファイルの設計はこんなもんかな。

1.CLASSPATHから読み込む方法。
一番安易だが、配置に柔軟性が乏しい。

2.環境変数XXXX_HOMEを設定させる方法
起動スクリプトや実行ファイル内で設定取得されることが多い。
Java 5から環境変数の取得が復活しているので、Java内で取得可能になった。
CLASSPATHによらず、自由に構成管理できる。(XXX/conf/配下等)
広く使われており、JAVA_HOME. ANT_HOMEなど実例多数。

3.ユーザのホームディレクトリからの相対パスを利用する方法
複数のユーザで使うソフトウェアに適する。
Windowsの場合、ApplicationData/XXX配下、Unixの場合.xxx/配下などが使われる。プログラマが構成をデザインしないといけない。

4.Preferences APIを使う方法
Java 5から提供される標準API。
実体は、Winはレジストリ、Unixは.java配下に作られるが、API利用者は意識する必要がない。

123 名前:122 mailto:sage [2006/11/11(土) 18:42:23 ]
追加

5.カレントディレクトリと1.の併用
log4jなどいくつかのソフトウェアで採用されている。
ツール系は、テンポラリに設定を変えたい時があるので、
この方法は便利。

結局、作成するアプリの性質によってどうデザインするか変わってくるよ。

124 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 18:44:20 ]
Swingとまったく関係がないことについて

125 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 18:50:01 ]
まったくってことはないな。直接は関係ないが、。
誰だよ、スレ違いの質問投げた奴は。

126 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 18:53:04 ]
よーし、おねえさん、がんばってSwingしちゃうわよー

127 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 19:03:57 ]
スイングスイング二木ゴルフっすか?>>126


128 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 19:15:22 ]
もう少し書こうかと思ったけどスレ違いじゃ仕方ないな。

129 名前:デフォルトの名無しさん [2006/11/12(日) 13:58:33 ]
www.uploda.org/uporg577307.jpg.html

これがふつー?だったらjavaやめる。
2000で1_4_2です。
ただフレームを表示するだけでも同じ症状がでるのですが。

130 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 14:03:06 ]
あきらかに異常だね



131 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 14:11:35 ]
>>130
やっぱりそうなのか。
thx

PCが悪いのかな?

132 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 14:31:17 ]
ソース

133 名前:デフォルトの名無しさん [2006/11/12(日) 14:38:42 ]
javaってvistaでも使える?

134 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 15:05:15 ]
>>132
import javax.swing.*;
import java.io.*;
import java.awt.Container;
import java.awt.*;

class TinyMemo {
JFrame frame;Container com;
TinyMemo(){
framereset();com = frame.getContentPane();
Paneles paneles = new Paneles();com.add(paneles.getBar(),BorderLayout.NORTH);
JTextArea text = new JTextArea();com.add(text,BorderLayout.CENTER);frame.setVisible(true);
}
private void framereset(){
frame = new JFrame("メモ帳");frame.setSize(300,400);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){TinyMemo tiny = new TinyMemo();}
}
class Paneles extends JPanel {
JMenu menu;JMenuBar menubar;
JMenuItem save;JMenuItem read;JMenuItem delete;
Paneles(){
menu = new JMenu("nya");menubar = new JMenuBar();
delete = new JMenuItem("delete");save = new JMenuItem("save");read = new JMenuItem("read");menubar.add(menu);
menu.add(delete);menu.add(save);menu.add(read);
}
JMenuBar getBar(){return menubar;}
}

こんなもんソースいらんだろ思ってさらさんかったんだが
色々変わってたりついてるけ症状はそんままだからこれで
改行が多すぎる言われまくったからかえたらすげーよみにくい。

135 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 16:24:14 ]
>>134
まだ初心者か?
Swingにはメニューバー用の専用メソッドがあるよ
他にもクラス設計など指摘したいところがたくさんあるがまあいいか

136 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 22:03:15 ]
>>134
最低限、改行して見やすいコードをさらせ。

137 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 23:04:37 ]
>>134
frame.setJMenuBar()
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/JFrame.html#setJMenuBar(javax.swing.JMenuBar)

138 名前:デフォルトの名無しさん mailto:sage [2006/11/13(月) 11:11:58 ]
>>135,137
わ、サンクス!
わざわざありがとうございます。
>>136
改行多すぎる言われて修正しまくってこんなんなってしまったんです。orz
最初は普通だったのに。


139 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 15:51:02 ]
>>138
2レスに分割するか、
レス消費に気を配っているorかなり長いソースの場合はアップローダを利用。

140 名前:デフォルトの名無しさん [2006/11/15(水) 00:13:45 ]
BOCのSpreadみたいなコンポーネントはないのですか?
JTableの縦横にヘッダがあってExcelみたいな感じのやつ。



141 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 11:37:56 ]
JSplitPaneで、初めに片方を閉じておくことってできます?
JSplitPane#setDividerLocation(9999)とか無理矢理やればできるのですが、
一応できるのですが、キレイな方法で。

JSplitPane#getMaximumDividerLocation()で値を取得して、
それを設定する方法も試しましたが、
フレームが起動するまでは正しい値が取得できないんですかね。ダメでした。

142 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 13:29:10 ]
>>141
JSplitPane#setDividerLocation(Integer.MAX_VALUE) とかやっとけば

143 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 14:00:41 ]
>>141
pack()読んだ時点で確定されない?

144 名前:141 mailto:sage [2006/11/15(水) 15:48:34 ]
>>142
9999よりかはキレイですね。こっちにしておきます。どうもです。

>>143
pack()は使ってないので、フレームを表示するので確定しないようです。

145 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 17:23:54 ]
SwingつかうならPackは必須だと思うのだが

146 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 17:50:42 ]
pack()だけじゃサイズが確定できないレイアウトもあったような。
setPrefferedSize()とかJFrame#setSize()とかしないと、親コンポーネントが最小サイズになったり。

147 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 17:57:32 ]
それレイアウトマネージャ勉強しろとしかいえない

148 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 19:39:12 ]
マウスカーソルの絶対座標を簡単に取得する方法ってある?


149 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 19:55:30 ]
>>148
java.awt.Point p = java.awt.MouseInfo.getPointerInfo().getLocation() ;
とか?1.5以降で.

150 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 19:59:26 ]
さんきゅ!
助かったー!



151 名前:148 mailto:sage [2006/11/15(水) 20:00:35 ]
>>149
さんきゅ!
助かったー!

152 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 19:51:47 ]
質問です。
Java2DとSwingに関連する内容なのですが、
JPanalを継承したクラスを、JTabbedPaneにaddして、そのクラスのpaintメソッドで
Java2Dの描画を行っています。
そこで、
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
AffineTransform af = new AffineTransform();
g2.setTransform(af);
以下描画...
}
とすると、ウィンドウサイズを変更したり、再描画させたりした時に描画するものの位置がずれます。
具体的にいうと、jTabbedPaneのタブの大きさだけ描画した物が上に移動します。
原因を調べてみると、どうもAffineTransformオブジェクトをGraphics2Dに登録すると、
座標計算の基準点がタブに登録したJPanel派生クラスの領域の左上ではなく、
jTabbedPaneの領域(タブ表示域も含んだ)の左上に、再描画の時に変更になってしまうようなのです。

これはJavaランタイムのバグなのでしょうか。ちなみにJavaのバージョンは1.5.0_08です。

153 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 20:23:00 ]
よくわからんが
paint()じゃなくて
paintComponent()をオーバーライドしなされ
あと1.5.0_08はSwingにバグがあるので1.5.0_09にしたほうがいい

154 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 09:59:06 ]
>>152
問題が再現するコンパイル可能なソースを出した方がはやいと思うよ.

155 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 11:40:38 ]
>>154
public class foo extends JApplet {
private JPanel jContentPane = null;
private JTabbedPane jTabbedPane = null;
private JPanel jPanel2 = null;
public foo() { super(); }
public void init() {
this.setContentPane(getJContentPane());
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJTabbedPane(), BorderLayout.CENTER);
}
return jContentPane;
}
private JTabbedPane getJTabbedPane() {
if (jTabbedPane == null) {
jTabbedPane = new JTabbedPane();
jTabbedPane.addTab("パネル2", null, getJPanel2(), null);
}
return jTabbedPane;
}
private JPanel getJPanel2() {
if (jPanel2 == null) {
jPanel2 = new Canvas();
jPanel2.setLayout(new GridBagLayout());
}
return jPanel2;
}
}

156 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 11:42:08 ]
class Canvas extends JPanel {
public Canvas self = this;
public Canvas() {
this.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent arg0) {
self.repaint();
}});
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.clearRect(0, 0, this.getSize().width, this.getSize().height); //画面を一度クリア
AffineTransform af = new AffineTransform();
af.setToTranslation(100, 0);
g2.setTransform(af);
g2.draw(new Line2D.Float(10,50,20,50)); //x軸
}
}
こんなソースになります。マウスクリックすると短い横線の位置がタブの高さ分下に下がります。
ウィンドウサイズを変更すると元に戻り、またクリックすると位置が下がります。

157 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 21:00:04 ]
>public Canvas self = this;
すまん,うけたw

158 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 21:35:16 ]
>>155
//g2.setTransform(af);
g2.transform(af);
理由はAPI説明のGraphics2D#setTransformの項をよく読むこと。

ちなみに、内部クラスから外側のクラスのインスタンスを参照したいときは、
Canvas.this.repaint();
のように「外側のクラス名.this」と書けば、selfのように自分で持っていなくてもいい。
ただし、外側のクラスが匿名クラスの場合は名前がないため、この書き方はできないので、
別の手段が必要だが。その中にはself=thisのような方法もとりうる方法のひとつではある。

159 名前:157 mailto:sage [2006/11/20(月) 21:41:14 ]
笑っただけだと悪いので… Canvas#paintComponent() を以下のように
すれば何が期待通りになって,かつ何が起きてるのかわかると思われ.
# 初回描画時とrepaintでの描画時の出力を比べてください.
public void paintComponent (Graphics g){
  Graphics2D g2 = (Graphics2D) g;
  AffineTransform originalTransform = g2.getTransform();
  System.out.println("translate (x, y) = ( " +
    originalTransform.getTranslateX() + ", " +
    originalTransform.getTranslateY() + ")");

  g2.clearRect (0, 0, this.getSize().width, this.getSize().height);
  originalTransform.translate(100, 0);
  g2.draw (new Line2D.Float (10, 50, 20, 50));
}


160 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 13:42:22 ]
ありがとうございます!
次のようにしたら解決できました。
Graphics2D g2 = (Graphics2D)g;
g2.clearRect(0, 0, this.getSize().width, this.getSize().height); //画面を一度クリア
AffineTransform af = g2.getTransform();//new AffineTransform();
System.out.println("translate (x, y) = ( " +
af.getTranslateX() + ", " +
af.getTranslateY() + ")");
af.translate(100, 0);
System.out.println("translate (x, y) = ( " +
af.getTranslateX() + ", " +
af.getTranslateY() + ")");
g2.setTransform(af);
g2.draw(new Line2D.Float(10,50,20,50)); //x軸
タブにした状態などの色々な状況によって、Graphics2Dの変換行列が自動的に辻褄をあわせてくれていたんですね。
だからg2.getTransform();としてAffineTransformオブジェクトを取得してそれを使うべきで、
さらにそれ以後の座標変換も相対的な変換にすべきだったんですね。
よく分かりました。ありがとうございます。



161 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 13:51:45 ]
それにしても、マウスクリックした時と初回描画時やウィンドウサイズを変えたりした時で描画領域の
原点の位置が変わってしまうなんて、Swingって妙な仕様ですね・・・。

162 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 16:39:27 ]
>>161
なぜにそんなにsetTransformを使いたがるんだろうか。
setTransformはgetTransformで保存した元のコンテクストを、
描画終了時にリストアするときにだけ使うべきものとある。
描画時の座標変換にはtransform, rotate, scale, shearを使うだけでいい。
仕様が変というより、使い方が変だと思う。
変な使い方ができうるという点で仕様が悪いのかもしれないけど。

163 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 17:26:03 ]
>>160
Graphics2D g2 = (Graphics2D)g;
g2.clearRect(0, 0, this.getSize().width, this.getSize().height); //画面を一度クリア
AffineTransform backup = g2.getTransform(); // backup
g2.translate(100, 0);
g2.draw(new Line2D.Float(10,50,20,50)); //x軸を描画
g2.setTransform(backup); // restore

164 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 18:03:15 ]
>>162
そうですね。setTransformは今後控えます。
でもそれと関係なしに、マウスクリックした時と初回描画時orウィンドウサイズ変更時で描画領域の
原点位置が変わっていて、それをSwing(AWT?)がg2の変換行列を自動的に変えて無理やりつじつまを合わせている
というSwing(AWT?)の仕様がちょっと気になってしまいました。

165 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 18:35:49 ]
高速GUIのスレがいつの間にかなくなっているな

166 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 21:30:27 ]
HTMLの<table>のように理解しやすいレイアウトはないの?
GridBagLayoutでいいじゃんってのは止めてね。
コンポーネント間隔の割合比率(パーセント)を<table>のように
自動計算でやってくれたりすると楽なんだけど…

167 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2006/11/24(金) 23:14:02 ]
SWTも結局大して早くなかったし、最良のSWTがEclipse自身だもんな。

168 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2006/11/24(金) 23:14:23 ]
×SWTが
○SWTアプリが

169 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 23:47:52 ]
>>166
割合ではないけどレイアウトマネージャほとんど理解しなくても使えるグループレイアウトは?


170 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 00:17:53 ]
日本語でおk



171 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 01:22:34 ]
>>166
XmlGridLayoutでも使ってみれば?

172 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 01:28:22 ]
>>165
需要大してなかったみたいだし、仕方ないね・・・

それにSWTの質問がしたい人はプラグ印スレに行けばいいし、なくても問題ないだろ。
(つーかSWTやる人のほとんどはプラグ印用途な気もするが。)

173 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 06:03:06 ]
Eclipseのプラグイン以外でSWT使うのはアホだな。
Eclipse RCPとか使ったりね。もうバカかと。

174 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 19:09:10 ]
>>173
Eclipse RCPはそんなに悪く無いと思うがな
最近、RadRailsとかAptanaとか実際にそれなりに動くRCPアプリが結構出て来てるし
まあ、Eclipse RCPは実質Eclipseプラグインとほとんど変わらんのだが。

175 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 19:37:08 ]
>>171
ありがたや。ありたがや。

176 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 10:33:18 ]
画面デザインがベタベタなWindows以外許さない、
な案件だと仕方なくSWTで作ることになる・・・
と思いきや、Swingでプロトタイプ作って見せると
やっぱこれで良いですになる今日この頃。

177 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 20:32:43 ]
あるあるwwww

178 名前:デフォルトの名無しさん mailto:sage [2006/11/30(木) 02:43:56 ]
JFrame上のJMenu、JMenuItem、等のフォントをまとめて(同じものに)設定するにはどうしたらいいでしょうか?


179 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 17:33:15 ]
FontUIResource font = new FontUIResource(new Font(...));
UIManager.put("Menu.font", font);
UIManager.put("MenuItem.font", font);

180 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:15:58 ]
>>179
ありがとうございました。



181 名前:デフォルトの名無しさん [2006/12/04(月) 00:49:10 ]
paintComponentとかpaintとかで、
いくつも矩形を描いて中に文字をいれたいんだけど、文字の長さや幅に応じて
自動的に矩形のサイズを調節したり、矩形の表示位置がウィンドウをはみだしたり
他の矩形と重なったりしないように表示位置を自動で調節してくれるようにしたい。
こういうのって相当むずかしいですか?

182 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 00:52:17 ]
推奨サイズとかってわかる?

183 名前:181 [2006/12/04(月) 18:17:08 ]
単語をいくつかならべてそれを矩形でかこみたいんですよ。
矩形の大きさは単語が矩形からはみださないように自動的に適切な大きさ計算して
描かれるようにしたい。

そういう単語が入っている矩形がこれまた何個も出したい。
矩形同士もお互い重ならないように自分で適切な位置を計算してそこに表示されてほしい。
そういうのって簡単にはできないのかな?


184 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 19:10:02 ]
JLabelにボーダーつければ?

185 名前:181 [2006/12/04(月) 20:09:25 ]
全部自分で描きたいんですよ。

186 名前:六尺兄貴 mailto:sage [2006/12/04(月) 20:27:23 ]
TextLayoutとかLineBreakMeasurerとかで調べるとよろし。
結構めんどいよ。.NETは楽なんだけど。

187 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 21:26:44 ]
そこまでして自分でやりたい意図が不明だ。非標準のライブラリを排除したいわけでもないし。

188 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 22:51:21 ]
やりたいことが良く分からないけど、
SwingUtilities#computeStringWidth()とか、layoutCompoundLabel()とか使って
自分で描画するかな

189 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 23:53:35 ]
>>181
>>185

自動でやってくれと言ったり、全部自分で描きたいとか
訳が分かりません。

俺なら、Border設定したJPanelの中にJLabelを埋めていくかな?

190 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 01:35:18 ]
デモのアプレットの中にそういうのあったね。>>181



191 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:50:38 ]
文字を四角で囲みたいだけなら、Font#getStringBoundsで領域取得して計算すりゃいいんじゃないだろうか・・・

192 名前:181 [2006/12/05(火) 19:37:37 ]
>>191

表示する場所を計算すればいいってのは分かるんだけど、
複数の矩形を表示するってことを考えると、計算が複雑になりそうで
できそうもないです。

ちなみに185は私ではありません。

193 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 21:45:16 ]
ひょっとしたら、>>94>>100で挙がってるような
グラフ描画用ライブラリを使った方が簡単かもしれない。
ノードのみ並べて、ノードのサイズをライブラリ任せにすれば(その辺はライブラリ依存だが)
だいたいいけそうな気がする。

194 名前:デフォルトの名無しさん [2006/12/05(火) 23:19:14 ]
>>193

チョチョイとサンプルかいてみてよ

195 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 02:57:57 ]
ちょいちょい

だがあぷろーだに拒否された

196 名前:デフォルトの名無しさん [2006/12/06(水) 10:37:34 ]
JGraphいれようとしてるんだが
Ant必要なの?これ。
インストールできませんdふぁd;sfじゃs

197 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 15:13:55 ]
んなばかな

198 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 20:23:17 ]
つかantの動かない開発環境ってどうよ

199 名前:デフォルトの名無しさん [2006/12/06(水) 20:45:26 ]
JGraphでほんとうにできるのかよ

200 名前:デフォルトの名無しさん [2006/12/06(水) 20:48:44 ]
ほんとうに出来るかどうか、は、何をやろうとしているかに拠る。



201 名前:デフォルトの名無しさん [2006/12/06(水) 20:52:53 ]
たくさんのキーワードをいくつかの分類して
分類ごとに矩形を描いて
キーワードを矩形の中にならべていきたいわけ。
矩形の大きさはキーワードの長さと種類にあわせて決めたいし、
矩形の表示位置はほかの矩形とかさならないように決めたいのよ。

202 名前:デフォルトの名無しさん [2006/12/06(水) 21:36:49 ]
できないでファイナルアンサー?

203 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:40:14 ]
コンポーネントのサイズなんていくらでも自由にかえれるだろ

204 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:47:15 ]
>>202
オマエには出来ないでファイナルアンサー

ってか、既に答を書いてる人がいっぱいいるじゃん。

205 名前:デフォルトの名無しさん [2006/12/06(水) 22:48:16 ]
口だけでは納得いかん
動くコードなら納得がいく

206 名前:デフォルトの名無しさん [2006/12/06(水) 23:02:57 ]
コードくれ厨がJavaにまで…

207 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 00:12:43 ]
>>201
なにがいいたいのか、俺にはさっぱりわからん。
図かなんか描いてどっかに貼ってみせてみろ。

208 名前:デフォルトの名無しさん [2006/12/07(木) 00:24:40 ]
_________________________________
| keyword 11111111111      |
| keyword 222222222222222222222 |   _______
| aaaa              |  |      |
_________________   | うお   |
        ________    | ぎゃああ |
       |        |   _______
       |あああああああ |
       |        |
       __________

209 名前:デフォルトの名無しさん [2006/12/07(木) 00:27:06 ]
こんな風にできんのか


______________
| keyword 11111111111      |
| keyword 222222222222222222222|    _______
| aaaa              |  |      |
_________________   | うお   |
        ________       | ぎゃああ |
       |           |   _______
       |あああああああ  |
       |           |
       __________

210 名前:デフォルトの名無しさん [2006/12/07(木) 00:35:22 ]
ネトゲの吹き出しみたいなもんか?



211 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 00:52:16 ]
Graphicsに描画するんだろ?
どうでもできるだろ。

212 名前:207 mailto:sage [2006/12/07(木) 00:52:55 ]
>>208
GlyphVector 作って、getOutline() で Shape とかとってくれば
簡単な気がする。

213 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 10:22:21 ]
ここまで答えが書かれてるのにできないってのは無いな。
やってないだけ。

214 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 10:53:11 ]
結局アルゴリズムの問題だよな。
やることはJavaだろうがWin32だろうがGTKだろうが変わらない。

215 名前:181 [2006/12/07(木) 12:28:54 ]
文字をいれる枠の大きさぐらいはなんとかなるかもしれんが、
文字が入ってる枠をほかの枠とかさならない位置を計算して
表示するアルゴリズムがわからんじゃないか

216 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 13:31:24 ]
なに、Swingと関係ないことで苦労してるの?
アルゴリズムの初心者スレいったほうがいいよ。

217 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 14:24:59 ]
複数個のJPanelが存在し,
ボタンを押された祭にそれらのJPanelを切り替える事は可能でしょうか?

public class SwingTest extends JFrame implements ActionListener{
JLabel label = new JLabel("change");
JButton btn = new JButton("push");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
public static void main(String[] args){
SwingTest test = new SwingTest("SwingTest");
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
SwingTest(String title){
setTitle(title);
setBounds(10, 10, 300, 200);
p1.add(btn);
p2.add(label);
btn.addActionListener(this);
getContentPane().add(p1);
}
public void actionPerformed(ActionEvent e){
getContentPane().remove(p1);
getContentPane().add(p2);
}
}

こんな感じで今やっているのですが,ボタンを押しても反応しなくて困っています.
どなたかご教授お願いします.

218 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:08:27 ]
一応そのやり方でもできるけど、ちゃんとイベント把握してないとやめたほうがいい

たぶんやりたいことはJPanelを切り替えることではなく、レイアウトマネージャにあるやつで足りると思うが


219 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:37:48 ]
>>217

解答。ボタンを押すとボタンが消えて、ラベルが現れるなんて、変なGUIだな。
元の状態にに戻れないじゃん。あくまでもテストだよね。
本ちゃんでこんな変なGUI使ったら笑われるよ。

public void actionPerformed(ActionEvent e){
getContentPane().remove(p1);
getContentPane().add(p2);
validate();//←ここ、ここ
}

220 名前:217 mailto:sage [2006/12/07(木) 16:06:49 ]
返信ありがとうございます.
validate()
を加える事で表示は代わるようになったのですが,また新たな問題が・・・.
今3つのパネルを用意してそれら3つを行き来できるようにしているのですが,
この方法を用いた場合何故か3つのパネルを1回ずつ表示させることはできるのですが,
2回目以降即ち違うパネルから再度戻ってきた場合に表示が反映されません.
何度も質問してしまい,お手数だと思いますが,どなたかよろしくお願いします.



221 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:12:04 ]
コードも見ないでどうやって解答しろと?

222 名前:217 mailto:sage [2006/12/07(木) 16:22:57 ]
すいません.
コードを張ろうとしたら大きくなりすぎて,張る事ができなかったので・・・.
表示を切り替えている部分はこんな感じです.public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
if (cmd.equals("1to2")){
getContentPane().remove(パネル1);
getContentPane().add(パネル2);
}
else if (cmd.equals("1to3")){
getContentPane().remove(パネル1);
getContentPane().add(パネル3);
}
else if (cmd.equals("2to1")){
getContentPane().remove(パネル2);
getContentPane().add(パネル1);
}
else if (cmd.equals("2to3")){
getContentPane().remove(パネル2);
getContentPane().add(パネル3);
}
else if (cmd.equals("3to1")){
getContentPane().remove(パネル3);
getContentPane().add(パネル1);
}
else if (cmd.equals("3to2")){
getContentPane().remove(パネル3);
getContentPane().add(パネル2);

}
validate();
}

223 名前:217 mailto:sage [2006/12/07(木) 16:29:56 ]
何度も申し訳ありません.
先ほどパネルはが変わらないと言いましたが,一部分は変わっていました.
3つのパネルに共通する部分は変更されているのですが,
それ以外の部分が変更されていませんでした.
ただ変更されると言ってもマウスをボタンコンテナ上に乗せると変わるのですが,
そうしなければ変わりませんでした.
非常に説明が下手で申し訳ありませんが,よろしくお願いします.

224 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:45:57 ]
>>218が一番まともな回答だと思うけどそれは調べたの?

225 名前:217 mailto:sage [2006/12/07(木) 16:49:42 ]
>>224
一応>>218の方法で
画面の切り替えが発生したら
パネル上にあるコンテナをremoveAllで削除.
新たに別のパネルを作成し,コンテナを設置.
そのパネルを今表示しているパネルに代入.
という感じでやったのですが,画面が切り替わらず,断念しました.

226 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:50:46 ]
そりゃそうだが、java.awt.CardLayoutというキーワードが出てこないと
そう簡単には調べられない。
AWTのレイアウト概説的文章とにらめっこする必要が出てくる。

227 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:53:00 ]
AWTやSwingはまずレイアウトマネージャありきだろ
どんな初心者本だってすぐにでてくる

228 名前:217 mailto:sage [2006/12/07(木) 16:55:36 ]
いまさらになってしまうのですが
自分がsetLayout(null)でレイアウトマネージャーを無効にしているのがダメな気がしてきた・・・.
やはり何かしらレイアウトマネージャーは使うべきなんですかね・・・.

229 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:01:21 ]
レイアウトマネージャ使えばコンポーネントサイズが変わってもそれにあわせて動いてくれるからな
とりあえずnullを使う利点はない
絶対的な座標のように扱うにしてもグループレイアウトやアブソリュートレイアウトのほうがまし

今のコードそのまま使うにしてもそのさしかえたいJPanelにレイアウト指定して
そこにカードレイアウトではりつければいいだけ

レイアウトマネージャ理解していないのならIDEでいじってみてどういう感じなのか理解したほうがいい
カードレイアウトってのはタブ部分のないタブコントロールみたいなもん

230 名前:217 mailto:sage [2006/12/07(木) 17:07:34 ]
返信ありがとうございます.
カードレイアウトが自分のやりたい事とマッチしているようなのでまずはこれを勉強してみます.
みなさま本当にありがとうございました.



231 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:14:50 ]
カードレイアウトって、そんなもんも有ったなあ。
しかし、222のコード見たところ、ボタンがいくつか有って、押すと対応するパネルが
表示されるようにしたいんでしょ。普通はJTabbedPane使って解決じゃないの?

232 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:21:55 ]
今のUIそのまま使いたいならCardLayoutだけど、それは普通Tabでやる。

233 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:30:32 ]
まあ、人様に御見せするアプリじゃないんでしょ。いいんじゃないの。

234 名前:181 [2006/12/07(木) 22:28:24 ]
JGraphいちおううまくサンプル動かせたんだが、
なぜかJ2SDKのフォルダの中でソースをコンパイルして実行しないと
他の場所ではコンパイルも実行もできなんだけど、なぜだろう。
コンパイル後の.classファイルなら他の場所でも実行できるのかと思って
別の場所に移動させて動かしてみたらやっぱり動かないし。
普通、J2SDKフォルダの中でコンパイルしたり実行したりってしないんだし
これだったら使い物にならないんだけど・・・

235 名前:デフォルトの名無しさん [2006/12/08(金) 00:16:52 ]
jgraph.jarをソースと同じフォルダにいれればコンパイルできますた。
でも常にjgraph.jarを一緒にいれておかなければならないんでしょうか。

236 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:26:59 ]
なんか根本的なところ勉強したほうがよくないか?
それにSwingとまったく関係ない点について

237 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:31:35 ]
>>181
Javaの仕様を勉強してこい。
理解できるまで帰ってこんでよい。

238 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:31:59 ]
jgraphスレ行け

239 名前:デフォルトの名無しさん [2006/12/08(金) 00:49:38 ]
jgraphスレってなんだよ。そんなものねえじゃん

240 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:53:24 ]
無けりゃ最初に質問すべきスレがあるだろ
少なくともここじゃねえ



241 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 19:21:53 ]
JTableで、カーソルキーによるセルの移動を監視したいのですが、どうしたらよいですか?
keyPressed で JTable#getSelectedRow() で行を取得すると、
移動前の行が取れてしまうのが悩みの種です。
押したキーによって、+1、-1すればできますが、
もう少し良い方法があれば教えてください。お願いします。

242 名前:241 mailto:sage [2006/12/09(土) 19:59:48 ]
モデルの isCellEditable をオーバーライドして移動先が取得できるか試しましたが、
セルを行で選択するモードだと isCellEditable が呼ばれないんですね。どうしたものか。

243 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 20:32:19 ]
>>241
SelectionModel を使う。


244 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 20:49:50 ]
>>241
TableColumnModelListener,ListSelectionListener
の2つで横と縦の選択がとらえられる。


245 名前:241 mailto:sage [2006/12/09(土) 22:31:36 ]
>>243 >>244
ありがとうございました。早速試したところ、なんとか取れました。
あと、JTable#valueChanged(ListSelectionEvent) をオーバーライドしても取れました。
奥が深いですね。

246 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 23:25:58 ]
ぽとぺたやってると手軽にオーバーライドできなくて面倒なんだよね
ペイントイベントもイベントとしての実装じゃないから手軽とはいかないし

SwingはJavaBeansをベースに作ってるといいながらどうもそういう実装になってないんだよね
getとsetが対になってないからプロパティとして表示されないとかも多いし

247 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 00:56:29 ]
Java SE 6 入れてみたけど Swing また速くなった?

248 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 01:55:20 ]
Swing部分はまだ確認してないが、演算速度は確実に速いっぽ
コンパイルしなおしてなくても物によっては1.4倍くらいでてる


249 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 11:49:28 ]
JButton上で、HTML要素を使って改行し、多段落表示させているのですが、
この中の文字列に含まれる一部の「<」や「>」や「/」などが表示されません。
これらの文字をHTML要素として解釈させないため無効化するにはどうしたらいいのでしょうか?

Webブラウザ上でHTMLソースを表示させるときのように
「<」や「/」を実体参照に書き換えても表示できないようです。

250 名前:249 mailto:sage [2006/12/14(木) 12:37:25 ]
文字実体参照ではなく数値文字参照でやってみたらなぜかうまくいきました。




251 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:41:39 ]
>>250
おれはふつうに>とかでできてるぞ

252 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:43:46 ]
あら、2chでえすけーぷされた
&gt;
で普通に表示されてるよと

253 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:53:18 ]
>>252
レスありがとうございます。

< と >はうまくいったのですが、
<html> のあとに、「/」が入る部分があると表示されたり表示されなかったりで試行錯誤中です。


254 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 13:29:39 ]
>>253
bodyタグがはいっていないとかいうオチは?

255 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 07:27:32 ]
drawLineメソッドでCanvasに線をかくことが出来ますが、
その線を座標の配列として得るにはどうしたらいいでしょうか?

256 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 09:34:57 ]
>>255
線は特にインスタンスを保持してないしデータもない。
このやりかたでを試してみな。
ttp://web.hc.keio.ac.jp/~fujimura/lang/page-16.html

257 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 10:45:24 ]
>>256
もっと簡単にできないものでしょうか
例えば(0,0),(0,5)をdrawLineで指定したとしたら
2点とその間にある(0,1),(0,2),(0,3),(0,4)が塗りつぶされます。
この4点の塗りつぶしをJavaはどのように実装しているのでしょうか?
この例のように予め2点を結ぶと水平,もしくは垂直になると分かっていればいいですが
(0,0),(2,5)のように水平及び垂直にならない場合,
drawLineはどのように計算して塗りつぶす点を決めているのでしょう?

258 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 11:19:16 ]
>>257
言っている意味がわからないし(何に対して水平、垂直?水平な点なんてありえないし)
255との繋がりも無いように読めるんだけど、結局何がしたいの?
つか256もけして難しくはないと思うんだけど。
実装について知りたければソース読め。

259 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:11:03 ]
>>258
ちょっと感動した。ソース読めってセリフが出てくるあたり。
まあ、ネイティブに飛ばしてない限りそこ読めば分かるよな。

260 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:16:38 ]
どうでも良いことだけどCanvasはSwingじゃなくてAWTじゃなかったっけ。



261 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:31:08 ]
1.2 以降だと、たかが drawLine でも Graphics2D の関係で Stroke の計算とか
結構面倒臭い事しなきゃいかんような気もする。

1.1 までだったら Stroke とか無かったし、
アンチエイリアス云々って時代でもなかったから
ブレゼンハムアルゴリズムだけで出来たかもしらんけど。

262 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:45:06 ]
257はソース読んでからの書き込みです。
drawLineの実装ってどんなんだろ,と思ってソース見たのですが
Graphic見てもabstractで
Graphic2Dでオーバーライドしてるのかなと思ってもありませんでした。
どうやらdraw(Shape)っぽい漢字なのですが
Stroke云々ってあってめんどくさそうなのです。

>>258
水平,垂直ってのは結んだ線の話です。
(0,0)と(0,5)を結ぶと垂直な線になります。
ある2点を結んだときにできる線が通ることになる座標を
得るにはどうしたらいいか?ってことで伝わるでしょうか

263 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:46:41 ]
えっと、もっと簡単に言うと
直線が2本あって、
その2本の線の交点の座標って求められるの?
ってことかい?

もしそれなら数学学べ

264 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:04:43 ]
>>263
全然話が違います
「ある2点を結んだとき」ですから出てくる点は2つです
それだと4点になります

drawLine(0, 0, 0, 5)を呼び出すと
(0,0),(0,1),(0,2),(0,3),(0,4),(0,5)が塗りつぶされます。
(0,1),(0,2),(0,3),(0,4)が塗りつぶされるのは
(0,0)と(0,5)を結んだ直線が通る座標だからです。
(0,0)と(0,5)を結ぶと垂直な線ができるので
(0,1),(0,2),(0,3),(0,4)が塗りつぶされるということは
簡単に求められます。
drawLine(0, 0, 100, 101)を呼び出したときに
塗りつぶされる座標はどこになるのでしょうか?

265 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:09:00 ]
もっと簡単じゃないか。。。

drawLine(0, 0, 5, 5)だと
(0,0),(1,1),(2,2),(3,3),(4,4),(5,5)
が塗りつぶされるけどどうやって計算するの?
ってことか?

やっぱ数学学べ

266 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:21:08 ]
計算する以外での求め方は
線を書く前のキャンバスの画像と
線を書いた後のキャンバスの画像を比較すれば良い

前と後の同一座標のドットを比較して
違っていれば描画されていると判断すれば良いんじゃないか

267 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:23:28 ]
>>264
ソースを理解できないのなら手助けもするが、読むのが面倒なだけなら帰れ。
そしてスレ違い。

268 名前:デフォルトの名無しさん [2006/12/15(金) 14:29:11 ]
JDoalogを継承したDialogで最大化、最小化ボタンを表示させることは
可能でしょうか?

JFrameを継承すれば表示されますが、
Windowsのタスクバーにアプリケーションが2個上がってきてるように
見えるのでJDialogにしたいです。

269 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:53:26 ]
>>268
私が知っているのは↓の手法
Merlinの魔術: もう1つのシンプルなフレーム
ttp://www-06.ibm.com/jp/developerworks/java/011130/j_j-mer0717.html
A,この手法の場合、最小化、最大化アイコンを設定する必要あり。
B,たぶんもっといい方法があると思う。

270 名前:デフォルトの名無しさん [2006/12/17(日) 10:51:19 ]
見えないボタンの右半分がクリックできるプログラム。
import javax.swing.*;
import java.awt.event.*;
class A020 {
  public static void main(String[] args) {
    JFrame f = new JFrame();
    f.setSize(640, 480);
    JPanel p1 = new JPanel();
    p1.setBounds(0, 0, 100, 100);
    JButton b = new JButton("クリック");
    b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "ボタンがクリックされました。");
      }
    });
    p1.add(b);
    JPanel p2 = new JPanel();
    p2.setBounds(50, 0, 100, 100);
    JLayeredPane l = new JLayeredPane();
    l.add(p1, Integer.valueOf(10));
    l.add(p2, Integer.valueOf(20));
    f.add(l);
    f.setVisible(true);
  }
}



271 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 11:00:39 ]
×見えないボタンの右半分
○見えない「ボタンの右半分」

272 名前:デフォルトの名無しさん [2006/12/17(日) 20:29:21 ]
g.drawString("Test", 0, 0);
g.drawLine(0, 0, 10, 10);
とすると、線は(0,0)-(10,10)で描かれますが、文字の方は描かれません。
drawStringとdrawLineでは、座標の考え方が異なるようなのでしょうか?

273 名前:272 mailto:sage [2006/12/17(日) 20:43:03 ]
すみません。解決しました。
drawStringは文字の左下が基点になるのですね。
なんのためにそうなっているのかわかりませんが。。。

274 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 20:57:59 ]
ベースラインを理解しろよ・・・
それにこれはSwingと関係ないし

275 名前:デフォルトの名無しさん [2006/12/17(日) 21:25:06 ]
ベースラインがなぜアセント値の下にあるか説明せよ。

276 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 21:36:32 ]
>>274
おまえには関係ないし

277 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 12:11:24 ]
>>276
>>274自身には関係ないだろうが
スレに関係ないのは確かだ
日本語嫁よ

278 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 13:33:49 ]
JTextArea で、キャレットの列の位置を取得したいのですが、
シンプルな方法があったら教えて下さい!!
今は以下のようにして取得しています。

_text = new JTextArea();
Element all = _text.getDocument().getDefaultRootElement();
int index = all.getElementIndex(_text.getCaretPosition());
Element line = element.getElement(index);
int col = _text.getCaretPosition() - e.getStartOffset();

279 名前:272 [2006/12/18(月) 14:35:31 ]
スレ違いでしたか。。。
JComponentの質問は良くて、Componentの質問はダメってことですか?

280 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 15:14:32 ]
単に274がキチガイ



281 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:57:41 ]
>>270
どういうトリック?

282 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:58:32 ]
>>278
全角とTabの対応が入ってなくない?
Tabは入る位置によって文字列長が変わるから、結構面倒そう。

283 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 20:28:08 ]
>>282
その行の何文字目かが欲しいだけでしょ

284 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 04:23:00 ]
コンポーネントをadd()あるいはremove()するときは直後に必ずrevalidate()を呼ぶべきでしょうか?

多くの場合、revalidate()を呼ばなくてもうまくいくのですが
(ただしremove()の後は必ずrepaint()してます)、
ときどきrevalidate()を呼ばないとダメなときがあります。

revalidate()が必要なときと不要なときの違いは何でしょうか?
または、違いは気にせずに常にrevalidate()するべきでしょうか?

285 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:21:57 ]
呼ぶべき。

286 名前:デフォルトの名無しさん [2006/12/20(水) 17:41:07 ]
JavaSE6だとメニューをだしたまま、タイトルバーをクリックするとメニューが消えてくれるね。

かなりいいかんじあげ

287 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 18:13:34 ]
おお、どれだけ待った事か>>286

288 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 02:34:13 ]
>>284
オレもよくわからない。
revalidate()を呼ぶと、repaint() 時のクリップ領域が現状にあったものになる気がする。
詳しくわかったら教えてくれ。

289 名前:284 mailto:sage [2006/12/21(木) 21:25:56 ]
自分の経験だけで言えば、JPanelに限ればrevalidate()は無くても大丈夫そうです。
以下、JPanel限定の話。

◆add()する場合
revalidate() → なくても問題ない。
repaint() → たいていはなくても問題ないが時々ないとダメなことがある。

◆remove()する場合
revalidate() → なくても問題ない。
repaint() → ないとダメ。

JComponentのドキュメントのrevalidateの項を見ると、
「プログラムが、通常、GUI の内容を更新するために
validate を呼び出す必要がない点で AWT とは異なります」
というようなことが書いてあります。
つまりSwingではrevalidateを呼ぶ必要はないということなのかなと解釈したのですが
実際のところはどうなのでしょう?

それと、JScrollPaneが絡んでるとrevalidateしないとダメなことがあるようです。

290 名前:288 mailto:sage [2006/12/21(木) 22:51:29 ]
>>289
どうもありがと。
JPanel にボタンを2つ貼り付けて、押されたから片方を remove するサンプルを作って試してみた。
revalidate() しないと、ボタンが削除されたのに、レイアウトが変更されないね。
これはたぶん、revalidate()を自動的に呼ぶのが、
レイアウトに影響を受けたコンポーネントが呼ぶからだと思う。
つまり、removeされた本人は revalidate() を自動的に呼ぶが、もうremoveされていて親がいないので、すぐにreturnされる。
なので、親のコンポーネントの方で revalidate() してあげる必要がある。

ちなみにオレがrevalidate() を使う必要があったのは、JTextArea に行番号を表示させる時。
JScrollPane上に表示されていない行が増えた場合に、増えた行の行番号が正しく表示されなかった。
これは上のレスで書いた通り、新しく増えた領域が再描画する領域として認識されていないからだと思う。

まぁ長々と書いたが、オレははっきり理解していないのだが。。。。



291 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 23:11:13 ]
つ ttp://homepage1.nifty.com/algafield/JavaGUIFaq19j.html#five13

292 名前:284 mailto:sage [2006/12/22(金) 01:13:22 ]
どうもありがとうございます。
なるほど、周りのレイアウトに影響を及ぼす場合はrevalidate()が必要なのですね。
自分は最近setLayout(null)でずっとやってたから必要な場面がなかったのかもしれません。
JScrollPaneが絡んだときだけ必要になるのも納得です。

しかし、add()するときにrepaint()が必要になることがある理由は何なんでしょうか…?

293 名前:デフォルトの名無しさん [2006/12/22(金) 13:16:52 ]
paintイベントで描画してる場合

294 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 20:02:30 ]
JListで、リスト項目の高さを任意に指定したいのですが、どうすればよいでしょうか?
現在はDefaultListCellRendererを継承したRendererを使って高さを設定してますが、反映されません。
呼び元を見たところ、Fontサイズが有効になっているっぽいのです。

295 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 21:32:27 ]
>>294
そのレンダラのサイズ指定はどうなってるの?

296 名前:294 mailto:sage [2006/12/22(金) 22:31:40 ]
>>295
すみません。できました。
レンダラで getPreferredSize() をオーバーライドして、サイズ返したら、そのサイズになりました。
getListCellRendererComponent() の中でサイズを指定しても、有効にならないようですね。
質問の内容が不十分だったこともお詫びします。

297 名前:284 mailto:sage [2006/12/23(土) 05:20:19 ]
>>293
ありがとうございます。
paintComponent()ではなくてpaint()してる場合なのですね。
すると自分ではいじってないからどこで使われているのかわかりにくいわけですね。

298 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:09:18 ]
>>291
そのFAQは知らなかった。とても参考になった、ありがとう。

299 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:57:52 ]
>>297
Swingはフレームワークとしてpaintよんでる
つまり自前でコンポーネント描画しているすべての場合において必要ということ

300 名前:284 mailto:sage [2006/12/23(土) 17:55:43 ]
>>299
ありがとうございます。
すると、add()の後はrepaint()必須ということですか?
repaint()しなくてもちゃんと描画される場合があるのはなぜでしょうか?



301 名前:290 mailto:sage [2006/12/23(土) 20:02:19 ]
普通のコンポーネントを追加した場合は、revalidate() すれば repaint() しなくても正常に描画されると思う。されない時ってある?
>>293 は、drawLine とかで、自分で描画している場合は「必要」と言ってる気がする。
paintイベントって言ってるのも、paintComponent()のことだよね?


302 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 20:44:17 ]
299も293も俺

Swingはpaintイベントでpaintなんちゃらというのをよんでる
そこで子のコンポーネントも順次呼ばれる
paintをオーバーライドするとイベントがとまって崩れるのはこのため

revalidateがリペイントマネージャに対してダーティマーキングしていれば自動的に再描画される
ソース読んでみた?IDEつかってるならすぐソース見れるからJComponentみてみるといいよ


303 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 05:29:14 ]
>>302
paint?paintComponent?
オーバーライドするなら基本はpaintComponentでは?
あと、super呼び出せば今までと変わらないと思う。
理由は何にせよ、呼ばないで崩れる時があったら、呼んでみるってのでいいのかな。

304 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 05:49:29 ]
間違えて、paintComponentsをオーバーライドしてはまる。

305 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 12:15:13 ]
>>303
オーバーライドの話してないだろ

>>304
それはオーバーライドとはいわない
アノテーション使え

306 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 15:00:31 ]
>>305
>>302に思いっきりオーバーライドってあるけど。

307 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 17:05:05 ]
>>305
オーバーライドだろ
おまえみたいなヤツが思いっきりはまるんだよ。
paintComponentsというメソッドもある。
だから@Overrideアノテーションつけてもコンパイル通る。


308 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 19:38:21 ]
>>306
paintのオーバーライドはするなという話なのだ

paintとpaintComponentは密接な関係であるが、paintComponentのオーバーライドの話はしていない

309 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 21:20:58 ]
>>308
まぁそうなんだけど、そもそもの話は、paint()をオーバーライドしていなくても、
repaint()を呼び出す必要があるのはなぜ?ってこと。
paintComponent() で独自の描画処理をしている場合に、
repaint()の呼び出しが必要になる場合があるので、paintイベントって言われてると、
paint() とも paintComponent() とも、どっちとも取れる。「paint()」 なら、間違いようがないけどね。

とりあえず、独自描画なしのコンポーネントをaddしただけで、
repaint()が必要になるケースがよくわからない。どんなケースだろう。

310 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 21:58:08 ]
addだけでもrevalidateしないとだめだけどな



311 名前:284 mailto:sage [2006/12/25(月) 20:16:27 ]
paintComponent()をオーバーライドして独自描画をしている場合に
repaint()が必要ということですね。

312 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 23:23:17 ]
Swingのソースのいたるところにrevalidateの直後にrepaintしてるからあるほうが安心かな

313 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 07:07:58 ]
JTableのモデルでDefaultTableModelを使っているのですが、
DefaultTableModel#addRow(Object[])と
DefaultTableModel#addRow(Vector)で、動作が変わる時があるのですが、なぜでしょうか?

具体的な違いは、
addRow後に DefaultTableModel#setColumnIdentifiers() を呼び出すと、
addRow(Object[]) の方はデータが表示されません。

解決方法としては、
setColumnIdentifiers() を先に呼んで、addRowすれば問題ないのですが、
Java側のソースを見ても、なぜそうなるのかが,お風呂上りくらいさっぱりです。

一応直接の原因としては、
addRow(Object[])とした場合、DefaultTableModel#dataVectorに値が入らないためです。
dataVectorが初期化されていないような気がするので、
dataVector.insertElementAt(rowData, row);
の時にヌルポで落ちてもいいくらいなんですけど。

314 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 22:58:27 ]
>>313
Object[]でテストしてみたけどカラムの表示ちゃんとかわってるよ

315 名前:313 mailto:sage [2006/12/29(金) 10:18:36 ]
>>314
すみません。アク禁でした。
もう一度試したところ、addRow(Object[])とaddRow(Vector)で、動作は同じでした。ん〜、どこかミスっていたようです。
あと、setColumnIdentifiers() を先に呼ばないとデータが入らないのは、仕様みたいですね。
または事前に列のサイズを指定してあげればOKでした。

316 名前:デフォルトの名無しさん [2007/01/05(金) 04:13:37 ]
JOptionPane.showMessageDialogueをつかったダイアログで、
ダイアログのボタンをアクションリスナに登録するには
どうしたらよいのか教えてい頂けないでしょうか?

317 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 17:23:08 ]
フルスクリーン画面上にJPopupMenuを表示して
画面をrepaintするとJPopupMenuが消えてしまいます。
JPopupMenuを消さずに画面を再描画する方法はありますでしょうか。
JPopupMenu.setDefaultLightWeightPopupEnabled(false);にしております。

318 名前:317 mailto:sage [2007/01/05(金) 17:24:42 ]
public class PopupMenuTest extends JFrame implements Runnable {
private Thread repaintThread = null;
public PopupMenuTest() {
setSize(800, 600);
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode fullMode = new DisplayMode(800, 600, device.getDisplayMode().getBitDepth(), device.getDisplayMode().getRefreshRate());
device.setFullScreenWindow(this);
device.setDisplayMode(fullMode);
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {createPopup().show(PopupMenuTest.this, e.getX(), e.getY());}}});
setVisible(true);
if (repaintThread == null) {repaintThread = new Thread(this);repaintThread.start();}
}
public void run() {
while (repaintThread != null) {
System.out.println("repaint");repaint();
try {Thread.sleep(10000);} catch (Exception e) {}
}
}
private JPopupMenu createPopup() {
JPopupMenu popupMenu = new JPopupMenu();
JMenu menu1 = new JMenu("menu1");
menu1.add(new JMenuItem("TEST"));
popupMenu.add(menu1);
return popupMenu;
}
public static void main(String[] args) throws Exception {new PopupMenuTest();}
}

319 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 18:07:26 ]
> JPopupMenu.setDefaultLightWeightPopupEnabled(false);
この行削ったら動いてるように見えるが。
HeavyWeightなコンポーネント置くつもりならどうしようもないね。

320 名前:317 mailto:sage [2007/01/05(金) 19:23:47 ]
>>319
お返事ありがとうございます。
現在、PopupMenuListenerでPopup可視と連動してrepaintをするかしないか分岐
という感じで逃げています。
setIgnoreRepaint(true)
setFullScreenWindow(window)
の場合、意図した通りの動きにならない事が多い気がします。



321 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 00:50:47 ]
IgnoreRepaintはフルスクリーンでBufferedStrategy使うの前提のものだからSwingコンポーネント使うならやめたほうがいいと思う

322 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 21:12:58 ]
フルスクリーンでチャット機能つける場合の良い構成ってありますか?
日本語入力をどうしようというので早速つまづきます

323 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:35:27 ]
それ普通にWindowsネイティブとかでもでる問題

ここはフルスクリーンをやめてウインドウの最大化をするべき
もちろん、装飾部分や常に手前に表示を指定すること

それらを指定すればタスクバーより手前に表示できる

324 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:11:08 ]
なるほど。ではJLayeredPane+sync()+>>323で試してみます。
ありがとう。

325 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 03:37:37 ]
グチだしこのスレでいいのかどうかもちと怪しいんだが、
Java2Dで描いた円ってなんであんなに汚いのかなぁ・・。
Ellipse2Dで真円描いても上下左右非対称なガタガタの円。
アンチエイリアシングかけないと見れたもんじゃない。
クラス名のごとく楕円しか描けないのだらうか。

326 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 04:38:51 ]
Java6で直ってるはずだが。

327 名前:325 mailto:sage [2007/01/17(水) 20:15:42 ]
>>326
比べてみたけど直ってないみたいだ。残念。


328 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 20:27:51 ]
むむ、いつぞやのJavaOne Tokyoで直るって言ってたのにな…
(Sunの人じゃなかったけど)

329 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 20:37:26 ]
>>325
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4151279

一番最後の comment みると、改善はしてるけど完璧じゃないよって書いてある。

330 名前:325 mailto:sage [2007/01/17(水) 23:40:52 ]
>>328-329
1.5と1.6ではまったく差はみられなかったけど、将来的には改善していく
つもりはあるみたいだからそれに期待することにします。





331 名前:デフォルトの名無しさん [2007/01/28(日) 15:27:29 ]
Windows Look&Feel で、デフォルトの JTextField だと IME の未確定文字につく
下線が見えないんだけど、これって俺だけ?

デフォルトだとフォントが MS UI Gothic Plain 12 になってるんだけど、
Monospaced Plain 12 に明示的に変えてやると下線も見えるようになった。

332 名前:デフォルトの名無しさん [2007/02/12(月) 14:02:12 ]
SwingでSWTのGridLayoutみたいなのを使いたいのですが、何処かにころがってませんかね?

また、その他使えそうなレイアウトマネージャあればURLキボンヌ

333 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 14:27:07 ]
そのSWTのベースとなってるのはSwingというかAWTでのGridLayoutなんだが細かいところは異なる
今ならグループレイアウトが使い勝手もいいんでないかい?

334 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 15:57:17 ]
GridBagLayoutでいいんじゃない?

335 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 10:31:47 ]
GridBagLayout で殆どの用は足りる。

336 名前:デフォルトの名無しさん [2007/02/15(木) 14:47:55 ]
レイアウトマネージャの便利なとこは?

無効にして絶対値で指定したほうが楽そうじゃね?

337 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:01:49 ]
固定サイズのアプリケーションならそれも選択肢に入る。
が、その場合でもレイアウトマネージャーに任せた方が楽なこと多数。

338 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:03:51 ]
サイズ固定のアプリケーションしか作らないよな
プリンタで出力する気もないよな
モニタ解像度も知ったこっちゃないよな
はみ出たら横にスクロールさせる気満々だよな
リキッドレイアウトなんて聞いただけで反吐が出るよな

339 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:42:01 ]
サイズ指定にしてもアブソリュートレイアウト使わないときっついぞ。
推奨サイズを使えばコンポーネントの位置関係を全自動でやってくれるし、可変サイズのフレームを絶対座標なんておわっとる。
グループレイアウトはベースラインであわせてくれたりするのがすごい便利。

まぁつかってもつかわなくてもかまわんが、何も考えずにフレームに対してsetSizeだけしなければOK。
それをするとWindowsXPと2000、Vistaとそれぞれ異なる描画結果になるので注意。

レイアウトマネージャ使っていてもDPIの違いで結構異なるプラットフォームで動かすのは大変だけどな。

340 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:31:56 ]
Java Swing Hacks―今日から使える驚きのGUIプログラミング集

って本は良本ですか?



341 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:54:56 ]
派手すぎて仕事用って感じじゃない。

けどいくつか役に立ちました。

342 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 05:17:51 ]
オライリーのHacksシリーズ色が出てる本、手軽にクールなコンポーネント書きたい人向け。

所々既存コードに影響しないように考えられてる所も良いね。

早速、rhinoとgroovyから使う事を目的とした
Swingラッパーに一部採用させてもらいました。


343 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 13:18:46 ]
Hacksシリーズのわりには内容は平凡
なぜか参考にもならないsoundのコードがはいっている
どうせいれるならちゃんとしたものを入れろと

344 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 04:44:35 ]
まあ他のHacksシリーズを読んだら確かにそう思わなくもない。

345 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:56:30 ]
mycomの記事見てJSR-296の「Swing Application Framework」を試してみた。
まぁなんつうか、モノはシンプルだね。
あとは、コンポーネントAの操作の結果を、コンポーネントBに、
Aの存在を意識させずに反映させる機能があればいいかな。
AからシングルトンなBeanを編集すると、イベントがBに飛んでそこで処理がおこる、みたいな。
こういうの自作してるんだけど、ひょっとしてjava.beans使えばできる?

346 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:06:55 ]
>>345
PropertyChangeListener/Eventじゃないのかね。


347 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 02:03:49 ]
>>345
導入前と導入後でソースが見やすくなるわけでもないし機能もかわらんからな
ただTaskとSwingWorkerは統一したほうがいいよな

348 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 08:22:12 ]
> button.setAction(actionMap.get("onClick"));
とかSwing信者から見ると気持ち悪いんだけど。
サーバサイドで慣らされてる人は平気なのかな。

349 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 11:19:14 ]
いやー平気じゃないと思うぞ
ロジック部分の呼び出しとかなら祖結合でいいけど
各種イベントでコンポーネントの状態を変更しないといけない密結合ではクラス分離して書くということはまずできないし

あのフレームワークの存在意義がわからないとはずっと前からいわれてきたし
startupとかはまぁイベントディスパッチスレッドを意識させないという意味があるのだろうけど
イベントディスパッチスレッドを意識してないと並列動作できないしな

350 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:10:09 ]
そうだね。Webのフレームワークみたいな役割を期待するとすると、
ロジックとGUIの分離、つまり同じアプリでSwing実装とSWT実装と
Struts実装をやりたい場合とか、そういうときに使えるものを
期待してしまう。



351 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:00:01 ]
JDK6のSwingのWindows LaF (Vista)で、JTableのヘッダの高さが通常の2倍ぐらいあるのですが、
これはなんとかならんもんでしょうか。

352 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 00:24:29 ]
通常の3倍じゃなくて良かったな

353 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 16:43:26 ]
>>352
オレが思いついてもあえて書かなかったことを・・・

354 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 12:48:50 ]
機体性能が3倍あるわけじゃないんだぜ?

355 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 10:35:26 ]
ザク、、、いや、何でもない。

356 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:09:44 ]
SE6になってjavax.swing.undoのドキュメントの一部が丁寧になって少しましになってる。

357 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:02:04 ]
JDK6の日本語マニュアルでたのか?

358 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:15:15 ]
作業中の物ならここに。
ttps://jdk-api-ja.dev.java.net/ja/index.html

359 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:54:52 ]
java.sun.com/javase/ja/6/docs/ja/index.html

360 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 03:24:01 ]
>>359
新機能とかまず概要の日本語がないってことはいまだ未完成ってことね



361 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:45:38 ]
既出かもしれないけど、こんなもの見つけた。
journal.mycom.co.jp/column/jsr/006/

手動でリスナ書く手間から開放されるというのはかなり幸せかも。

362 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:02:51 ]
そいつを使うと、コード書かなくてよくなる
www.netbeans.org/download/flash/netbeans_6_gui_builder/netbeans_6_gui_builder.html

363 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:12:57 ]
>>361
Beans Binding って Cocoa Binding みたいなもの?

364 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:19:38 ]
似てるね。

365 名前:デフォルトの名無しさん [2007/04/02(月) 17:44:32 ]
YAGI3

366 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 21:26:15 ]
apolloってJWSを食ってしまいそうだな

367 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 22:16:28 ]
それはないだろ。
食われるほどのJWSの裾野はないし、今JWSでやってるものをおきかえれるほどの力はFlashにはない。

368 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 01:19:08 ]
>>366
むしろJavaアプリの中でApolloのWeb連携機能が使いたいなぁ

369 名前:デフォルトの名無しさん [2007/04/07(土) 16:00:15 ]
SwingでGoogleCalendarみたいなUIをつくることって出来るんでしょうか??
ためしに作ってみようかと思ったんですが、Swingに余り詳しくないのでそもそもどういう風に作れば良いのかわからず悩み中です。

370 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 16:14:18 ]
ブラウザで出来る程度のことはすべて可能
Swingに詳しいかどうかってのも関係ないな




371 名前:デフォルトの名無しさん [2007/04/07(土) 17:22:07 ]
JComboBoxについて質問です。

項目によって、色・フォント・背景色などを
分けたいのですができますか?
もしできるなら教えてください。
お願いします。

372 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 18:50:31 ]
JComboBox ListCellRendererでググればやりたいことは見つかると思う

373 名前:369 [2007/04/07(土) 20:02:11 ]
>>370
どうもです。GUIはweb系しか作ったことがなかったんで悩んでました。
HTMLに慣れた身にはSwingは面倒くさくてなかなか作る気が起きませんね・・・。
カレンダー部分は線を描画して書くことになるのかなぁ。

374 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:53:24 ]
全部自前で描画してもいいし
適当にラベルをならべる程度でもいいし
お好きなように

375 名前:371 [2007/04/07(土) 21:37:25 ]
>>372
有難うございました。
やりたい事ができました。

376 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:33:25 ]
>>373
やる気がなければ何もできませんな
何で作るのよ

377 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:38:41 ]
本当はWEBアプリのほうが面倒なんだけどな
ダイナミックに動かすにはイベントは別言語を使わなければならないし、
環境依存性が高い

そして通信部分も再読み込みとか2度押し防止とかいろいろと考慮する必要有、と

378 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 02:30:49 ]
> 373
JLabelにHTML貼り付けでOK

379 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:38:16 ]
>>378
せめてJEditorPaneだと思ったらw

380 名前:デフォルトの名無しさん [2007/04/10(火) 22:05:12 ]
swingで作ったGUIアプリを
常に前面に表示させたいんですが、できますか?
もしできるなら教えてください。
お願いします。



381 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 22:11:17 ]
>>380
1.5 以降なら java.awt.Window#setAlwaysOnTop(boolean) を使う。

それ以前なら標準では無理。
例えば Windows なら JNI経由で java.awt.Window の HWND 得て、SetWindowPos すればできるけど。

382 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 22:20:42 ]
>>380
できました。
素早い回答ありがとうございました。

383 名前:382 mailto:sage [2007/04/10(火) 22:21:45 ]
すいません、僕は>>380です。
>>381さん有難うございました。

384 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:02:44 ]
すべてのコンポーネントのセットをJPanelをExtendsしたオリジナルなコンポーネントにしておいて
JFrameのレイアウトに置いていく作りにしてるんだけど、これでイケテル?

385 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:17:50 ]
いろんな意味で意味がわかんない

386 名前:384じ mailto:sage [2007/04/13(金) 00:30:50 ]
自分でも読んでて意味わかんないやw
巧く説明できないのでおやすみなさい

387 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:31:04 ]
www.tohoho-web.com/java/layout.htm
これの一番下の事を言っているのでは

388 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 02:46:21 ]
>>384
うーん、単にJPanelを置いてその中にコンポーネント配置していけばいいんじゃないのかな?

389 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 03:07:27 ]
>>384が言いたいのは、
public class HogePanel extends JPanel{...} として作っておけば、
JFrame, JInternalFrame, JApplet, JTabbedPane などに乗っけるだけで
いろいろ使える、って意味では?
再利用性を高めるやり方としては間違ってないと思う。
再利用の必要がないなら無駄だけど、個人的にこういう作りは好きだ。

390 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 03:27:30 ]
>>389
つまりJColorChooserみたいな複合ウィジェットを作って再利用ってだけの話なのかね?
JPanelじゃなくてJComponentでいい気がするけど…



391 名前:384 mailto:sage [2007/04/13(金) 22:13:53 ]
>>389-390
そのとおりです!
気持ちが伝わってなんか嬉しいっす。
JComponentですか。思いつきませんでした。どっちがメリットあるかなぁ。

392 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:03:48 ]
JPanelのソース見てみ。JComponentほとんどそのままだ。

393 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:46:11 ]
複合ウィジェットならJPanelが自然でしょ。

394 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:29:58 ]
>>393
awt では Panel 使ったけどが swing で JComponent が Container に
なったから JPanel にする必要は全くなくなったのでは…?

395 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:32:06 ]
>>393
どっからそんな情報が沸いてくるん?

396 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:35:58 ]
>>394
JComponentはObjectのようなSwingコンポーネントのルートクラスだから
継承するならいいけどぽとぺたやるならJPanelで

397 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:44:27 ]
>>396
具体的にJPanelのどの部分がぽとぺたに向いているのでしょうか?
あるいは JComponent のどの部分が向いてないのでしょう?

398 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:58:04 ]
背景が透明か不透明かが違いじゃないん?

399 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:03:47 ]
JComponentはこっそりabstractクラスなので、そのまま載せようとして
あれ? と思ったことはあるが、どうせ継承して使うだろうし、あえて
JPanelでなければならないことはなさそうだな。

ただ、ポトペタだとソースレベルで継承して使うことにはおそらくならな
いだろうから、JPanelでないと駄目かも。



400 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:18:23 ]
思想的にJComponent使うなら新しいコンポネント作るくらいの意味合いだな
JPanelを使った場合、JPanelの機能変更に引きずられる可能性がある
それを望むのであればJPanelの上にまとめればよい
独自コンポネントでJPanelに影響を受け手欲しくなければJComponent



401 名前:デフォルトの名無しさん mailto:age [2007/05/12(土) 15:54:29 ]
JFrameの外枠とかメニューバーのサイズを変える事はできるのでしょうか?
できないなら正確なサイズを知る事はできるのでしょうか?

402 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 16:35:13 ]
つ Insets

403 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 17:52:56 ]
ありがとうございます
JFrameの方はなんとなくわかったのですが
メニューバーの方はわからないのでもう少しヒントをくれるとありがたいです

404 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:11:44 ]
Dimension size = menuBar.getPreferredSize();
menuBar.setPreferredSize(new Dimension(size.width, 200));


405 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:35:47 ]
ありがとうござました

406 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:57:55 ]
JFrame上のKeyEventを常に取得したいと思いまして、次のようなクラスを

class testKeyEv extends JComponent {
  public testKeyEv(){
    enableEvents(AWTEvent.KEY_EVENT_MASK);
    addKeyListener(new stateCheckKeyHandler());
    setFocusable(true);
  }
}

setGlassPane()でセットして実行すると、始めはちゃんとキーイベントを取得してくれるのですが、
マウスでほかのボタンをクリックしたりすると二度とキーイベントを取得してくれません。

ちなみに stateCheckKeyHandlerはKeyAdapterをextendsしたのもです。

マウスイベントはほかのコンポーネントにそのまま渡して、KeyEventだけを常に取得し続けるには
どうすればいいでしょうか?

407 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:13:43 ]
そのフォーカスがあたったコンポーネントでは通常の動作はしていいの?

408 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:57:16 ]
>>406
最初から中のコンポーネントにフォーカス当ててそっちでキーイベント拾いましょう
# 関係ないけどリスナーを登録してイベントとるなら enableEvents() は必要ないんじゃなかったっけ?

409 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:47:41 ]
JTreeのノードをDnDで移動できるようにしたんだけど、その関係で
ツリーのノードによってノード毎に違うテキストのツールチップを表示しなきゃいけないんだけど、
この方法はJTreeのgetTooltipText()でノード別のテキスト返すように
オーバーライドするとして、ツールチップテキストを設定するタイミングはどのぶぶん?
カスタムセルレンダラ使ってるんでセルレンダラがレンダリングコンポーネント返す時にそのコンポーネントに
テキスト設定しようと思ってるんだけど、それで良いかな?

ググって漁ってみたんだけど他に思いつかない。アプローチが間違ってんのかすらも分からない。

教えてエロいひと。


410 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:05:28 ]
レンダラのタイミングだとレンダリングし終わるとその後ずっと呼ばれないし、
スクロールとかウインドウの重なり具合とか最大縮小するだけでもよばれるけどそのタイミングでいいの?



411 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:13:50 ]
ヒントもあたえたほうがいいか
JComponentのgetToolTipTextをオーバーライドすればいい

412 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:16:13 ]
「普通に」がぬけてた・・・
何のための引数かと

413 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:50:21 ]
TextField を f1,f2,f3,f4,f5,f6,f7

と言う名で作りました。
あらかじめNetBeansで個数分貼り付けちゃいました。

それぞれにある一定の処理をしたいのですが。
forなど繰り返し処理のなかで出来るようにしたいです。

JTextFieldの配列などに繋げれば出来そうですが、
それでは最初に全部個数分繋げる作業が必要になるわけです。
JTextFieldの数が大量になった場合大変ですから。

なんとか名前の数字を変更してアクセスする方法ないでしょうか。
よろしくお願いします。

414 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 22:41:50 ]
JTextFieldだけを乗せるJPanel(というかContainer)を作って、getComponentsを呼び出せばいいかもね

415 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:28:30 ]
メンバー変数としてf1,f2,...があるのならリフレクションで取れるよ。
ローカル変数だと出来ないけど。


416 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:38:03 ]
>>413
f1,f2,f3,f4,f5,f6,f7 は、とりあえず そのままにしといて、
配列必要になったら new JTextField[]{f1,f2,f3,f4,f5,f6,f7} して配列作るとかすれば?

417 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:37:48 ]
>>414さん、>>415さん、>>416さん
ありがさうございました。(^v^)

418 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:38:44 ]
>>415
そんな事はできてもする設計にしてはいけない・・・・
>>417
>>414案が妥当だと思った。が、別に特別にPanelを用意せずにnameプロパティに
何か分かりやすいのを振っておいてコンポネントをより分ければいいと思う。

419 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 07:37:22 ]
>>410
ありがと、できたよ。ソースコード見てみたけどJTree#getTooltipText(MouseEvent)が
回りくどい実装してたんだね。

420 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 13:55:22 ]
>>418
> そんな事はできてもする設計にしてはいけない

同じようなことをたくさんやるときに、利用するのはとても効率的だと思うよ。
リフレクション使って配列に格納するメソッドを用意しておいて、実際の利用は配列を使うというのがいいかと。
nameプロパティ使うのと、本質的な差はあまりないと思う。



421 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:29:51 ]
リフレクションってのは、フレームワークレベルで使うのはいいと思うが
一般のコードには入れない方がいいと思うんだ・・・・
だから>>420 の利用する部分との分離がいいな

422 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:45:44 ]
>>421
リフレクションを使うってことは,せっかく(記述が面倒な)Javaを使うことで得られる
強力なコンパイラの型チェックをスルーしてアクセスするわけだからライブラリや
フレームワークにしてそれなりにテストした上で使うのがいい使い方なんだろうね…
# ってかリフレクションを無駄に使ってるJavaアプリケーション見るとそれならもっと動的な言語使えよとか思う…

423 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:51:13 ]
プライベートなものも自由に触れるからな
アプリ側で出てきたときにはそれはもはや実装のバグとよんでもよいかと

424 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:01:45 ]
リフレクションって、どっちかっつーとコンストラクタ貰ってきて
インスタンス生成みたいな用途が多いと思ってたんだけど、

アクセス制限を回避するなんてキチガイじみた目的がメインで使う人もいるのか……

425 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:13:45 ]
>>424
使ってないんじゃね? 思いつく用途がそれだけだっただけで。

426 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:23:08 ]
>>424
ライブラリやフレームワークで独自のシリアライズとかする場合には
private なインスタンス変数にアクセスする用途に使われる
まぁメインの用途ではないよね.普通の用途なら Bean の getter, setter呼ぶのに使うとか?

427 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:04:55 ]
>>424
DIとかフレームワーク側は普通に使うよ

428 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:27:56 ]
ここで反論する理由がひとつでもある人は、使ってもいいと思う。
宣言をprivateにしておいて、値は特別な仕組みでリフレクション使って設定するようにして、通常のコードからは値が変更できないようにしておくとか。

429 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:29:52 ]
フレームワークで使うのは誰も否定してないんじゃね?

430 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:38:56 ]
ちょっとスレから外れてきた。 Java 低速GUI ネタよろ…



431 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:57:08 ]
今回の件に関しては reflection 使わずに
interface 定義してどうのこうのの方がよろしくね?

add した時に add された側(コンテナじゃなくてコンポーネント)で
呼び出されるメソッド(イベント)とかって無いんだろうか。

432 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:46:09 ]
>>431
HierarchyListener#hierarchyChanged(HierarchyEvent)
イベント内容で判断しないといけないけど。

433 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:42:08 ]
>>424
イディオムになるくらいよく出てくるならそこだけ纏めても別にかまわないと思うが->変なリフレクション
というか纏めてくれないとぬっころすって事にならんか?


434 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:58:32 ]
こんな感じのメソッドを定義しておけばいいんだよね。
static <T> List<T> getInstances(Object parent, Class<T>, String prefix)
でこんな感じで使えるようにする。
List<JTextField> fields = getInstances(window, JTextField, "f");

435 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:55:10 ]
>>434
設計からやり直した方がよくないか?
テキストフィールドのコンテナクラスを自作するとか。その程度の手間で解決できそうじゃない?

436 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:08:13 ]
ポトペタで同じような部品を並べていくとその手の変数名が
数値部分だけ違うインスタンス変数が並ぶんだよな。
手で作れば真っ先に配列か何かにするところなんだが。


437 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 01:56:41 ]
ポトペタで配列作ればいいじゃんw

438 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 04:42:38 ]
>>435
配置の自由度が低すぎるので採用できる場面は少なそう。
いまさら手コーディングでGUIも作れんし。
VEなりNetBeansなりが、コンポーネント配列に対応してくれればいいのだけど。

439 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:03:52 ]
>>438
ああ、ようやっと変なリフレクションが欲しい場合の文脈が読めた。
GUIビルダーつかってデザインした複数フィールドの時はたしかに欲しいかも。

普段は手で作ってるからそんなに欲しいと思わないけど忙しい時だと欲しいかもしらん。


440 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:11:52 ]
NeXTやOSXにはあるね



441 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 10:45:31 ]
リフレクションとこのぽとぺたとは関係ないぞ

442 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 11:15:12 ]
>>483
いや、そっちのコンテナじゃなくてjavaでいうならコレクションみたいな感じ。
そのコレクションをコンポーネント間で共有するか誰か管理クラスに持たせて問い合わせるようにすれば
コレクションそのものも、フィールドへもアクセスの自由度は確保できる。
外の様子知るためだけにリフレクションは流石にアプリケーションソフトとしてはまずい。

てか、javaでデスクトップアプリ作っててコレクション使う場合が俺には
クラスの動的ロード+コンストラクタorファクトリメソッド呼び出ししか思いつかん。
webフレームワークとかjavascriptならね。

443 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 11:27:18 ]
デスクトップアプリでコレクション???

444 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 14:00:09 ]
>>442
日本語でお・ね・が・い♪

445 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:04:37 ]
JTextField から派生して
初期化時にインスタンス管理クラス呼び出して
自分を登録するようなクラス作成すれば
ポトペタでも管理出来る。けどキモいな。

446 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 18:29:11 ]
ContainerListenerを使って、JTextFieldが追加されたときにArrayList<JTextField>に追加していくって手もあるな

447 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:06:07 ]
それだと、結局リフレクションが一番手間が少ない。

448 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 03:30:01 ]
結論はポトペタ使わずに手で書く、です…

449 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 11:23:39 ]
>>446が一番エレガントで無難だな

450 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 12:24:33 ]
それだとJTextFieldの振り分けが必要になるんじゃない?
そのための名前をどうするか。



451 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 12:34:39 ]
JTextFieldを継承したコンポーネントを用意すればいいだけだから問題ないだろ
もちろん変数はJTextFieldのままでいい


452 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 12:47:07 ]
>>446
間にJPanel1枚挟んでレイアウトするケースもあるし、
そう単純には行かないんじゃない?

453 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 13:44:12 ]
>>448
ララァは賢いな。

454 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:49:12 ]
シャアぁぁぁぁぁぁぁっぁああああ!!

455 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:08:48 ]
ざれごとはやめろよ

456 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 03:29:09 ]
>>455
じゃまです。

457 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 04:30:18 ]
>>451
わざわざ継承使ってコンポーネント作るなら、他に特別な仕組みがいらないリフレクションの方がいいと思うよ。
普通にGUIエディタが使えるし。
順番の指定とかはどうすんの?

458 名前:457 mailto:sage [2007/05/31(木) 04:36:09 ]
継承使うというのは、影響範囲がでかい。
単にコンポーネント配列のために継承使うのはあまりいいとは思えんのだが。
GUIエディタ使いたい場合だと、「変数名を適切に指定して、あるメソッドに食わせたら配列ができる」ってのが一番手軽で影響範囲が少ないと思うのだが。

ここでのリフレクション否定の意見って、「リフレクションだからリフレクションはダメ」という理由ばかりな気がする。

459 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 04:38:04 ]
>>456
そういうセリフあったっけ?

460 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 05:35:58 ]
クリリンのことか?



461 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:38:42 ]
>>459
シーンは違うがこれだな
ttp://www.geocities.co.jp/AnimeComic-Pastel/3829/words40_Gundam.html

462 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 10:02:26 ]
ああ、あったあった。

463 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:43:19 ]
>>457
GUIエディタってのがNetBeansなら継承やマーカーインターフェースは普通につけれるし
順番の制御をしたいのならなおさらかと

464 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 11:37:19 ]
どっちでもやりたいようにやればいいと言うことで。

順番制御とか考えなきゃならんなら
最初から手で書けよ感がするけど。

465 名前:デフォルトの名無しさん [2007/06/01(金) 21:38:57 ]
JFrame に Java3D の Canvas3D を配置すると、
JMenuBar で作成したメニューが Canvas3D の背後に隠れてしまうんですが、
解決できないものでしょうか。

466 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 21:45:35 ]
Canvas3D ってJComponents継承してる?

467 名前:465 [2007/06/01(金) 21:48:55 ]
継承していないです。↓こんなんです。
java.lang.Object
 extended by java.awt.Component
  extended by java.awt.Canvas
   extended by javax.media.j3d.Canvas3D

468 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 21:49:57 ]
>>465
JPopupMenu#setLightWeightPopupEnabled(boolean) に false渡してもだめ?

469 名前:465 [2007/06/01(金) 21:53:18 ]
JMenuBar, JMenu, JMenuItem しか使っていないんですけど。。。

470 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 21:58:08 ]
>>469
java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JMenu.html
> メニューというのは実質的には JPopupMenu が割り当てられたボタンのことです。

JMenu#getPopupMenu()



471 名前:465 [2007/06/01(金) 21:58:37 ]
はっ!これでうまくいったー!ありがとー。
JMenu fileMenu = new JMenu("ファイル");
fileMenu.getPopupMenu().setLightWeightPopupEnabled(false);


472 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 22:40:36 ]
AWTの[コンポーネントと混ぜる時点でどうしようもないんだよな
JOGLだったらGLJPanelで問題なしだが

473 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 10:24:38 ]
Java3D 1.5だとJCanvas3Dがある。


474 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 10:59:08 ]
Java3D1.5ってOpenGL1.5要求するらしいから結構きついな

475 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 11:08:55 ]
まともに対応しようとしないintelうぜぇとか言ってみるテスト

476 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 14:40:13 ]
Intelのチップセット内蔵グラフィックスだとJava 2DのOpenGLアクセラレートが使えないのは辛いです。。。
Intelのドライバの問題で対応できないのか、対応しないだけなのか分からないけど。。。

477 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 17:15:58 ]
Java2DのOpenGLアクセラレーションは有効にしても描画が崩れるだけなので使い道がねぇ

478 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 11:25:53 ]
JFileChooserでダイアログを出すと

ttp://2sen.dip.jp:81/cgi-bin/upgun/up1/source/up5993.jpg

のようにフォントの大部分が太字になってしまいます。

試しに
JFileChooser chooser = new JFileChooser();
chooser.setFont(new Font("Dialog", Font.PLAIN, 12));
のようにしてもダメでした。

どうすればこの太字をFont.PLAINにできるのでしょうか?
識者の方々、どうかアドバイスをお願いいたします。

OS:Windows2000、XP
JDK:1.6.0、1.6.0_01
でそれぞれ試してみました。

479 名前:デフォルトの名無しさん [2007/06/11(月) 12:05:15 ]
すみません、上げます

480 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:15:32 ]
e-class.center.yuge.ac.jp/jdk_docs/ja/api/java/awt/Font.html



481 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:16:55 ]
https://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Font.html
java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Font.html


482 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 14:05:12 ]
>>478
UIManager.setLookAndFeel()


483 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 14:23:31 ]
>>478

amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=LookAndFeel

フォントを指定して起動する
SwingのデフォルトのLook & FeelであるMetalはメニュー等のフォントがBoldでいまいち見た目がよくありません(JDK1.3までは普通だったのですが…)。JavaVMに起動オプションを与えることで、このフォントを変更することができます。

java -Dswing.plaf.metal.controlFont=Dialog-12 alpha.AppMain

また、JDK1.5ではMetalLookAndFeelでPLAINなフォントを使用するために以下のオプションが利用可能です。

-Dswing.boldMetal=false

コマンドラインオプションではなく、Javaコード中で設定する場合には以下のようにします。

UIManager.put("swing.boldMetal", Boolean.FALSE);




484 名前:478 mailto:sage [2007/06/11(月) 15:58:38 ]
>>483
おおお、ベストアンサーでした。
ありがとうございます!
これで他のコンポーネントもsetFont(new Font("Dialog", Font.PLAIN, 12))をしなくて済みました。

他にもレスをくださった皆様方ありがとうございました。

485 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:16:40 ]
これって何でボールドに変更したのか謎だよなぁ…

486 名前:デフォルトの名無しさん [2007/06/11(月) 17:23:13 ]
MigLayout使ってる人って居る?
シンプルで結構良さげだったのだけど。

487 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 17:38:11 ]
まず>>486が使ってみてメリット、デメリットを押さえた感想を教えてくれ

488 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 21:52:58 ]
>>484
やってること同じかもしれないけど
terai.xrea.jp/Swing/FontChange.html

private void updateFont(final Font font) {
EventQueue.invokeLater(new Runnable() {
public void run() {
FontUIResource fontUIResource = new FontUIResource(font);
UIDefaults defaultTable = UIManager.getLookAndFeelDefaults();
for(Object o: defaultTable.keySet()) {
if(o.toString().toLowerCase().endsWith("font")) {
UIManager.put(o, fontUIResource);
}
}
//SwingUtilities.updateComponentTreeUI(MainPanel.this);
recursiveUpdateUI(MainPanel.this);
frame.pack();
}
});
}
private void recursiveUpdateUI(JComponent p) {
for(Component c: p.getComponents()) {
if(c instanceof JToolBar) {
continue;
}else if(c instanceof JComponent) {
JComponent jc = (JComponent)c;
jc.updateUI();
if(jc.getComponentCount()>0) recursiveUpdateUI(jc);
}
}
}


489 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:22:00 ]
>>485
英字さえ見栄えがよけりゃいいって感じかと

490 名前:デフォルトの名無しさん [2007/06/12(火) 02:50:08 ]
スレ違いかもしれないが、質問。
Swingでアプリを作りたいんです、得意先台帳に送り状印刷機能がついたようなのなんですが。
Accessみたいにプリンタ(ドットインパクト)の指定と用紙サイズ(ヤマトだと15*4 1/2インチ)を指定して、
ボタン一発で印刷ってできるのでしょうか?
詳しい方教えてください。
よろしくお願いします。



491 名前:デフォルトの名無しさん [2007/06/12(火) 03:48:24 ]
それを自分で作るんだろうが。
javaでドラクエ作れますか?て聞いてるのとかわらんな。
最近javaスレでこの流れ多いな。

492 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 04:37:40 ]
POIでいけるんじゃね?

493 名前:デフォルトの名無しさん [2007/06/12(火) 08:47:19 ]
>>490
PrintRequestAttributeSet

494 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 10:26:53 ]
>>490
プリンタドライバ経由ならできるよ。
javax.printパッケージを見るといい。

495 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 11:38:35 ]
佐川やヤマトの送り状とか契約書とかドットインパクトでの印刷はよくやるな
業務系だと連帳は基本だしな

ただ、Swingとあまり関係のないところだな
ネイティブのプリンタのプロパティ使いたい場合awtのダイアログを使ったほうがいい場合もあったような

あとitextあたりでPDFを生成して印刷はAdobeReaderに任せるという方法もある

ヤマトならcsvとかXML作ってヤマトが無料配布している送り状印刷ソフト使う手もある
備考欄とかイマイチ文字数が足りないとかあるけど、細かいカスタマイズがしたいとかなら
予算次第(&個数)だがヤマトシステムに話をしたほうがいいかも

496 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 12:32:14 ]
毎月1000部くらい刷るって言ったらソフト作ってくれるのかな


497 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 12:54:31 ]
>>496
作ってくれるかどうかはお金次第でしょ。

498 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 13:35:48 ]
あとはシステムだけじゃなくそこの担当地区の営業さんの力次第ってのもある
地区によっては厳しいところもあるからそういうところはプッシュしてくれる

でも1000部程度で乗せるものによっては自前で印刷したほうがいいかも
長期間にわたって定期的に発送などならちゃんと契約すれば自前で印刷とか梱包もやる必要はないよ
資材とか送るとヤマトのほうで全部やってくれる

1000枚の送り状番号の管理とか印s夏して箱詰めとかが面倒だと思ったら
まずは近くの営業の人(ドライバーとか)に話をしてみるといいかと

499 名前:デフォルトの名無しさん [2007/06/12(火) 13:36:03 ]
>>497
簡単なんだから自分で作れよ。

500 名前:デフォルトの名無しさん [2007/06/12(火) 23:59:02 ]
皆さん(>491除く)、色々と有難う。

PDFを使うやり方や、ダイアログを使うやり方だと、
ボタン一発ではないので面倒くさがられてしまいます。
現在の使いかただと、キー入力のスピードに画面の表示が追いつかないくらいなので。

>>493,494氏にお教え頂いたのを勉強してみようと思います。



501 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 00:25:39 ]
PDFを使う利点はプレビューできるってとこだな
Accessとかで手軽にプレビュー作れてたシステムの置き換えに使うといい
あとダイアログはだす、ださないだけの違いだからどうにでも

現在の使い方だとキー入力に画面が追いつかないってのが意味不明

502 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 00:31:46 ]
javax.printだと、Graphicsに書き込むことには違いないから、JComponentのpaintComponentsからも同じ処理呼び出せばプレビュー自体は比較的簡単だよ。
標準で持ってて欲しいとも思うが。

503 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 01:56:40 ]
PDFを使う利点は偽造されにくいっていうのも
どこかのサイトに書いてあったけど本当?

504 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 02:52:14 ]
印刷の途中仮定という意味でなら、PDFなんて中間形式使わずに直接印刷したほうが偽造されにくい。

505 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 08:43:41 ]
xsl-foのこともたまにで良いので思い出してあげてください。
まさに組版並の印刷用途向け中間形式なんだが。
まあ、まともにサポートしてるライブラリは商用ライセンスだが。
xsl-foをjava2dにさえ描画できればあとはどうにでもなる。


てか、○○さん以外ありがとう
とか言ってる奴たまにいるけど馬鹿かこいつら?

506 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 09:46:26 ]
かわいそうな人はスルーした方がお互いのため。

507 名前:デフォルトの名無しさん [2007/06/13(水) 10:04:45 ]
JPopupMenu#show を呼ぶと、デフォルトで、最初のメニュー項目が
選択されてしまうのですが、これを選択されないようにすることはできますか?

508 名前:478 mailto:sage [2007/06/13(水) 10:33:04 ]
>>488
おお、情報提供ありがとうございます。
再帰的にコンポーネントをゲットしてフォントを変えていくんですね。
参考になります。

509 名前:デフォルトの名無しさん [2007/06/17(日) 23:55:36 ]
すいません、swingで
javax.swing.JOptionPane.showMessageDialog(null, "hello");
で helloと表示されるダイアログが表示されるのですが、
このhelloのフォントってどうやって指定するのでしょうか?

リファレンスみたのですが、どうもそのような設定項目がなくて…



510 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:12:28 ]
一応出来るけど、OSがメッセージだすように環境依存ってことになるから
将来のバージョンで動作が保障されないとかそういうことになってもいいのかい?

カスタマイズしたダイアログがほしいなら自前で作成すべき

あと最初の引数をnullにする場合なんてありえんと思う



511 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:30:00 ]
>>510
コマンドラインから出したり。

512 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 10:05:59 ]
>>509
javax.swing.JOptionPane.showMessageDialog(null, "<html><font size=20 face=\"MS 明朝\">hello</font></html>");

513 名前:デフォルトの名無しさん [2007/06/18(月) 13:40:36 ]
>>509
LookAndFeel

514 名前:デフォルトの名無しさん [2007/06/18(月) 14:53:27 ]
VB.NET C# 使いなんだがマルチプラットフォームに興味があるのでJava使ってみたいんだけど・・・・気になる点が2つほど

1.
LinuxとWindowsで基本的なコントロール(テキストボックスとかリストビューとかグリッド)使ってDBのデータIOを行うアプリを作りたいんだけど
LinuxとWindowsは意識せずにまったく同じソースでいいの?
それともVMごとにコンパイルオプションを指定するような感じになるの?

2.
.NETと比べてUIのモッサリ感はどう?
.NETのモッサリ感は我慢できるレベルだという定義で
内部処理の高速性は気にしないものとします。

515 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 15:20:17 ]
>>514
1. 同じソースで同じバイナリ(クラスファイルだけど)でよい
2. 起動はモッサリだが動けばUIの速度は普通(昔はモッサリだったけど最近はよくなってきた)

516 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 15:23:55 ]
>>514
SwingはJava5 Java6 など新しいものの使用をすすめる。
WinFormとどっこいくらいには快適になってる。

517 名前:デフォルトの名無しさん [2007/06/18(月) 16:04:38 ]
>>515
>>516
レスサンクス

なるほど 話の通り完全に同じソースでいけるわけなんだ
やっぱ便利そうだなぁ
C++でマルチプラットフォーム用の書いてたときはDefine切りまくりで
頭弱いから途中で頭がこんがらがってたしw

モッサリ感は現状最新のものを使って進めていけば.NETと同じレベルになりそうだからその方向でやってみようかなと
本当ははドトネト選ぶ時にJAVAにしようかな?と迷ったんだけど重いって話を腐るほど聞いてたんでドトネトにした
実際使ってみたらドトネトも思ったよりもモッサリで・・・・新しいソフト作る時はJAVAも視野に入れてもいいかもと思いだした

どうもこのスレの感じからすると普通に問題なさそうだからちょっと簡単なソフトから使ってみることにするよ

518 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:24:28 ]
もっさり具合はアプリによるのでは?
.NETでもそうだけど、メモリは食うね。HDDとメモリが速ければ大丈夫。キャッシュの量にも大きく左右される。
Pentium4系だとJavaの速度は遅めでAthlon64やPentiumM系列はあからさまに速い。

1.4.1以降はGUIの描画にたとえばWindowsだとDirectDrawを使ったりハードウェアアクセラレーションを利用している。
6.0でVMの大幅に速度向上してるのでクライアントサイドなら6.0以上をすすめる。便利なAPIも多いし。
jdkに付属のswingsetデモを見てみるといいかも。

519 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:41:29 ]
あとは jar 一個ってわけにいかないアプリだと
起動スクリプトを環境毎に書く必要有り。

つっても path や classpath の指定方法が違うだけなんだけど。

520 名前:デフォルトの名無しさん [2007/06/18(月) 16:58:09 ]
>>518-519

まぁアプリによるといえばよるんだけどUI描画全般は遅いと感じてしまう・・・

いい情報サンクス!
クライアントAPPなので とりあえずそのバージョンを最低レベルとして環境整えてみるわ

>起動スクリプトを環境毎に書く必要有り
まぁそれくらいなら別に問題ないとおもうさ



521 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 17:17:22 ]
>>519
MANIFEST.MFのClass-Pathエントリにjarファイル名を並べれば
パス通るよ。

522 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 17:34:19 ]
IDEがマニフェストファイルにクラスパス通してくれるから
ほとんどの場合何もする必要はないと思うが

523 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 17:37:35 ]
とはいえ快適に動かす場合、アプリごとにVMオプションを変えるのが普通だから
フック用のexeとかスクリプトおいておいたほうがいいけどな
マニフェストファイル内に参考VM設定入れれるようにしてほしいな

webstartは多少入れれるようになったし、アプリケーションの塚と削除、
プログラムやデスクトップアイコン登録やってくれるのはいいが、
肝心のスタンドアロンアプリで出来ないのが納得いかねー

524 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 18:00:08 ]
まあ、File f = new File("."); hogehogeとかやってはまるなよ。

525 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 18:18:13 ]
>>524
Swingとどういう関係が?

526 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:22:25 ]
そもそも>>514がswing関係ないだろ

527 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 09:32:28 ]
>>519
fatjarでまとめてやれば、1個でおk。
ただ、LGPLなライブラリをfatjar化したときのライセンスが気になる。
動的リンクとみなしてくれるのか、静的リンクとみなされるのか。

528 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 11:43:12 ]
いや、普通にLGPLのライセンスに従うだけ

静的なのか動的なのかでは動きは変わらない

LGPLはライブラリのバージョンアップなどが合った場合差し替える権利を保証するだけ
だからアーカイブ方法を提示してあげるだけだよ

静的だとオブジェクトファイルやコンパイル時のバージョンなどを明記すればよかったが
動的だと差し替えが容易なのでその記述が簡略化されるだけ

529 名前:デフォルトの名無しさん [2007/06/25(月) 23:13:07 ]
Java5でUTF-8の濁点入りの文字列をJTextFieldで編集するとカーソルがずれて、
Java6で濁点入り文字列をJLabelで表示すると濁点が1文字として表示されるんですが、
普通に1文字で表示してしかもカーソルがずれない方法ないもんでしょうか?

530 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:28:09 ]
環境は?
俺はずれたことないのだけれども、そのずれる文字コードはなに?



531 名前:デフォルトの名無しさん [2007/06/26(火) 02:08:43 ]
フォントに問題あるんじゃないの

532 名前:529 mailto:sage [2007/06/26(火) 02:34:40 ]
ごめん、スレまちがえた。
MacのSwingの話です・・・
Mac板逝ってきます。


533 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:51:45 ]
環境によって違うとしても
その違いは仕様で片付けるにはあんまりだな。

534 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:43:31 ]
Macでも日本語がおかしいとはきいた事がないな

535 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:51:27 ]
macのネイティブLaFにはバグがあるけどな。

536 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:53:31 ]
Macじゃなくて、Windowsでも再現するかはチェックしたいな・・・
再現コードがほしい

|-`).。oO(・・・・・・MacのMustangの日本語に関する問題としては、
 レンダリングエンジンの問題の件、直るのか?
 QuartzというMac固有のレンダリングエンジンからSunのレンダリングエンジンに変更されて
 フォントの種類によってベース位置がずれる問題・・・。
 半年以上前から、MacのJavaスレで報告されていたのに、新しい開発版Javaが出てこないから
 直してるのかわからねえ・・・)

537 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:57:24 ]
>>529
Mac OS Xって NFD じゃなかったっけ?

1.6以降なら java.text.Normalizer あるから簡単に NFC に変換できる。
1.5以前は知らん。あと NFC に変換してもフォントが対応してるか俺は知らん。

538 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:41:34 ]
そもそも"UTF-8の濁点入りの文字列"ってUnicodeでいったらどこの番地?
charsetとencoding混同してる時点で伝わってないかと。

539 名前:デフォルトの名無しさん [2007/06/26(火) 18:26:19 ]
むずかしいことはわからないが、リッチクライアントが待望される現在、
Swingがいまひとつ冴えないのは何でだろう。素人的に考えるに、次の
2点だと思う。
(@)開発ツールあまりに貧弱
VisualEditorというものを使ったが、遅くて快適に使えない。
ちなみにメモリ1G。かつてのVisualBasicとどうしてもくらべて
しまうが、なぜこれほどの差があり、差がちじまないのか。

(U)見栄えが今ひとつ
フォントなど見栄えが悪い。アンチエイリアス「java -Dswing.aatext=true」
なども使ってみたが今ひとつ。
(いちいち引き合いにして悪いが、従来のVBでつくった画面にくらべると
そう感じざるをえない)

それ以外にも少し機能が貧弱な面があるが、少なくともこの2点が
改善されたら、俺は積極的に使いたいと思う。
フリーソフトニいろいろケチをつけて申し訳ないが・・

540 名前:気まぐれアナスイ mailto:!(ΦyΦ+){秘密です。} [2007/06/26(火) 18:43:35 ]
>>539
開発し易いsoft.と云うのは構成配置を覚えるにはいいですが?
そのsoft.を使用し作成されたapplication.と云う物は、
必ずsoft.に依存します… 当たり前に規約にも影響する物です。



541 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:49:31 ]
>>539
何故Netbeansを使わない。
そして、aatext=trueは、・・・・

まずは、>>539の知識を広げるところから始めた方が有用そうだ。
Swingの表現力を見るために、V2Cを見てみることをおすすめします。

542 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:57:12 ]
フォーカスの順序とかもっと簡単に指定できないかなあ。
結構お客さん、こだわるんだよなあ。

543 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 19:02:59 ]
aatext=trueはsunの5.0しか効かない。それに今はデフォで有効だろう。
さらに引数与えても捨ててるはずだけど。

LCDテキスト用AAアルゴリズムが追加されたけど実行後にプログラマが
最適なアルゴリズム選ぶ手段がjavaには無い事ない?

javaらしいって言ったらSwingの描画は全てJava2DだからJava2Dでできることは全て
GUIへフィードバックできるよね。

544 名前:デフォルトの名無しさん [2007/06/26(火) 19:05:59 ]
>>541

V2Cを見ました。
すばらしい!
たぶんソースコードは公開されてないんでしょうね



545 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 19:06:08 ]
Swingが流行らないのは、単に作るのが面倒だからじゃね?
プラットフォーム互換性を持つ反面、使いづらいレイアウトマネージャ、
デザパタの教科書に使えるくらい美しい(と言われる)が、取っつき悪いクラス設計、
そして優れたGUIデザイナといわれるNetBeansがマイナー扱い。

業務でJava GUIクライアント作ったんだが、
他の連中がメンテできない。正直公開している。
ま、他の連中のスキル不足とかノウハウ共有が悪いとか、
他に理由はあるんだけどさ。

546 名前:545 mailto:sage [2007/06/26(火) 19:07:09 ]
公開じゃねえ後悔だ。orz

547 名前:デフォルトの名無しさん [2007/06/26(火) 19:09:55 ]
>>541

VisualEditorを使った理由。
 Eclipseを使っていたから。
 たまたま市販の参考書が多かったから

今後はNetbeanにシフトしたいな
SUN純正だし


548 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 19:17:57 ]
>デザパタの教科書に使えるくらい美しい(と言われる)が、取っつき悪いクラス設計
GUIは中途半端なMVCだけどな

549 名前:デフォルトの名無しさん [2007/06/26(火) 19:28:17 ]
>>540
ユーザインタフェース(要は画面)をつくる場合コードからガリガリ書く
のはばかばかしいので、マウスのドラッグ&ドロップで簡単に画面アプリを
作成できる開発支援ツールがあれば大変重宝します。
特にエンドユーザーに見せるため一度しか使わないプロトタイプ画面
などはそうやって即効で作成したいところです。
当然本開発になっても仕様変更など生産性は著しく向上します。
ところがツールで生成したコードが著しく汚くて冗長だと、コード
のメンテナンス性が低くなり、ツール使用によるメリットが半減して
しまいます。ツールに依存していても、コードを判読するケースは
あるからです。
つまりツールが自動生成するコードは、まるで有能なプログラマーが
一から開発したかのように合理的で明快なコードである必要があります。
そうでないとツールは普及しないでしょう

550 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 19:53:05 ]
レイアウトマネージャが使いにくいって・・・
VBとかのほうが苦労するだろ
絶対座標マンセーならかまわんが、ウインドウリサイズとか対応するのきついぞ

そもそもJavaでGUI作るのにVEって・・・
あれはSwingやJavaのGUIを陥れるために作られたものと考えるくらいがちょうどいい



551 名前:デフォルトの名無しさん [2007/06/26(火) 20:33:31 ]
仕事でNetBeans使ってる人って結構いる?

552 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:39:46 ]
結構いると思う
5.0からは複数のプロダクトで使われてるのみてる

大手はRSAとかだけど重すぎてきつい

553 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:32:39 ]
>>551
うちの奴らはGUIの作成のみに使ってる。他はEclipse使ってるみたいだが。。。

Swing流行らせるためには、まずはNetBeansが機能も知名度もEclipse並に
なってもらわないとだめだね。

554 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:40:43 ]
日本だとNetBeansの動きがやや鈍いね
海外は動きが速い

555 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:49:24 ]
本屋にくだらないEclipse本があふれてるからねー

海外だとそこらへんの事情も違うのかな・・・

556 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:56:01 ]
まずはJREをどう抵抗少なく配布するかじゃないか?
結局ここが一番のネックに感じる。

launch4j に JRE 同梱して、
「exe 叩けばOK」な形で配布すると
割と抵抗なく受け入れてもらえるんだが、
人としてこのファイルサイズはどうなのって感じが。

557 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:14:40 ]
gcj使ってるひといる?

558 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:22:23 ]
>>556
アプリとして有用であればランタイムが大きくても気にしない

のが正解かと

559 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:49:47 ]
>>556
Consumer JREがどうなるか気になるね。
軽量化してくれればJRE同梱も納得できるサイズになるかも。

560 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:56:28 ]
>>558
Delphiも結構デカくなってたしなあ・・・。



561 名前:529 mailto:sage [2007/06/26(火) 23:16:16 ]
Mac板から帰ってきました。
NFCとNFDについて勉強してきたんで、なんでこんなことになるか
理解できました。
ファイル名を扱うツールを作ってるんですが、ファイル名を取得して
テキストエリアに表示するサンプルを作って試したら問題が再現しました。
以下、サンプルコードです。


562 名前:529 mailto:sage [2007/06/26(火) 23:16:56 ]
package test;

import java.io.File;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class DakuonTest {
public static void main(String[] args) {
try {
JFrame frame = new JFrame();
JTextArea text = new JTextArea();
frame.getContentPane().add(new JScrollPane(text));

File[] files = new File(args[0]).listFiles();
for(int i=0; i<files.length; i++) {
text.append(files[i].getName() + "\n");
}

frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}


563 名前:529 mailto:sage [2007/06/26(火) 23:22:03 ]
第一引数のパスのディレクトリのファイル一覧を取得し、
1行に1ファイル、テキストエリアに表示しています。
「ピクチャ.png」があった場合、
Java 5の場合、ピは1文字で表示されますが、カーソルはずれてます。
Java 6の場合、ヒ゜と表示されます。


564 名前:529 mailto:sage [2007/06/26(火) 23:34:10 ]
ついでですが、濁点の入る文字が三つ以上続くファイル名でJava6の場合、
濁点がずれて表示されます。
「ががが.txt」
の場合、
「か゛かか゛゛.txt」
と見えます。
Appleのバグレポートにあげようかと思ったんですが、こんなもんどうやって
英語で説明したものか・・・

565 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:35:58 ]
>>563
>>536 が言ってるフォントレンダラの問題なんじゃないかと推測。

1.5 -> Quartz という Mac 本来のエンジン使ってるので、NFD でも 一文字として表示する、
    けど Java と Quartz の連携が中途半端で文字の大きさとかの情報が渡ってなくって
    カーソル位置がずれる。

1.6 -> Sun のエンジンは NFD は 別々の文字として表示する。

あくまで推測だから本当のところはわからんけど。

566 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:40:06 ]
1.5までは合成文字未対応だから、1.6でjava.text.Normalizerを
通すのがまっとうな解決法だろうなぁ。


567 名前:566 mailto:sage [2007/06/26(火) 23:41:05 ]
いや、比較する訳じゃないし、これはあくまで描画上の問題ですね……


568 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:56:10 ]
比較する訳じゃないのに、Normalizeされた文字列を
表示しようとするのが間違い。
MacのFSのUTF-8はNormalizeされてるので、取ってきた後
deNormalizeしてから表示するべき、ってことなのかなー。

569 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:00:03 ]
macオワタ


570 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:03:58 ]
macは知らんがレンダラのフォントの扱いの問題?
appleこういうの多いよね。



571 名前:529 mailto:sage [2007/06/27(水) 00:29:08 ]
とりあえずAppleに「直せや」ってねじ込んで、駄目なら568さんの方法で
自分のコードを改修しようと思います。
その場合Java5については諦めるしかなさそうですね。

ついでなんでさらにMacのSwingについてぼやきます。
日本語キーボードを使っていると、KeyEventのgetKeyChar()とgetKeyCode()の
戻り値が矛盾します。
英語と日本語キーボードで配置が変わらない数字やアルファベットのキーなら
問題ないですが、記号だとgetKeyCode()の値がおかしいです。
たとえば@キーの場合、getKeyChar()は'@'を返しますが、
getKeyCode()はKeyEvent.VK_OPEN_BRACKET(0x5B)を返しました。
キー操作の多いアプリで、キーコードとアクションを関連づけてるんで
しゃれになりません。
バグレポートは投げておきましたが、なんでこんな基本的なバグが
何年も放置されてるんだと・・・


572 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:52:29 ]
おんなじ現象で困ってる人
ttp://www.starseed.ne.jp/ikemen/diary/tdiary/?date=20070622#p02

573 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 02:08:00 ]
mac版はアップルが実装してるからなぁ・・・
VMが昔はたくさんあったが今は淘汰されてSunのばかりになったことも移植性があがった原因なんだよな
しかしLinuxとWindowsは問題ないというのが歯がゆい

574 名前:デフォルトの名無しさん [2007/06/27(水) 08:54:46 ]
VEでjspinnerって入力できるの?

575 名前:529 [2007/06/27(水) 09:21:07 ]
>>572
すんません、それ僕です。



576 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:37:18 ]
>>574
Choose Beanすれば何でも可

577 名前:574 [2007/06/27(水) 09:43:30 ]
>>576
なるほど、ありがとうございます。

578 名前:574. [2007/06/27(水) 09:56:55 ]
連続質問すいません。
JSpinnerで入力した値を取得したらNullPointExceptionが出てきて困っています。
JSpinnerは
JSpinner SP_Date = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH ));
SP_Date.setBounds(new Rectangle(147, 191, 113, 21));
SP_Date.setUI(new BasicSpinnerUI());
SP_Date.setModel(new SpinnerDateModel());

という感じで作成し、

String TestDate = SP_PurchaseDate.getValue().toString();
で取得しようとしているのですが…

579 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:03:28 ]
setBounds・・・ゴクリ

580 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:43:57 ]
>>578
JSpinnerの使い方間違ってね?
・JSpinnerのコンストラクタにSpinnerModel指定したのなら、setModel()は不要
・SpinnerDateModel使うのなら、モデルに対してgetDate()すればDate型で値もらえる

それと、変数名は小文字で始めようぜ。Javaの流儀だ。



581 名前:529 mailto:sage [2007/06/27(水) 22:24:31 ]
もはやSwingと関係ないんですが、MacのJavaでかなり衝撃の事実が
発覚したんで書きます。

new File("ががが.txt").createNewFile();

で作られるファイル名が「か゛かか゛゛.txt」になります。
あと、564に書いたことは間違っていて、
「ががが.txt」が「か゛かか゛゛.txt」と見えるのではなく、
Javaで「ががが.txt」を作ると「か゛かか゛゛.txt」が出来る、という話でした。
ひどすぎる・・・

Java6の場合、

new File(Normalizer.normalize("ががが.txt", Normalizer.Form.NFD)).createNewFile();

と書くと正しいファイルが作れましたが、多分Java5だと
どうしようもないんじゃないでしょうか。

スレと関係なくてすみません。

582 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:16:12 ]
普通に日本語使っただけでNormalizerが必要ってのもおわっとるな
Mac対応はやめよう
LinuxとWindows、Solarisだけでいいや


583 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:25:53 ]
>>581
変な挙動だね……

ががががが.txt みたいに「が」の個数増やすと、どーなるんだろとか
がぎぐげご.txt みたいに濁点は付いてるけど別の字の場合とか
興味があったり

584 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:28:15 ]
macオワタ\(^o^)/


585 名前:529 mailto:sage [2007/06/27(水) 23:42:19 ]
>>583
実験してみました。

がががが.txt -> ががかが?.txt
ががががが.txt -> ががかかが??.txt
がががががが.txt -> がががかかが??.txt
がぎぐげご.txt -> がぎくけご??.txt
がぱが.txt -> がはか??.txt(最後の「か」に半濁点付いた後に濁点があります)
がぱがぱ.txt -> がぱかば?.txt(最後のばの後に半濁点が付いてます)

なんか頭痛くなってきました・・・

586 名前:529 mailto:sage [2007/06/27(水) 23:44:53 ]
すんません、コピペじゃ駄目みたいなんで書き直します。

がががが.txt -> ががかが゛.txt
ががががが.txt -> ががかかが゛゛.txt
がががががが.txt -> がががかかが゛゛.txt
がぎぐげご.txt -> がぎくけご゛゛.txt
がぱが.txt -> がはか゜゛.txt(最後の「か」に半濁点付いた後に濁点があります)
がぱがぱ.txt -> がぱかば゜.txt(最後のばの後に半濁点が付いてます)

587 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 05:20:04 ]
>>586
ソースの文字コードだけど何使ってる?
コンパイルする時に、-encodingオプション指定すればよくなくね?
WinのコードとMacのコードは違うしそこらへんの問題じゃなくて?

588 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 09:37:16 ]
String s = "\u304c\u304c\u304c\u002e\u0074\u0078\u0074";
System.out.println(s);
new java.io.File(s).createNewFile();
をwinのJDK5でコンパイルして、バイトコードをmacに持っていってJDK5環境で実行すると、
println表示は「ががが.txt」だけど、作成されたファイル名は「がかが゛.txt」になるね。
macはサブで、あまり本格的にjavaでいろいろやったりしてなかったんで、
macのjava実装がこんなもんだということにちょっとびっくり。

589 名前:574. mailto:sage [2007/06/28(木) 09:50:31 ]
>>580
ありがとうございます。
getDate()ですね。

あと、変数名おかしいのも指摘していただいてありがとうございます。

またひとつ質問があるのですが、
JSPinnerで 日付のみを表示することって可能でしょうか?

2007/06/28 00:00:00 という表示を
2007/06/28 という表示にしたいのですが…


590 名前:588 mailto:sage [2007/06/28(木) 10:22:52 ]
分解後のリテラル"\u304b\u3099\u304b\u3099\u304b\u3099\u002e\u0074\u0078\u0074"だと、
ファイルとして「ががが.txt」が生成されるけど、逆にwin環境では化けファイル名になる。
もしかしてmacでNormalizerを使って正しいファイル名を生成できたとしても、
それをwinに持ってきて正しいファイル名にはならない?
うちはJDK5環境のままなんでNormalizer周りを確認できないけど。



591 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:38:04 ]
>>590
> 逆にwin環境では化けファイル名になる
NFD使われた程度で化けるならWin側にも問題はあると思うけどね。
NFCが正しいユニコードってわけじゃないし。

まぁ、>>586 のはバグだろうけど。

592 名前:588 mailto:sage [2007/06/28(木) 10:46:23 ]
>>589
JSpinner#setEditorを使って、
setEditor(new JSpinner.DateEditor(sp, "yyyy/MM/dd"))

593 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:49:40 ]
名前欄が……orz

594 名前:589 [2007/06/29(金) 00:15:08 ]
>>592
ありがとうございます。できました。
でも次はデータを取得したらなぜかぬるぽになる・・・

sp.getValue().toString() とかやってみたのですが…


595 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:36:31 ]
commitEdit しないと値が確定しないからぬるぽなんじゃね?

596 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:37:53 ]
ソースさらさんとわからん

597 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:40:59 ]
>>594
spがnullなのかsp.getValue()がnullなのか。
データ取得のタイミングが早過ぎてスピナがまだ構築されていないとか。
試しにこういうのを作ったけど普通に取得できたよ。
JFrame f = new JFrame();
f.setLayout(new java.awt.FlowLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JSpinner sp = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH ));
sp.setEditor(new JSpinner.DateEditor(sp, "yyyy/MM/dd"));
sp.setUI(new javax.swing.plaf.basic.BasicSpinnerUI());
f.add(sp);
JButton b = new JButton("A");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(sp.getValue());
}
});
f.add(b);
f.pack();
f.setVisible(true);

598 名前:594 [2007/06/29(金) 00:47:44 ]
>>595
>>596
ありがとうございます(涙

>>597
うわマジありがとうございます(号泣
さっそくやってみます!!

599 名前:529 mailto:sage [2007/06/30(土) 10:08:36 ]
遅レスですが。

>>587
ソースはShift_JISですが、.classファイル中では変換されちゃってNFCなUTF-8の
コードで記録されてるんで関係無いっぽいですね。
MacのファイルシステムはNFDでファイル名持ってるけどNFCのファイル名渡されると
NFDに変換するみたいなんですが、Java VMのそこら辺の実装にバグがあるっぽいです。

>>591
Windowsは最初っからNFCのファイル名のみを渡されるのが前提で、
NFDのファイル名をNFCに変換する機能とかが無く、NFDの濁点のフォントを持ってないんで
化けるみたいです。
まあ、仕方ないかと。

Appleに報告したら1日で返事が来て追加情報を求められました。
さすがにやばいと思ったんでしょうか。

あと、無理矢理Swingに話を戻すと、JTextComponentはNFCみたいなんで、
自分のアプリではファイル名はNFCで扱い、java.io.Fileを生成するときだけ
MacではNFDに変換するようにしました。

600 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 14:12:28 ]
クラスファイル内のエンコーディングはUTF-8だったのか



601 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 15:56:39 ]
>>600
だからsunのJDKの実装ではReaderのデフォエンコーディングがUTF-8なんだったはず。

602 名前:デフォルトの名無しさん [2007/07/02(月) 17:46:19 ]
JFrameから他のJFrameのボタンを押すことって可能でしょうか?

今AとBという画面を作って、Bに検索窓を作って、クリックした内容がAウィンドウのテキストフィールドに反映するように
しているのですが、そこからさらにBウィンドウの「確定」ボタンを押すと、Aウインドウでも「確定」ボタンを押したのと同じ状況にしたいのですが…


603 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 18:07:29 ]
普通にそのロジックが入ったメソッドを呼べばいいだけでは?
イベントの中ではそのメソッドを呼ぶようにするだけ

Swingの中で押したように動作させるという意味ならそのまま命令があるけど、APIマニュアルをよく見てみよう

604 名前:594 mailto:sage [2007/07/03(火) 11:12:10 ]
>>597


すいません、spがnullになってしまいます。。。
EclipseでgetJContentPane()に自前で以下のコードを追加したのですが…

  JSpinner sp = new JSpinner(new SpinnerDateModel());
sp.setUI(new BasicSpinnerUI());
sp.setEditor(new JSpinner.DateEditor(SP_checkDate, "yyyy/MM/dd")) ;
jContentPane.add(sp);

そして、ボタンを押したときのコードはこれです。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date spData = sdf.parse(SP_checkDate.getValue().toString());

なぜかspがnullになっています。。。 



605 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:28:07 ]
>>604
Swingの前にJavaの勉強した方がいいぞ。
>>597のコードを、お前のコードにそのまま埋め込んでもダメ。
意味を理解しろ。
JSpinner.DateEditorのコンストラクタの引数は、
setEditorを呼び出すJSpinnerオブジェクトを指定する。
>>604では、JSpinner.DateEditorのコンストラクタで指定したJSpinnerと
setEditorを呼ぶJSpinnerが異なっている。

それと、以前のアドバイスをまるで無視してるな。ちゃんと読んでるか?
SpinnerDateModel#getDate()でDate型で取得できると言われたのに
無駄にSimpleDateFormat使ってDate→String→Date変換してるし、
変数名があいかわらず変だったりするし。

606 名前:594 [2007/07/03(火) 13:46:28 ]
>>604
変数名の修正が中途半端になっていました・・・すいません。
Date型で取得せずにStringで取得してたりダメダメなので、もう一度出直します…


607 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 14:57:06 ]
>>594 がんがれ

608 名前:デフォルトの名無しさん [2007/07/03(火) 17:16:40 ]
VisualEditorでのデフォルトのフォントって変更できますか?
いつも太字のDialog,12を手動でぽちぽち変更しているのですが…


609 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 18:35:49 ]
実行時だけ素敵になれば良いのであれば
>>483 辺りを参照するヨロシ。

610 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:14:58 ]
commonsのsmtp関連って使っているひといますか?
使おうと思ったけどエンコード思うようにいかなくて
javax.mailの方に手を出したら結局そっちだけで用が済んでしまい
わざわざcommons使うまでもなかったっていうか・・・





611 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:15:44 ]
誤爆しますたスマソ

612 名前:594 [2007/07/04(水) 12:11:32 ]
やっと取得できるようになりまいた!!
DataModelが必要だったのですね… ちゃんと読んでなくてすいません。ありがとうございます!

613 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:12:23 ]
>>609

やっぱりVE上でもヨロシくしたかったのですが…
VE以外のGUIエディタなら可能?

614 名前:デフォルトの名無しさん [2007/07/04(水) 16:25:33 ]
eclipse+swingでGUIをふんふんふん〜って作っていて、
いざエクスポートして、問題なく起動でしたと思ったら、
なぜかDBとの通信に失敗している。

エラー内容をみるとjava.lang.NullPointerException

開発時には普通に実行できたのに、
jarにエクスポートしたらDBと通信できなくなる場合ってあるのでしょうか?
JDBCはちゃんとclasspathがあるとこに置いてます

615 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:09:10 ]
だからその例外が発生している場所をさらさんとダメだとなんど・・・

616 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:25:13 ]
>>614
Swingというかスレ違いな気がするが、一応回答。
実行可能jarから起動すると、CLASSPATHや-classpathオプションは無視される。
代わりにMANIFEST.MFのClass-Pathエントリに書くこと。

これ以上の助言が欲しかったら、その例外の発生箇所を加えて
Java質問・相談スレに行け。

617 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:31:57 ]
>>616
無視されないよ
なにわけのわからんことを・・・

618 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:51:03 ]
>jarにエクスポートしたらDBと通信できなくなる場合ってあるのでしょうか?

ある


619 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:18:05 ]
クラスが見つからなかったらふつうは、NoClassDefFoundだろ・・・
>>614
eclipse使ってるなら、jarファイルをデバッガ経由で起動してみたら?

620 名前:614 mailto:sage [2007/07/04(水) 18:56:44 ]
>>616

いけましたよ!! ギガントありがとう!!



621 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:33:41 ]
>>617
ttp://java.sun.com/javase/ja/6/docs/ja/technotes/tools/windows/java.html#-jar
ドキュメントを読む習慣を付けようぜ。

622 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:49:10 ]
-jar使うのかよ

普通は使わんし、使うならマニフェストファイルに書くの普通だろ
Swingと何も関係ないやんか

623 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:00:11 ]
スレ違いではあるが
>>622
とことん読まないね。
ttp://java.sun.com/javase/ja/6/docs/ja/technotes/guides/jar/jarGuide.html
>デスクトップ上で JAR ファイルをダブルクリックすれば javaw -jar により JAR ファイルが自動的に実行されます。

624 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:04:36 ]
ダブルクリック起動なんて使い物にならんよ
オプション設定できないから

625 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:43:07 ]
Windows Explorerを否定する617=622=624に脱帽

626 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:54:08 ]
最近のGUIシェルならむしろダブルクリックで
関連付けされたプログラム実行の方が一般的だろ。
自分を正当化してかみつきたいだけの馬鹿はスルーしとけよ。

627 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:41:18 ]
>>624
lauch4j

628 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:00:32 ]
> 625-626は624のいいたいことわかってるのかな

629 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:08:40 ]
そのソフトがGUIなら起動後にオプション設定して再起動が今じゃ普通だが
それを回避するためにコマンドライン引数受け付けるのもあるけど、あくまでも救済処置だろ。
今となっては。

630 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:27:57 ]
>629は、わけがわかってないと見た。



631 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:43:14 ]
>>629
たぶんアプリケーションのオプションではなくJVMオプションの類の話をしてると思われる

632 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:47:03 ]
関連付けでオプションも設定しておけばいいんじゃね?

633 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:53:28 ]
起動するときにアプリにオプションを渡さないといけないのはCUIでGUIではあまりないと思うが

634 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:57:18 ]
JavaのVMは別

635 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:07:49 ]
オプションといってもVMのオプションね。
システムプロパティを指定する-Dや、
VMの種類を選択する-clientや-serverとか、
メモリ割当プールの最大最小サイズを指定する-Xmxや-Xmsなど。
今のところ、実行可能Jarをダブルクリックでは、
これを個別指定することはできない。

まあただ、-clientや-serverはCPUやアーキテクチャによって
自動選択されるし(おおよそではあるけど)
-Xmxと-Xmsも、Java6からは規定値が64MB/2MBではなくなり、
物理メモリに応じた値に変わるようになった。
ttp://java.sun.com/javase/ja/6/docs/ja/technotes/guides/vm/gc-ergonomics.html

-Dやその他のVMオプションは無理としても、
実行可能Jarの手軽さを全否定するほど、使えないってことは無いと思う。

636 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 20:26:11 ]
GUIアプリほどオプションが必要。
SwingやJavaの動作が速くなったとはいえ、デフォではGCによる停止時間が長すぎるので
使い物にならないのさ。

あくまでも快適に動くアプリはチューニングされたオプションが前提。
マニフェストファイルにオプションがかけないのでここは厳しいんだよな。
WebStartもメモリだけしか対応してないので厳しい。

普通の人は2,3秒もGCでGUIがとまってたら使わないと思う。

637 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 20:28:14 ]
>>635
6では単純なサーバークラス検出動作からかわったの?

638 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:28:25 ]
わかった。
VMのチューニングしないとまともに動かないような、リッチでヘビーなGUIアプリはお前に任せる。
俺は、VMのチューニングが不要な、チープでライトなアプリ作って、実行可能jarで配布するよ。

ところでV2C使ってると、クライアントサイドJava & Swingもいいもんだと思えてくる。
もっとも、あれは作者さんのがんばりに寄るところが大きいのかな。
HTMLビューアは自作してるそうだし。

639 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:25:02 ]
V2CだってデフォだとGC時にあほみたいに重くてつかえんだろ・・・

640 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:46:47 ]
GCが一瞬で終わるウチの環境はハッピーなんだな。
ガンガレ639。お前には未来とVMチューニングがある。



641 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:48:48 ]
デフォでGCで2,3秒とまるって、どんなアプリをどんな環境で使ってるんだろう?
Swingで最重量級といえるNetBeansでも、そんなに止まることはないが。

642 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 07:00:10 ]
とりあえずOSはWindows 98だろうな。

643 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:16:52 ]
IntelCore+XPでNetBeans5.5.1も2,3秒とまるよ
コンカレントGCに変更すれば大丈夫だけど


644 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:46:12 ]
メモリがバカみたいに少ないんだろうか

645 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:02:26 ]
メモリは1.5GBだーね
glassfish立ち上げたりDB立ち上げると1GBじゃたりないよね

NetBeansはデフォだとまったくメモリが足りないから増やしてるさ

もしかしてみんなヘビーにNetBeansつかってないの?

646 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:37:13 ]
ヘビーに使ってるよ。最近2GBじゃ足りない。

いや、コンカレントにするより、分散GCの周期を1分から延ばすのと
スループット並列GCにする方が快適だったりするかもしれないぞ。

でもIDEのVMとアプリケーションサーバのJVMは分けるよ。
違う性質のアプリなんだから分けた方がチューニングしやすい。
って何の話になってるんだ。

V2Cは、多分に作者さんのコーディングの腕で快適になってるんだと思う。

647 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:54:15 ]
>>646
遅いのはFullGCだけだからFullGCがでなければそれでいいのさ

GCチューニングはJavaでゲーム作ったりしてテストしてるから大丈夫
5ms以下にしていれば体感的に問題はないかな

メモリが多いとパラレルがわりと有効だけど、パラレルにするとスループットはいいけど、
レスポンスが大幅に低下するから、使う場面が結構難しい

マルチコアだからパラレルでいいというよりはGC用にずっとコンカレントだけ動かしてるほうが
いい場合も多いかな
まぁ、バックグラウンドコンパイルとかもあるし、AP鯖やDB鯖も起動するからIDEだけにフルにまわすわけには行かないからね

最近はVM系もよく使うからなおさらかな

ところでAP鯖とIDE、デバッグ起動とそれぞれVMは自動的に分かれるよね?
Tomcatだってデフォだとメモリ少ないし-Xmxいれないとまずうごかん

あーSwingがもはや関係なくなってしまった

648 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:24:32 ]
>645
glassfishとJavaDBはNetBeansと違うVMで走るよ。

649 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 12:59:29 ]
>>648
何を当たり前のことを

650 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 15:41:58 ]
glassfish走らせようがJavaDB走らせようが、GCには関係ないってことだ。



651 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 16:00:02 ]
>>650
マルチプロセスでの動作を考慮ってことだろ。

652 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:59:56 ]
とりあえずSwing関係ねーから他所行けや

653 名前:デフォルトの名無しさん [2007/07/24(火) 12:16:09 ]
eclipseを使ってGUIをつくりたいんですがサンプルファイルの
import javax.swing.*;

public class Sample1 extends JFrame{

public static void main(String[] args){
Sample1 frame = new Sample1();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds( 10, 10, 300, 200);
frame.setVisible(true);
}
}
という簡単なものを表示してみようと思ったのですがサンプルどうりに300,200の
大きさのウインドウが表示されず左上隅に小さいウインドウが表示されるだけです.
なぜこうなってしまうのでしょうか?

654 名前:デフォルトの名無しさん [2007/07/24(火) 13:30:36 ]
こちらの環境では上手く動いてるっぽいよ。OSはXP。

java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)

気休めだけど setLocation(int, int), setSize(int, int) とかも試してみたら?

655 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 13:52:23 ]
>>653
Swingではやってはいけないコーディングなのがきになるが、それどこのサンプルなの?

656 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:21:25 ]
>655
なんかまずいか?

657 名前:デフォルトの名無しさん [2007/07/24(火) 14:22:08 ]
>>655
www.javadrive.jp/tutorial/
ここを参考にやったんですが出来ません.
>>654
1.6.0_02を使っているけど出来ませんxx

658 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 17:09:02 ]
setMaximumSize, setMinimumSize, setPreferredSize, setSize

659 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:00:31 ]
import javax.swing.*;
public class Sample1 extends JFrame{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Sample1 frame = new Sample1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds( 10, 10, 300, 200);
frame.setVisible(true);
}
});
}
}

ウインドウマネージャ次第でフレームは再配置やリサイズされるかもしれないしな。
>>658のようないろいろなヒントをマネージャに与えれば言うことを聞いてくれるかも。

660 名前:デフォルトの名無しさん [2007/07/27(金) 00:38:57 ]
ボタンを押すなりしてイベントが発生したときにコンポーネントの大きさや
位置を変えたり、非表示だったのを表示するようにしたりしているのですが、
大きさと、位置が変わってくれません。
デバッグしたところ正しい値はコンポーネントのプロパティに入っているようなの
ですが、、、




661 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:16:14 ]
画面リフレッシュしてる?

662 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:17:14 ]
たぶんpackとかもわからないんだろうなぁ

663 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:24:01 ]
何のLayout使っているのかも重要だから書かないとな

664 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 01:26:08 ]
モーダルなJDialogをsetVisibleする場合は、invokeAndWaitを使えばよいのでしょうか?

665 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 02:14:54 ]
>>664
invokeLaterでええやん
例えばボタンとかを押してActionListener#actionPerformedを呼んで
その中からJDialog#setVisibleするのならinvokeAndWaitは使えない

666 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 10:04:35 ]
>>664
使わなくてもいいよ
AWTスレッドなら

667 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 12:29:26 ]
やりたい事
・BufferStrategyを使って描画
・フルスクリーン表示
・メニューの表示

CanvasでBufferStrategy使って描画、Canvasを含むJWindowをフルスクリーン表示
フルスクリーン画面でJPopupMenuを表示するとCanvasの描画が走るタイミングでJPopupMenuが消える

JPopupMenuをJInternalFrameで実現してJDesktopPaneとの組み合わせにしてもダメでした。
BufferStrategyを使わなければ実現出来るのに・・・。
ゲーム作ってる人で同じ悩みに直面した人いませんか?

668 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 13:25:18 ]
>>667
JPopupMenu#setLightWeightPopupEnabled(boolean) で false にしろとかって話でなくて?

669 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 14:00:11 ]
>>668
はやり、消えます。

BufferStrategyからgetDrawGraphicsしたGraphicsでMenuを描画すれば良いのでは
と思いついたのですが描画は出来ても機能せず。

フルスクリーンじゃない時はMenuがCanvasの上に表示されるので
フルスクリーン+BufferStrategyの組み合わせがどうにも悪いのかなと・・・。

670 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 14:00:35 ]
だからお約束のようにAWTとSwingまぜるなと



671 名前:デフォルトの名無しさん [2007/07/31(火) 14:10:17 ]
>>670
JWindowからcreateBufferStrategyしてもダメでした。

672 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 14:13:51 ]
JPopupMenuがSwingだからこれを使ってはダメ

673 名前:デフォルトの名無しさん [2007/07/31(火) 14:34:53 ]
>>672
部品を全てawtに統一しJPopupMenuの変わりにDialogを使用したところ無事実現できました。
事象が上手く理解できていないので今からソースを見て理解を深めたいと思います。
ありがとうございました。

674 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 14:50:24 ]
Swingってのはフレームから下を全てSwingフレームワークによってソフトウェア描画する
AWTってのは各種OSなどに描画を任せる

混ぜるな危険ってのはそういうこと
Swingコンポーネントを使いつつBufferedStrategyが使いたいという用途はあまりないと思うので
その場合はSwingフレームワークにあわせること

ゲームなどでBufferedStrategyは使うと思うが、メインループスレッドからバックバッファに描画、
その後repaint発行でいける

この場合注意すべきポイントはrepaintはいつ呼ばれるかわからないということ
つまりトリプルバッファのようにバックバッファが最低2つは必要になる

BufferedStrategyなどでゲームに特化した話題ならゲーム製作板へどうぞ

675 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 16:31:47 ]
>>667
BufferStrategy の原理上そうなると思う.
昔ちょっと試したときの結論はゲームにメニューバーは付けない(そもそもかっこわるいし)で
ゲーム内にメニューを実装する,でした.

676 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 17:39:57 ]
AWTでしか実現できない機能なんてあんのか〜、しらなんだわ。


677 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 18:00:20 ]
GLCanvasもそうだけどいわゆるハードウェアべったりな動作を期待したい場合AWTを使うしかない
この仕組みを変えるためにはSwing自体大幅にパイプラインをかえないといけない

で、JOGLに関してはJavaSE6でそうなる予定だったのだが、不具合のためOFFになってしまった
そろそろ標準でJOGLついていてもいいと思うけどね

まともに3D動かそうとすると必須だし

678 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 18:21:29 ]
swingとawtのFPS比較サイトとかあれば良いのにな。

679 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 18:31:18 ]
ゲームの話か?
描画内容を反映させるのにBLITが必要なく、垂直同期が取れるAWTのほうが有利
JNIによるダイレクトなレンダリングも期待できる

GUIコンポーネントというのならSwingのほうが将来的にも拡張性的にも有利ではないかと

680 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 18:41:02 ]
というかBufferStrategyのdoc読んだら重量には効かないのが分かるだろ。

>>677
このバグ自体は昔からあるけどいざ、潰してみたらVGAドライバ由来の物だということが分かったので当分無理。
だから途中でデフォルト無効になったんだし。

これさえ直ればちゃんとGLPanelがつかえるんだよ。
せっかく、JOGLがjavax.*まできたのに・・・。

JOALも標準拡張にしてやってくだせぇ。
ミドルレンジ以上のサウンドカードじゃないとOpenALまともにサポートしてないから無理かな?




681 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 19:13:05 ]
ところでJava3DとJOGLのちがいってなに?

682 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 19:53:15 ]
(そのレベルなら)なに気にすることはない。

自分で調べろや

683 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 21:35:54 ]
ImageからBufferedImageへの変換ってどうやるの?

684 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 21:37:05 ]
>>683
Java言語から勉強したほうがいいよ

685 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 21:57:55 ]
>>683
www.amazon.co.jp/Java-Swing-Hacks/dp/4873112788/
この本の17ページに書いてあるよ

686 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 21:59:16 ]
>>683
BufferedImage→ Graphics→drawImage
これで分からなきゃ初心者スレ行ってくれ

687 名前:デフォルトの名無しさん [2007/07/31(火) 22:06:50 ]
JTableで編集中のセルの行インデックスを取得する方法ありますか?

688 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:07:40 ]
ファイルからロードしたImageだからgetGraphics()でnullになるんだけど、どうすれば・・

689 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:12:10 ]
>>687
APIに載ってるんだが、なんで調べないの?
つ getEditingRow()


690 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:31:30 ]
>>686 ああ、できた。あんがと



691 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:32:46 ]
SwingとAWTを混ぜるなって話だけど・・・jdk7で変わるのかね?

Heavyweight/Lightweight Mixing feature of Java 7
ttp://forums.java.net/jive/thread.jspa?threadID=29175&tstart=0

ごめん内容いまいち追い切れてない。

692 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:44:27 ]
>>691
まだmacはJDK5だと言うのに・・・。

693 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:46:38 ]
そうだったのかw
あんまバージョンアップが早いと
リタイヤするOSが増えそうだな

FreeBSDも5だっけか

694 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 22:53:32 ]
>>692
6の開発者向けプレビューが去年から更新されてないんだよね。
たぶん4月にはLeopardと一緒に正式リリースを目論んでいたんだろうけど、
Leopard10月になっちゃったし。


695 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:02:50 ]
>>683
BufferedImageってImageインターフェースもってるだろ?
BufferedImageにすってことはどれだけ情報がうしなわれるとか考えた?

696 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:04:40 ]
>>682
で、どっちが活発にメンテされてるの?

697 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:15:09 ]
去年JOGLは1.0がリリースされGLCanvasは現実的に使えるようになった
Windows版しかみてないが、ネイティブ版の8割くらいの速度で動くと思えばよい

1.0GHzで動いていたのと同じように動かすためには1.2GHzくらいが必要

Java3Dはかなり前に試したが、とにかく遅くて使い物にならないことや高レベルすぎるんじゃないかな
ゲーム以外ならJava3Dでいいのかもしれないけど

698 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:34:42 ]
>>697
なるほど。よく分かった。

699 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:37:02 ]
JOGLだとOpenGL専用で、どこでも使えるJavaっぽくないけど、
これ自体がオプションパッケージだから、依存性が強くてもいいのかもしれない。
Java3Dがまだこなれてないんじゃ、しようがないね。

700 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:38:25 ]
>>695 Image.getGraphics()がアンサポート例外出すのがやなんだけど



701 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:46:50 ]
>>699
OpenGLはWindowsやLinux、Solarisなどで動くオープンなAPIだよ
Java3Dは実装選べるけど結局OpenGLかDirect3Dかの二択だしプラットフォームはかわらんよ

sunが自前で全部実装ってのは無理
ビデオチップベンダとの協力が必要だから

702 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:48:51 ]
>>700
オフスクリーン以外で実行したらそれがでるのは正しい動作

それにImageなんて抽象クラスなんだから実装はさまざまだ

703 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:51:33 ]
開発者側で混ぜるな危険をなんとか言ってるのはJava3D/LG3D関係か?

てかJOGL1.0はもう古い。今は1.1.0。
java2DをJOGLのテクスチャに合成するutilが追加されてる。
1.0までだとここらへん自力でやらないとだめだったけど今なら
java2Dで描画できるもんならなんでもJOGLに持っていけるようになったからフォント描画も楽になった。

ビルボード上にテクスチャ貼ってスプライトさせるなら自分でやった方が効率よさそうだけど。

704 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:53:45 ]
>>703
1.0からできるっしょ?どっかかわった?

混ぜるな危険はSwingがでたとき、1.1時代からいわれてるよ

705 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:57:04 ]
>>699
何言ってんだ?JOGLもJava3DもOpenGL使ってるだろ。
それに両方、標準拡張。
万人が使うわけじゃないからJREから外されれてるだけ。
そこらのJNI使った拡張機能とはわけが違う。

706 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:13:53 ]
>>704
そうじゃなくてoffscreen renderingの問題だよ。どうにかなったのこれ?
昔から言われてるのは常識だろ。

>1.0からできるっしょ?どっかかわった?
javadoc嫁

707 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:49:41 ]
>>706
落としてきてあるのだけは確認した
com.sun.opengl.util.j2dパッケージが追加されたのか

いままでもJava2Dからのテクスチャ生成ができたけど、これは動いてる最中も反映されるんか?
毎回getTexture必要になるっぽくみえる

今週末久々にJOGLいじってみるか

問題は激しくすれ違いなことだがJOGLのスレってなかったか

708 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 03:07:03 ]
なるほど。ためになった。

709 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 05:49:39 ]
>>707
JOGLにしかない機能・作法が意外とあるのにどこいってもJOGL専用話してる所がないんだよ。
JOGL紹介サイトでもOpenGLの教本に書いてあることくらいしか書いてない。

jogl-demosのソースか洋書あたるのが近道。
国内はJava3Dだらけだ。

710 名前:デフォルトの名無しさん [2007/08/01(水) 08:39:42 ]
良スレの予感。



711 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 10:57:50 ]
>>709
JOGLって作りこみの部分に入るとOpenGLまんまだから迷うことはないけど
たしかにそのセットアップとかTipsとかそういう情報ゼロに近いね

一方JavaのゲームではJOGLしか選択の余地がないから非常に悩むところ
Java2Dのアクセラレーション範囲が狭いことに加え、アルファブレンディングの種類が足りなすぎる

おかげで2D描画もOpenGLが必須になるという・・・

712 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 11:05:22 ]
今気がついたんだが「LayoutManager2」なんてクラスがあるんだな。
本当にこんなネーミングで良いのか?

713 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:40:12 ]
クラスというかインタフェースだけどな
配置の制約情報オブジェクトをコンポーネントに関連付けるメソッドが追加されたLayoutManager
ネーミングについては確かに投げやりだな

714 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 23:48:14 ]
SAX2.0なんて2がつくの結構あるぜ

715 名前:デフォルトの名無しさん [2007/08/02(木) 01:26:14 ]
>>712

そりゃたしかに投げやりなネーミングだな。ひどい

716 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 04:06:22 ]
じゃあどんな名前ならよかったんだ?
- AdvancedLayoutManager
- ExtendedLayoutManager
- SuperLayoutManager
- LayoutManagerGreat
- 続・LayoutManager

717 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 04:23:15 ]
LayoutManager4.0
アナログ的に配置指示

718 名前:デフォルトの名無しさん [2007/08/02(木) 10:30:35 ]
>>716
続・LayoutManager に一票

719 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 11:29:00 ]
ボーランドのライブラリは2がつくのたくさんあったな

720 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 12:01:51 ]
Extended とか付けたら、もっかい拡張したくなったら名前に困るじゃん。
数字なら 3 とか 4 にすればいいだけで楽。



721 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 12:54:43 ]
10以上行くと
ソートした時に
XX
XX10
XX2
XX3
.
.
ってなりそう。

722 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:37:38 ]
Win32 API の 〜Ex は辛かった。〜2 もどうかとは思うが。
そろそろ Swing そのものを根本的に整理して欲しい時期だねえ。

723 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:58:03 ]
Swingで一番やってほしいのが
・定数のenum化
・コレクションフレームワーク利用
・generics利用
・OpenGLパイプライン有効

で作り直してほしいな
互換性とるのは無理だからパッケージをかえてな

724 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:15:14 ]
新パッケージ名はjavax.swing2だなw

725 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:43:39 ]
javax.続・swing パッケージで…

726 名前:デフォルトの名無しさん [2007/08/02(木) 19:09:32 ]
JOptionPaneのmessageTypeで指定すると表示されるデフォルトアイコン群は
他のクラスで利用出来ないものでしょうか?

727 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:51:01 ]
>>721
9の次はaにすれば、しばらく問題なし

728 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:55:47 ]
>>726
ひどい方法
class IconRevealer extends BasicOptionPaneUI {
public Icon getIcon() { return super.getIcon(); }
};
IconRevealer foo = new IconRevealer();
new JOptionPane(null, JOptionPane.INFORMATION_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.ERROR_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.QUESTION_MESSAGE).setUI(foo);
Icon icon = foo.getIcon();

JOptionPane#getIcon()やiconフィールドはsetIcon()で設定した時用だったんだな

729 名前:728 mailto:sage [2007/08/02(木) 20:21:29 ]
ソースを眺めるとこう単純にできるがさらにアンドキュメンティッドなひどい方法だ
String propertyName = "OptionPane.errorIcon";
//String propertyName = "OptionPane.informationIcon";
//String propertyName = "OptionPane.warningIcon";
//String propertyName = "OptionPane.questionIcon";
Icon icon = (Icon)sun.swing.DefaultLookup.get(new JOptionPane(), new BasicOptionPaneUI(), propertyName);

730 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:27:27 ]
UIManager.getIcon("OptionPane.errorIcon");



731 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:31:56 ]
素でUIManagerのことを忘れてたorz
BasicOptionPaneUIはUIManagerを介さずに直にsun.swing.DefaultLookupを呼んでるんだな

732 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:26:15 ]
UIManagerで使うキー文字列も明文化されていないから
変えられても文句いえないんだよな。
こーゆーところはpublicな定数なりenum(は増えるから無理か)を
使ってあれば安心して使えるんだが。


733 名前:726 mailto:sage [2007/08/03(金) 16:54:32 ]
ありがとうございます。
昨日は諦めてアイコンを作ってましたが
使わなくて済みそうです。

734 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 18:12:41 ]
あの辺のアイコンデータのライセンスってどうなってるんだろうね?
再配布可能なライセンスならアイコン自体もらってアプリに組込めば
明文化されてない使い方しなくてもすみそうなんだけど…

735 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:16:55 ]
java.sun.com/developer/techDocs/hi/repository/

736 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:39:54 ]
>>735
Thx!

737 名前:735 mailto:sage [2007/08/04(土) 00:38:56 ]
・・・でもよくみたらJOptionPaneのアイコンは入ってなかったね。ごめんよ。

738 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 04:47:39 ]
>>737
ほんとだ… インフォメーションアイコン(丸に"i"のやつ)とかあるから
同じかと思ったら別のアイコンだ…

739 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 08:56:15 ]
BufferedImage.TYPE_INT_ARGB
BufferedImage.TYPE_INT_ARGB_PRE

よく_PREってついてるのあるけど、どう違うの?

740 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:16:41 ]
それは premultiplied alpha 。
RGB 各成分に A 成分が乗算済みであるフォーマット。
例えば 70% の不透明度で描画するとき通常 result = dst * 0.3 + src * 0.7 とやるわけだけど、
_PRE は A 成分が乗算済みだから result = dst * 0.3 + src で済む (src が _PRE で dst がそうでない場合)。



741 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:31:43 ]
よくわかった。ありがとう。

742 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:45:36 ]
問題はSwingと関係ない話だってことだな

743 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:51:44 ]
まぁ、こっちで聞くのは正解な気もするがw

744 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:53:47 ]
AWTのスレってあったっけ?

745 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 21:00:13 ]
ない

746 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 10:15:44 ]
>>740-743
Sunのチュートリアルには無かったけど、そういう話(話題)ってどこを参照すればいいの?
できれば日本語で。

747 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 10:41:30 ]
Java2Dのスレを立ち上げる

748 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 11:05:27 ]
>>746
java.sun.com/javase/ja/6/docs/ja/api/java/awt/image/BufferedImage.html#TYPE_INT_ARGB_PRE
『このイメージのカラーデータには、アルファがあらかじめ乗算されています』

749 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:37:44 ]
>>748 その翻訳の「意味」が分からなかった。

750 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:41:38 ]
まぁわかりにくい表現だとは思うが
API以前に画像の基礎知識つけたほうがいいんじゃね?

GUIがわかってない人がSwingのマニュアル見てもわからないのと同じように



751 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:55:52 ]
画像処理というよりも、単に画像ファイルを読み込み、コピー、保存する程度。
ImageIOではなくて。

752 名前:デフォルトの名無しさん [2007/08/06(月) 19:25:43 ]
独自のポップアップメニューを表示するにはどうしたらいいのでしょうか?
たとえばExcelの色選択メニューみたいな。
枠ナシJFrameを使うとタスクバーに出たり、ウィンドウがちらついたりします。

753 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 19:39:27 ]
普通の JPopupMenu に独自のコンポーネントを add してみるとか。
単に JPopupMenu のレイアウトマネージャを変えてみるとか。

754 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 19:41:05 ]
glasspane使うのが正解じゃね?

755 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:39:15 ]
JWindowはどう?
(色選択ならJColorChooserからコンポーネントもってくれば)

756 名前:752 [2007/08/06(月) 21:35:43 ]
JWindowがよさそうですが、よそがクリックされたらウィンドウ閉じるようにするにはどうするのがいいんでしょう?
JFrameのときは、windowListenerのwindowDeactivatedでdisposeしてました。

757 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:45:37 ]
>>756
その「よそ」って何?
「よそ」が他のコンポーネントならそのコンポーネントのイベントを拾って閉じればいいじゃん。

758 名前:デフォルトの名無しさん [2007/08/07(火) 08:50:35 ]
>>757
最初の質問に書いたとおり、ポップアップメニューを作りたいので、よそというのはメニュー以外のことです。
では、元のウィンドウのタイトルバーや、プログラム管理外の領域がクリックされたときのイベントはどうやってとればいいでしょうか?

759 名前:752 [2007/08/07(火) 09:35:06 ]
プログラム管理外の領域のクリックは、元ウィンドウのwindowDeactivatedでとれました。
あとは、タイトルバーのクリックがどうにかなれば

760 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 09:58:46 ]
JPopupMenu popup = new JPopupMenu();
popup.add(new JColorChooser());
component.setComponentPopupMenu(popup);
でよくね?
# JPopupMenu isa JComponent



761 名前:752 [2007/08/07(火) 10:21:52 ]
>>760
それでいけそうですた。
>>753の言うことをちゃんと聞いてればよかった。

762 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:40:22 ]
DelphiでいうところのPaintBoxみたく
paintComponent(Graphics g) にクロージャを引っかけることができるような
カスタムペイントコンポーネントって、ないの?

今はふつー(??)に、JPanel の派生クラスをつくってる。

763 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:45:01 ]
ない。
ふつーは JComponent から派生する。

764 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:51:45 ]
PaintBoxとpaintComponent(Graphics g) は動きがまったく違うと思うのだが

765 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:42:32 ]
>>762
ないんだよねぇ。
それ欲しい。






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

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

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