Java低速GUI Swing 5
..
6:デフォルトの名無しさん
06/10/18 11:53:53
SynthLaF
ユーザーを虜にするものは機能だけではありません。
見た目のCoolさでアピールしてはいかがでしょうか。
(雄の孔雀が美しい尾羽を持つように:-))
[ja]
IBM 進歩したSynth 最新のSwingルック・アンド・フィールを使うとカスタムUIが手軽に
URLリンク(www-6.ibm.com)
[en]
Sun The Synth Look and Feel
URLリンク(www.javadesktop.org)
7:デフォルトの名無しさん
06/10/18 12:14:56
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
URLリンク(www.netbeans.org)
Eclipse+VisualEditorPlugin
URLリンク(www.eclipse.org)
URLリンク(www.eclipse.org)
8:デフォルトの名無しさん
06/10/18 15:36:12
>>6
Synthって情報少ないよなぁ・・・
9:デフォルトの名無しさん
06/10/19 18:49:02
JPanelを任意の個数だけ、for文使って作ることって、できるんでしょうか?
10:デフォルトの名無しさん
06/10/19 18:59:41
出来ないと思った理由が聞きたい
11:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/10/19 20:21:33
言語仕様から学び直せ。
sは2回宣言されています。
13:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/10/20 13:55:09
この質問、初心者質問スレで読んだ気がするな。
15:デフォルトの名無しさん
06/10/20 16:20:46
マウス側面の拡張ボタンをJavaで使う方法おしえて。
16:デフォルトの名無しさん
06/10/20 16:34:36
マウスイベントって3つまでしかサポートしてなかったような
5.0からはマウスのボタンの数は取得できるがそれを使ってどうのこうのはできないはず
17:デフォルトの名無しさん
06/10/20 17:43:40
返答どうもです。
やっぱ無理か…。
5ボタンマウスって、あんまり使われてないのかなあ。
18:デフォルトの名無しさん
06/10/20 17:50:42
ほとんどのアプリは3ボタンだし、ただのショートカットがほとんど
ショートカット以外の使われ方してるアプリってどれだけある?
19:デフォルトの名無しさん
06/10/20 18:02:27
ボタン5個も何に使うの?
20:デフォルトの名無しさん
06/10/20 19:06:46
ブラウザやファイラで「進む」・「戻る」に便利に使ってるよ。
でも5ボタン必須のアプリなんて、ちょっと思い当たらない。
ホイールでスクロールみたいに、あれば便利って程度かな。
21:デフォルトの名無しさん
06/10/20 19:28:11
ホイールは定着したけど、5ボタンは流行らなかったね。
22:デフォルトの名無しさん
06/10/20 19:37:48
まわりの奴におしえても、使わないんだよね。ホイールは使うようになったけど。
23:デフォルトの名無しさん
06/10/20 19:44:55
3ボタンでも真中は特別使い道がない。
24:デフォルトの名無しさん
06/10/20 20:59:58
進む戻るだけは俺も使ってるけどあれはショートカット効果だけだからなぁ
4以上のボタンを使ってるわけではないだろう
25:デフォルトの名無しさん
06/10/20 22:03:08
>>23
ネトゲではよく使うお
26:デフォルトの名無しさん
06/10/20 22:38:17
>>23
自動スクロールに対応してればちょくちょく使うよ。
あとFirefoxだとタブを簡単に閉じられるしね。
27:デフォルトの名無しさん
06/10/20 22:56:14
Firefoxだと通常のクリックが真ん中ボタンといえるくらいだ
考えて左クリックを使う
28:デフォルトの名無しさん
06/10/20 22:57:34
そういやそうだね
いつも新しいタブで開いてるや
29:デフォルトの名無しさん
06/10/20 23:09:59
>>25
5ボタンも、そんなところでしょ。
30:デフォルトの名無しさん
06/10/20 23:33:46
7ボタンとチルトホイールはどうだろう?
31:デフォルトの名無しさん
06/10/21 00:12:53
ところで、ゲームパッドに標準で対応してほしい。あとタブレット
32:デフォルトの名無しさん
06/10/21 00:16:50
ゲームパッドってどんなOSにも標準で対応してたっけ?
積集合OSであるJavaにはそういう限界があるよ。
タスクトレイやブラウザとかがJava6に出てきただけでも感慨深い。
33:デフォルトの名無しさん
06/10/21 00:42:22
対応していないメジャーOSはないはずだし
一部だけで動く実装でも1.4以降は投入されてるから理由にならん
34:デフォルトの名無しさん
06/10/21 00:44:21
MSXのようにパッド0番目はキーボードとかいう実装にしておけば
キーボードとパッド両対応作る手間がないし未対応OSであっても問題ないんじゃね?
35:デフォルトの名無しさん
06/10/21 05:42:06
あ、1chip MSXの入金忘れてた
36:デフォルトの名無しさん
06/10/21 23:38:55
ちょ、全然スレ違いw
5ボタンなんてケチくさいこと言わず、101個ボタンつけたらどうよ?
で、ボタン押すと文字が入力されるようにしておくの。
そしたらキーボード要らないじゃん。
37:デフォルトの名無しさん
06/10/21 23:46:22
>>36
それ、キーボードじゃん!!!
あー、食いついちゃった。orz
38:デフォルトの名無しさん
06/10/22 12:46:45
Choiceで選択してButtonで実行てどうやるんですか?
39:デフォルトの名無しさん
06/10/22 14:03:03
ChoiceとButtonを用意してButtonのActionListenerに処理を実装すればいい。
40:デフォルトの名無しさん
06/10/22 14:25:35
Choiceってのはなんだ?
41:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/10/22 16:02:55
>>41
ButtonGroupを利用しなされ
ButtonGroupに、JRadioButtonをaddしておき、
actionが起こったときに、ButtonGroupからgetSelection()で選択されたものを取ればOK
43:デフォルトの名無しさん
06/10/25 06:13:08
AWTは1コンポーネント=1ウインドウだからシステムリソースを食いまる問題って解決されたの?
44:デフォルトの名無しさん
06/10/25 07:04:53
誰も使ってないのに何が問題なの?
45:デフォルトの名無しさん
06/10/25 12:41:50
AWTはスレ違い
46:デフォルトの名無しさん
06/10/26 05:13:03
>>43
AWTコンポーネント自体使うことが推奨されてないから解決されることはない。
47:デフォルトの名無しさん
06/10/26 08:24:56
SWYスレっていつの間にかなくなってたんだね
48:デフォルトの名無しさん
06/10/26 12:39:25
>>46 誰が推奨してないの?
49:デフォルトの名無しさん
06/10/26 18:39:53
おれおれ
50:デフォルトの名無しさん
06/10/27 01:50:11
ゴスリンから大切なお知らせとお願いです。
古い年式のウィジェットを探しています。
ネイティブにピアを生成するタイプで、ご覧のバージョンの JDK の引き取りや、アップデートを行っています。
対象 JDK は万一の場合、訴訟事故に至るおそれがありますので、直ちに使用を中止していただき、
至急、ご連絡をお願い申し上げます。
____ . .| |
/\二___\.. | |
|\/‖ '''.| | | DUKE
| | ‖┌┐ .| | | ↓
| | ‖└┘ .|┌|=.|ヽ_ ゝノ゛
| | ‖ .|二| |回_ ●>
| | ‖ .|└|=.|/ 〆
|ミ.| ‖ .| | |
|\ノ.|ミ.| ‖ .| | |
|_》 | | ‖ .| | |
\|_‖____.| | |
51:デフォルトの名無しさん
06/10/30 08:14:49
旧い入門書だとSwingすらサンプルがねぇw
で、SWTスレどしたのよ。
52:デフォルトの名無しさん
06/10/30 19:57:31
こっちの方が良かったかな…。
Java SE 6ではActionにSELECTED_KEY、DISPLAYED_MNEMONIC_INDEX_KEY等が追加されたんだね。
今まで何でないのか不思議だった。AbstractButtonにもHideActionTextプロパティが追加されてる。
53:デフォルトの名無しさん
06/11/04 00:43:50
質問なのですが
URLリンク(www.gremlin.jp)
↑のアプレットみたいに、ウィンドウサイズを変えたら、そのウィンドウと同じサイズにJTable
をリサイズするにはどうしたらいいのでしょうか?
ComponentListenerを使うのでしょうか?
54:デフォルトの名無しさん
06/11/04 01:04:21
>>53
よくわかんないけど、普通に貼り付ければこうなるんじゃないんだっけ?
BorderLayoutでCenterに配置するとか。
55:53
06/11/04 01:41:03
普通に貼り付けただけだど、JTableがリサイズされないで、JFrameの大きさだけが
変わってしまいます…
ウィンドウサイズと同じサイズにリサイズさせたいのですが、そのやり方わからなくて…
56:デフォルトの名無しさん
06/11/04 01:45:56
>>55
レイアウトマネージャをどう使っているか次第。
NullLayoutなどだと、座標で配置されているから、ロジック書かないとリサイズはされない。
>>54が書いているように、BorderLayoutでCenterに配置するのが普通。
57:53
06/11/04 10:32:33
>>54,56さん
ありがとうございまいた。私の知識不足でした。レイアウトマネージャをBorderLayoutにして
CENTERに配置すればできました。
できなかった理由としてFlowLayoutとGridLayoutを使っていたためだと思われます。
レイアウトマネージャについて勉強してきます。
ありがとうございました。
58:デフォルトの名無しさん
06/11/04 11:49:30
NetBeans使うというのも手
59:デフォルトの名無しさん
06/11/04 12:58:25
ネット上のxxxx.jpgなどの画像ファイルをGUIに表示させることって出来ますか?
60:デフォルトの名無しさん
06/11/04 13:02:45
URLクラスからopenStreamすればいいよ
61:デフォルトの名無しさん
06/11/04 13:05:08
とおもったが別にImageIO.readはURLをそのまま受け取れたなw
62:デフォルトの名無しさん
06/11/04 14:44:06
表示させるだけでいいなら、JLabelでHTML書けばOK。
63:デフォルトの名無しさん
06/11/04 14:49:38
JavaのHTMLってどこまで準拠してんの?
64:デフォルトの名無しさん
06/11/04 15:11:41
あんまり知らないけど、信用してはいけないことは知ってる。
実装がかなり前に止まっているとか。
65:デフォルトの名無しさん
06/11/04 16:26:11
Swingアプリで、「HTMLのテーブルみたく表示したいんだけど。」
と聞かれて、面倒くさいから、「setTextでHTMLをセットするとOK」と答えた。
で、setTextするための、HTMLを文字列でセッセと作っていたのが、そのうち
Velocityで雛形作って、セットするようになっていた。
ほとんど、Webアプリ
そのうち、IEだと、こう表示されるのが、うまくいかないとか言われそう。
66:デフォルトの名無しさん
06/11/04 16:38:25
JEditorPane#setText()したものを、HTML表示にすることってできます?
バージョン情報を表示するに、書式をいろいろ変更して使いたかったんですけど、
なんかHTMLがそのまま表示されます。
ファイルにしてsetPage()使わないとダメなのかな。。
仕方ないので、今はJTextPaneを使って、ちまちま書式設定して出してます。
67:デフォルトの名無しさん
06/11/04 17:00:17
>>43
つURLリンク(java.sun.com)
68:デフォルトの名無しさん
06/11/04 17:05:30
>>66
自己レス。JEditorPane#setContentType("text/html")を使えばいいのね。
69:デフォルトの名無しさん
06/11/04 22:17:17
質問です。
JTableの1行目のcolumnを1列目に縦に表示するには、どうすればよいのでしょうか?
70:デフォルトの名無しさん
06/11/04 22:59:45
>>69
意味不明。
71:69
06/11/04 23:09:15
>>70
すいません。
エクセルみたいに行番号(1,2,3..)列名(A,B,C...)のような表示をつくりたいのですが…
72:デフォルトの名無しさん
06/11/04 23:10:18
>>69と>>71の内容につながりが見当たらない件。
73:デフォルトの名無しさん
06/11/04 23:18:16
列ヘッダ(A,B,C...)は、普通にJTableにある機能でできる。
分からなければ、JTable自体を基礎から勉強すべし
URLリンク(java.sun.com)
行ヘッダ(1,2,3...)は、JTableにはそんな機能ないから、それっぽく見せる実装をしなければならない。
>>5にある、為政氏のサンプルにある。
URLリンク(www.crionics.com)
74:69
06/11/04 23:30:21
>>73
JTableにはもともとないんですね…
サンプル大変参考になりました。
ありがとうございました。
75:デフォルトの名無しさん
06/11/05 22:21:18
なんか質問な〜い?ただいまSwing勉強中。
76:デフォルトの名無しさん
06/11/06 00:33:11
>>75
システムフックの方法が知りたいけどSwingの話題じゃないので黙っておく
77:デフォルトの名無しさん
06/11/06 00:44:13
質問
フォーカストラバーサルサイクルルートについて詳しく
78:デフォルトの名無しさん
06/11/06 09:04:51
>>77
初耳だ。ちらっと見た感じだと、
TABを押した時なんかの、
次にフォーカスを与えるコンポーネントを探すクラスかな?
今まで使う場面が出たことがないけど、
FocusTraversalPolicyを継承してクラスを作れば、
コンポーネントの値とかでも順序を付けられたりするみたい。
質問が具体的なら、もう少し調べてもいいが。
79:デフォルトの名無しさん
06/11/06 13:27:23
JTableの中のセルにJPanelいれたときとかこれいじらんとだめだよな
80:デフォルトの名無しさん
06/11/06 19:38:24
>>78
具体的じゃないけど便乗で
5.0 -> 6.0 でフォーカス関係で変わった事ってまとめてるとこないかな?
5じゃ動いてたコードが6で動かなくなっちゃったから・・・
81:デフォルトの名無しさん
06/11/06 19:54:29
>>79
なるほど。
>>80
ごめんなさい、わかりません。
思ったとおりにリスナーが呼ばれないとか、そんな感じですか?
82:デフォルトの名無しさん
06/11/06 22:00:45
>>80
まじか
そのへんまではまだ詳しく調べてないけど困るな
正式版が出たらチェックしようという状態だったがSwingに大幅に手が入ってるのなら別だ
Sunなにやってるんだよ〜
1秒でわかるSwingのバグつきを夏にリリースしてたし
まぁ5.0でJavaSoundの挙動が大幅に変更されたりとか
日本語印刷が通らないあたりでおかしい気はしたが
83:デフォルトの名無しさん
06/11/06 22:14:34
>>82
今日たまたまJavaで印刷のサンプル動かしたら、
DocFlavor.INPUT_STREAM.AUTOSENSE を使わないと、テキストが印刷できなかった。
しかも日本語文字化けしてるし。これは当たり前?5.0から?
TEXT_PLAIN_HOSTとかいろいろ試したけど、こっちはエラーが出た。
あと、印刷が終わっても、紙が排出されないんだけど、最後に何かする必要あります?
今は、DocPrintJob#print(○,○); で終わってます。
なんか印刷大変そうだなぁ。。。
84:デフォルトの名無しさん
06/11/06 22:37:08
>>83
それはどのVMで動かした話?
85:デフォルトの名無しさん
06/11/06 22:50:17
>>84
5.0での出来事でした。下の記事を参考にしました。
URLリンク(java.sun.com)
86:デフォルトの名無しさん
06/11/06 23:20:31
質問です。
JLabel→JLabelのようにJLabelからJLabelへ矢印を表示するには
どうすればよいのでしょうか?
87:デフォルトの名無しさん
06/11/06 23:26:22
>>86
質問の意味がわかりませんが。。。
とりあえず「→」を書きたいなら、
真ん中に「→」を書いたJLabelを置いてみれば?矢印の画像でもいいけど。
もし矢印が長かったり、角度が中途半端なのであれば、drawLineで自分で書く。
88:デフォルトの名無しさん
06/11/06 23:41:13
>>85
updateナンボかが問題
89:86
06/11/06 23:44:14
>>87さん
配置してあるJLabelどうしを矢印で結んだ図を表示させたかったのですが
そういった場合は自分で書くしかないんでしょうか?
JLabelの位置を計算して、矢印を表示することはできないんでしょうか?
よろしくおねがいします。
90:デフォルトの名無しさん
06/11/07 00:13:12
>>83
印刷APIはサービスが追加されたけど、今までのも動くよ
ただし、日本語問題が解決されたのは今年の春くらいのバージョンから
1.5年ほど日本語バグは放置されていた
そしてそのバグが直ったと思ったらSwingにバグがついたというわけだ
正確にはWindows版のLAFだけだからすべてではないがWindowsって一番ユーザー多いから影響もでかい、と
NetBeans立ち上げればおかしいのはすぐにわかるはずなのにそれに気がつかなかったSunちね
91:デフォルトの名無しさん
06/11/07 01:12:43
>>89
なんだかんだとコンポーネントが追加されてるJPanel上の特定のJLabel間に線引きたいって事?
それならJLabelをaddするときに線を引きたいJLabelだけのコレクションを別に持っておいて自分で矢印を描画しないとだめだね。
常に次ぎが右横とか規則があるならJLabel継承した横に矢印付け足す描画をするJLabelWithArrowとかでもいいのだろうけど。
92:デフォルトの名無しさん
06/11/07 02:24:57
>>89
噂では、JLabelなんか使わないで、全部自分で描いた方がラクだって話もあるよ。
93:デフォルトの名無しさん
06/11/07 04:40:58
SWT だとなんかそういう軽量コンポーネントがある。
94:デフォルトの名無しさん
06/11/07 07:48:31
>>86
グラフ書きたいなら、JGraphとかSWTのdraw2dとか使った方が楽だよ。
URLリンク(www.jgraph.com)
URLリンク(www13.plala.or.jp)
グラフって言っても、XYグラフのグラフじゃなくてグラフ理論のグラフだからね。
95:デフォルトの名無しさん
06/11/07 09:35:29
>>94
JGraphなんてものがあるのか。知らなかった。
LGPLの他に商用ライセンスがあえてあるってことは、商用で使う場合はお金かかる?
無知なので質問ですが、SwingとSWTって混ぜて使ったりするの?
水と油だと思っているのですが。。。
96:デフォルトの名無しさん
06/11/07 12:30:07
>>95
JGraphは商用利用も含めてフリー。LGPLだし。
一方JGraph Layout Pro というのがあって、JGraphの高機能版。こっちは有料。
JGraphだとノードの自動レイアウトが出来なかったりと、いろいろ不便。
他にもこういうのもあるけどね。
URLリンク(openjgraph.sourceforge.net)
こっちならレイアウトできたり、グラフに制約(巡回不可とか)かけられたりできる。
ただ、開発が4年以上止まっているけど。
97:デフォルトの名無しさん
06/11/07 12:35:17
自前で描画しとけ
98:86
06/11/07 15:37:54
>>91さん
規則性はないので、その際は手作業なんですね…
ありがとうございました。
>>92さん
それは
URLリンク(homepage1.nifty.com)
このページにあるQ8.6にも、書いてある通り描く方がいいてことでしょうか?
>>93さん
SWTではあるのですか…
>>94さん
JGraphというのがあるのですね!これについて調べてみようと思います。
表示したいのはちょうど、グラフ理論を使ったものなのでぴったりだと思います。
皆さんありがとうございました。
Java2DかJava3Dで描画しなきゃいけないかもって思ってました。それ以外の方法もあるのですね。
99:96
06/11/07 16:09:10
JGraph使うのなら、標準の機能ではレイアウトできないことを覚悟しておかないと
後でハマるよ。
ここでいうレイアウト機能ってのは、適当にノード並べてエッジ引いた後で、
ボタン1クリックでノードやエッジの位置を設定し直してくれる機能。
俺の場合、SWTのdraw2dで提供されてるレイアウト機能だけ使って
強引に何とかしたけど。
100:デフォルトの名無しさん
06/11/07 16:52:14
グラフ/ネットワーク構造の描画コンポーネントが欲しいんならJGraph以外にもいくつかある
URLリンク(jung.sourceforge.net)
URLリンク(www.nanoworks.nl)
デモとかサンプル見て好きなの使ってくれ.
101:96
06/11/07 17:12:49
>>100
いつの間にか、JUNGが使えるライブラリになってるね。
2年前にこの手のライブラリについて調べてたんだけど、
当時のJUNGはグラフの編集機能がなくて、使うのをあきらめた覚えがある。
102:デフォルトの名無しさん
06/11/07 17:29:39
>>101
4年前に全部自前でやった事がある。
あの頃と比べたらオープンソースなライブラリがよりどり緑でありがたい。
103:86
06/11/07 18:31:17
>>99さん
ご忠告ありがとうございます。
104:デフォルトの名無しさん
06/11/07 23:24:14
>>98
別にSwingでもNetbeansには普通にそういうモデリング描画用
ライブラリはあるわけだが。Graph Libraryというのがね。
105:デフォルトの名無しさん
06/11/08 00:36:43
Graph Libraryは、NetBeansのほかのライブラリに依存してるから、NetBeansの外で使うのはきついよ。
NetBeansプラットフォームで作っちゃえばいいんだけど。
106:デフォルトの名無しさん
06/11/08 00:37:44
Javaがどんなに疎結合を頑張っても、IDEがそれを否定するのな
107:デフォルトの名無しさん
06/11/08 01:17:29
疎結合っていうのは、業務アプリの各画面を独立させましょうという程度でしかないからな。
GUIのひとつの画面は、どうしても密結合になる。
108:デフォルトの名無しさん
06/11/10 01:04:36
jarファイルを実行したとき、そのjarファイルが置かれているディレクトリの
パスを取得するにはどうしたらよいでしょうか?
109:デフォルトの名無しさん
06/11/10 01:32:48
>>108
クラスパスルートがたくさんある場合はどう解釈するの?
110:デフォルトの名無しさん
06/11/10 01:42:27
>>108
実行時のディレクトリを知りたいのかな?
String path;
path = new File(".").getAbsolutePath();
とか。
111:デフォルトの名無しさん
06/11/10 01:58:03
>>110
それなら、System.getProperty("user.dir")の方がよくね?
112:デフォルトの名無しさん
06/11/10 21:50:28
設定ファイルをjarと同じディレクトリに置きたいんだよ。
フォルダごと移動させれば他のPCに環境をそのまま移せるように。
設定ファイル以外にもいろいろ置きたいからjarのパスが知りたい。
113:108
06/11/10 23:31:12
皆様ありがとうございました。
jarファイルを実行したときに、jarファイルと同じディレクトリにあるファイルで
拡張子が.zzzのもので、最終更新日が最新のものを自動的に読み込むという処理が
必要で、上記のような質問をさせて頂きました。
解決致しましたので、ご報告致します。
File f = new File(".") ;
String[ ] files = f.list( ) ;
これで実行ディレクトリのファイル一覧を配列に取得することができました。
ありがとうございました。
114:デフォルトの名無しさん
06/11/10 23:40:31
そのやり方は本当は危険なんだけどね。
115:デフォルトの名無しさん
06/11/10 23:42:23
OS(というかVM)に依存するんだよね。
116:デフォルトの名無しさん
06/11/10 23:48:06
GUIアプリならコマンドラインで打つようなことも無いのかな?
俺なら保険的に<md5>.md5みたいなファイル用意して
確実に実行元がカレントディレクトリである必要があるようにするかも
117:デフォルトの名無しさん
06/11/11 04:15:14
>>108
亀レスだけど、System.getProperty("java.class.path")
sunのVM限定だと思う。
他の方法としてはJARファイル内にリソースを格納して、
this.getClass().getClassLoader()#getResourceでURLを取得するとか。
118:デフォルトの名無しさん
06/11/11 09:24:40
>>117
java.lang.System#getProperties()のjavadocに明記されてるし、
J2SE5.0の仕様の上ではVMによらず使用可能とみていいんじゃないかな。
119:デフォルトの名無しさん
06/11/11 16:24:32
resources などというディレクトリを作ってそこにクラスパスを通し、
そこに設定ファイルを置いてファイルを取得
120:デフォルトの名無しさん
06/11/11 17:20:18
resources などというディレクトリはどこに作られるのかと。
jarと同じディレクトリに作りたいでしょ?
でも、いちいちクラスパス通したくない。ではjarのパスはどこ?
というお話し。
121:デフォルトの名無しさん
06/11/11 17:31:55
jar ファイルを実行、とあることから、
関連するライブラリなどへのクラスパスは jar ファイルのマニュフェストに記述されると勝手に推測。
そこに resources への相対パスも追加すればいいんじゃまいかと思ったが
そもそも読み込むファイル名は決まっていないのね。
122:デフォルトの名無しさん
06/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
06/11/11 18:42:23
追加
5.カレントディレクトリと1.の併用
log4jなどいくつかのソフトウェアで採用されている。
ツール系は、テンポラリに設定を変えたい時があるので、
この方法は便利。
結局、作成するアプリの性質によってどうデザインするか変わってくるよ。
124:デフォルトの名無しさん
06/11/11 18:44:20
Swingとまったく関係がないことについて
125:デフォルトの名無しさん
06/11/11 18:50:01
まったくってことはないな。直接は関係ないが、。
誰だよ、スレ違いの質問投げた奴は。
126:デフォルトの名無しさん
06/11/11 18:53:04
よーし、おねえさん、がんばってSwingしちゃうわよー
127:デフォルトの名無しさん
06/11/11 19:03:57
スイングスイング二木ゴルフっすか?>>126
128:デフォルトの名無しさん
06/11/11 19:15:22
もう少し書こうかと思ったけどスレ違いじゃ仕方ないな。
129:デフォルトの名無しさん
06/11/12 13:58:33
URLリンク(www.uploda.org)
これがふつー?だったらjavaやめる。
2000で1_4_2です。
ただフレームを表示するだけでも同じ症状がでるのですが。
130:デフォルトの名無しさん
06/11/12 14:03:06
あきらかに異常だね
131:デフォルトの名無しさん
06/11/12 14:11:35
>>130
やっぱりそうなのか。
thx
PCが悪いのかな?
132:デフォルトの名無しさん
06/11/12 14:31:17
ソース
133:デフォルトの名無しさん
06/11/12 14:38:42
javaってvistaでも使える?
134:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/12 16:24:14
>>134
まだ初心者か?
Swingにはメニューバー用の専用メソッドがあるよ
他にもクラス設計など指摘したいところがたくさんあるがまあいいか
136:デフォルトの名無しさん
06/11/12 22:03:15
>>134
最低限、改行して見やすいコードをさらせ。
137:デフォルトの名無しさん
06/11/12 23:04:37
>>134
frame.setJMenuBar()
URLリンク(sdc.sun.co.jp)(javax.swing.JMenuBar)
138:デフォルトの名無しさん
06/11/13 11:11:58
>>135,137
わ、サンクス!
わざわざありがとうございます。
>>136
改行多すぎる言われて修正しまくってこんなんなってしまったんです。orz
最初は普通だったのに。
139:デフォルトの名無しさん
06/11/14 15:51:02
>>138
2レスに分割するか、
レス消費に気を配っているorかなり長いソースの場合はアップローダを利用。
140:デフォルトの名無しさん
06/11/15 00:13:45
BOCのSpreadみたいなコンポーネントはないのですか?
JTableの縦横にヘッダがあってExcelみたいな感じのやつ。
141:デフォルトの名無しさん
06/11/15 11:37:56
JSplitPaneで、初めに片方を閉じておくことってできます?
JSplitPane#setDividerLocation(9999)とか無理矢理やればできるのですが、
一応できるのですが、キレイな方法で。
JSplitPane#getMaximumDividerLocation()で値を取得して、
それを設定する方法も試しましたが、
フレームが起動するまでは正しい値が取得できないんですかね。ダメでした。
142:デフォルトの名無しさん
06/11/15 13:29:10
>>141
JSplitPane#setDividerLocation(Integer.MAX_VALUE) とかやっとけば
143:デフォルトの名無しさん
06/11/15 14:00:41
>>141
pack()読んだ時点で確定されない?
144:141
06/11/15 15:48:34
>>142
9999よりかはキレイですね。こっちにしておきます。どうもです。
>>143
pack()は使ってないので、フレームを表示するので確定しないようです。
145:デフォルトの名無しさん
06/11/15 17:23:54
SwingつかうならPackは必須だと思うのだが
146:デフォルトの名無しさん
06/11/15 17:50:42
pack()だけじゃサイズが確定できないレイアウトもあったような。
setPrefferedSize()とかJFrame#setSize()とかしないと、親コンポーネントが最小サイズになったり。
147:デフォルトの名無しさん
06/11/15 17:57:32
それレイアウトマネージャ勉強しろとしかいえない
148:デフォルトの名無しさん
06/11/15 19:39:12
マウスカーソルの絶対座標を簡単に取得する方法ってある?
149:デフォルトの名無しさん
06/11/15 19:55:30
>>148
java.awt.Point p = java.awt.MouseInfo.getPointerInfo().getLocation() ;
とか?1.5以降で.
150:デフォルトの名無しさん
06/11/15 19:59:26
さんきゅ!
助かったー!
151:148
06/11/15 20:00:35
>>149
さんきゅ!
助かったー!
152:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/19 20:23:00
よくわからんが
paint()じゃなくて
paintComponent()をオーバーライドしなされ
あと1.5.0_08はSwingにバグがあるので1.5.0_09にしたほうがいい
154:デフォルトの名無しさん
06/11/20 09:59:06
>>152
問題が再現するコンパイル可能なソースを出した方がはやいと思うよ.
155:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/20 21:00:04
>public Canvas self = this;
すまん,うけたw
158:デフォルトの名無しさん
06/11/20 21:35:16
>>155
//g2.setTransform(af);
g2.transform(af);
理由はAPI説明のGraphics2D#setTransformの項をよく読むこと。
ちなみに、内部クラスから外側のクラスのインスタンスを参照したいときは、
Canvas.this.repaint();
のように「外側のクラス名.this」と書けば、selfのように自分で持っていなくてもいい。
ただし、外側のクラスが匿名クラスの場合は名前がないため、この書き方はできないので、
別の手段が必要だが。その中にはself=thisのような方法もとりうる方法のひとつではある。
159:157
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/21 13:51:45
それにしても、マウスクリックした時と初回描画時やウィンドウサイズを変えたりした時で描画領域の
原点の位置が変わってしまうなんて、Swingって妙な仕様ですね・・・。
162:デフォルトの名無しさん
06/11/21 16:39:27
>>161
なぜにそんなにsetTransformを使いたがるんだろうか。
setTransformはgetTransformで保存した元のコンテクストを、
描画終了時にリストアするときにだけ使うべきものとある。
描画時の座標変換にはtransform, rotate, scale, shearを使うだけでいい。
仕様が変というより、使い方が変だと思う。
変な使い方ができうるという点で仕様が悪いのかもしれないけど。
163:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/21 18:03:15
>>162
そうですね。setTransformは今後控えます。
でもそれと関係なしに、マウスクリックした時と初回描画時orウィンドウサイズ変更時で描画領域の
原点位置が変わっていて、それをSwing(AWT?)がg2の変換行列を自動的に変えて無理やりつじつまを合わせている
というSwing(AWT?)の仕様がちょっと気になってしまいました。
165:デフォルトの名無しさん
06/11/24 18:35:49
高速GUIのスレがいつの間にかなくなっているな
166:デフォルトの名無しさん
06/11/24 21:30:27
HTMLの<table>のように理解しやすいレイアウトはないの?
GridBagLayoutでいいじゃんってのは止めてね。
コンポーネント間隔の割合比率(パーセント)を<table>のように
自動計算でやってくれたりすると楽なんだけど…
167:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/11/24 23:14:02
SWTも結局大して早くなかったし、最良のSWTがEclipse自身だもんな。
168:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/11/24 23:14:23
×SWTが
○SWTアプリが
169:デフォルトの名無しさん
06/11/24 23:47:52
>>166
割合ではないけどレイアウトマネージャほとんど理解しなくても使えるグループレイアウトは?
170:デフォルトの名無しさん
06/11/25 00:17:53
日本語でおk
171:デフォルトの名無しさん
06/11/25 01:22:34
>>166
XmlGridLayoutでも使ってみれば?
172:デフォルトの名無しさん
06/11/25 01:28:22
>>165
需要大してなかったみたいだし、仕方ないね・・・
それにSWTの質問がしたい人はプラグ印スレに行けばいいし、なくても問題ないだろ。
(つーかSWTやる人のほとんどはプラグ印用途な気もするが。)
173:デフォルトの名無しさん
06/11/25 06:03:06
Eclipseのプラグイン以外でSWT使うのはアホだな。
Eclipse RCPとか使ったりね。もうバカかと。
174:デフォルトの名無しさん
06/11/25 19:09:10
>>173
Eclipse RCPはそんなに悪く無いと思うがな
最近、RadRailsとかAptanaとか実際にそれなりに動くRCPアプリが結構出て来てるし
まあ、Eclipse RCPは実質Eclipseプラグインとほとんど変わらんのだが。
175:デフォルトの名無しさん
06/11/25 19:37:08
>>171
ありがたや。ありたがや。
176:デフォルトの名無しさん
06/11/27 10:33:18
画面デザインがベタベタなWindows以外許さない、
な案件だと仕方なくSWTで作ることになる・・・
と思いきや、Swingでプロトタイプ作って見せると
やっぱこれで良いですになる今日この頃。
177:デフォルトの名無しさん
06/11/27 20:32:43
あるあるwwww
178:デフォルトの名無しさん
06/11/30 02:43:56
JFrame上のJMenu、JMenuItem、等のフォントをまとめて(同じものに)設定するにはどうしたらいいでしょうか?
179:デフォルトの名無しさん
06/12/02 17:33:15
FontUIResource font = new FontUIResource(new Font(...));
UIManager.put("Menu.font", font);
UIManager.put("MenuItem.font", font);
180:デフォルトの名無しさん
06/12/03 16:15:58
>>179
ありがとうございました。
181:デフォルトの名無しさん
06/12/04 00:49:10
paintComponentとかpaintとかで、
いくつも矩形を描いて中に文字をいれたいんだけど、文字の長さや幅に応じて
自動的に矩形のサイズを調節したり、矩形の表示位置がウィンドウをはみだしたり
他の矩形と重なったりしないように表示位置を自動で調節してくれるようにしたい。
こういうのって相当むずかしいですか?
182:デフォルトの名無しさん
06/12/04 00:52:17
推奨サイズとかってわかる?
183:181
06/12/04 18:17:08
単語をいくつかならべてそれを矩形でかこみたいんですよ。
矩形の大きさは単語が矩形からはみださないように自動的に適切な大きさ計算して
描かれるようにしたい。
そういう単語が入っている矩形がこれまた何個も出したい。
矩形同士もお互い重ならないように自分で適切な位置を計算してそこに表示されてほしい。
そういうのって簡単にはできないのかな?
184:デフォルトの名無しさん
06/12/04 19:10:02
JLabelにボーダーつければ?
185:181
06/12/04 20:09:25
全部自分で描きたいんですよ。
186:六尺兄貴
06/12/04 20:27:23
TextLayoutとかLineBreakMeasurerとかで調べるとよろし。
結構めんどいよ。.NETは楽なんだけど。
187:デフォルトの名無しさん
06/12/04 21:26:44
そこまでして自分でやりたい意図が不明だ。非標準のライブラリを排除したいわけでもないし。
188:デフォルトの名無しさん
06/12/04 22:51:21
やりたいことが良く分からないけど、
SwingUtilities#computeStringWidth()とか、layoutCompoundLabel()とか使って
自分で描画するかな
189:デフォルトの名無しさん
06/12/04 23:53:35
>>181
>>185
自動でやってくれと言ったり、全部自分で描きたいとか
訳が分かりません。
俺なら、Border設定したJPanelの中にJLabelを埋めていくかな?
190:デフォルトの名無しさん
06/12/05 01:35:18
デモのアプレットの中にそういうのあったね。>>181
191:デフォルトの名無しさん
06/12/05 14:50:38
文字を四角で囲みたいだけなら、Font#getStringBoundsで領域取得して計算すりゃいいんじゃないだろうか・・・
192:181
06/12/05 19:37:37
>>191
表示する場所を計算すればいいってのは分かるんだけど、
複数の矩形を表示するってことを考えると、計算が複雑になりそうで
できそうもないです。
ちなみに185は私ではありません。
193:デフォルトの名無しさん
06/12/05 21:45:16
ひょっとしたら、>>94や>>100で挙がってるような
グラフ描画用ライブラリを使った方が簡単かもしれない。
ノードのみ並べて、ノードのサイズをライブラリ任せにすれば(その辺はライブラリ依存だが)
だいたいいけそうな気がする。
194:デフォルトの名無しさん
06/12/05 23:19:14
>>193
チョチョイとサンプルかいてみてよ
195:デフォルトの名無しさん
06/12/06 02:57:57
ちょいちょい
だがあぷろーだに拒否された
196:デフォルトの名無しさん
06/12/06 10:37:34
JGraphいれようとしてるんだが
Ant必要なの?これ。
インストールできませんdふぁd;sfじゃs
197:デフォルトの名無しさん
06/12/06 15:13:55
んなばかな
198:デフォルトの名無しさん
06/12/06 20:23:17
つかantの動かない開発環境ってどうよ
199:デフォルトの名無しさん
06/12/06 20:45:26
JGraphでほんとうにできるのかよ
200:デフォルトの名無しさん
06/12/06 20:48:44
ほんとうに出来るかどうか、は、何をやろうとしているかに拠る。
201:デフォルトの名無しさん
06/12/06 20:52:53
たくさんのキーワードをいくつかの分類して
分類ごとに矩形を描いて
キーワードを矩形の中にならべていきたいわけ。
矩形の大きさはキーワードの長さと種類にあわせて決めたいし、
矩形の表示位置はほかの矩形とかさならないように決めたいのよ。
202:デフォルトの名無しさん
06/12/06 21:36:49
できないでファイナルアンサー?
203:デフォルトの名無しさん
06/12/06 21:40:14
コンポーネントのサイズなんていくらでも自由にかえれるだろ
204:デフォルトの名無しさん
06/12/06 21:47:15
>>202
オマエには出来ないでファイナルアンサー
ってか、既に答を書いてる人がいっぱいいるじゃん。
205:デフォルトの名無しさん
06/12/06 22:48:16
口だけでは納得いかん
動くコードなら納得がいく
206:デフォルトの名無しさん
06/12/06 23:02:57
コードくれ厨がJavaにまで…
207:デフォルトの名無しさん
06/12/07 00:12:43
>>201
なにがいいたいのか、俺にはさっぱりわからん。
図かなんか描いてどっかに貼ってみせてみろ。
208:デフォルトの名無しさん
06/12/07 00:24:40
_________________________________
| keyword 11111111111 |
| keyword 222222222222222222222 | _______
| aaaa | | |
_________________ | うお |
________ | ぎゃああ |
| | _______
|あああああああ |
| |
__________
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5098日前に更新/197 KB
担当:undef