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 ないんだよねぇ。 それ欲しい。