Java標準低速GUI 6 AW ..
97:デフォルトの名無しさん
07/10/10 11:19:45
>>95
大体とか言わず、正確に理解しといた方がいいと思うよ
URLリンク(java.sun.com)()
>サブコンポーネントの推奨サイズおよびレイアウトに合わせて、この Window をサイズ変更します
余裕が欲しいコンポーネントには推奨サイズを設定 (setPreferredSize) しておけば、そのサイズに合わせてくれる
98:デフォルトの名無しさん
07/10/10 14:27:26
>>97
合わせてくれるかどうかはレイアウトマネージャ次第。
推奨サイズなんだから無視されても文句は言えない。
>>96のようにBorderでマージンとるのを推奨。
99:デフォルトの名無しさん
07/10/10 20:26:34
スレタイ存続の危機?
次期Java 6、Direct3Dの概要が明らかに - WindowsでのSwing 2D描画を高速化
URLリンク(journal.mycom.co.jp)
100:デフォルトの名無しさん
07/10/10 20:34:26
いやいや、まだまだ低速のタイトルは外せません><
# いや、そういうコトなら結構昔に変わってるはずで・・・
101:95
07/10/10 20:44:20
EmptyBorderをセットしてpack、と実装したところうまく行きました。
今までモヤモヤしていた部分が引き締まったようで、とってもすがすがしいです。
>>96さん、>>97さん、どうもレスありがとうございました。
102:デフォルトの名無しさん
07/10/11 00:12:05
>>99
デフォルトでオンはいいよね。MacではOpenGLがオンになるんだろうか・・・。
103:デフォルトの名無しさん
07/10/11 00:29:46
Mac では Java2D は Quartz で描いてたはずかと
104:デフォルトの名無しさん
07/10/11 00:38:44
レンダリング品質はどうなるのだろうか・・・
現状だとDirect3Dモードにすると品質がかわるので使い物にならない
105:デフォルトの名無しさん
07/10/11 01:08:52
>>103
それがさ、Java SE 6からSunのレンダラがデフォルトになる予定なのよ。
106:デフォルトの名無しさん
07/10/11 04:10:28
今までのwin版sun JVMなら-Dsun.java2d.ddraw=trueがデフォルトだったな。
-Dsun.java2d.d3dは支援がまともに得られないから無効だった(パフォーマンス落ちる)
当然-Dsun.java2d.openglはバグ回避で無効。
しかし、D3D9ベースになるのかPS2.0も使うみたいだしVGAとドライバ依存がでかくなるな。
それよりNimbusはマルチバイト文字通るようになるの?w
107:デフォルトの名無しさん
07/10/11 13:03:09
>>105
去年でたDeveloperPreviewでは、PSフォントのレンダリングがガタガタだったんだけど
それ以来、DeveloperPreview無しのまま。
スレリンク(mac板:172番)
>>106
JDK6u5では、日本語通ってるよ。
org.jdesktop パッケージのは古いよ。
URLリンク(download.java.net)
では、パッケージ自体が変わってる。
sun.swing.plaf.nimbus.NimbusLookAndFeel
ね。
org.jdesktop.swingx.plaf.nimbus.NimbusLookAndFeel
のヤツは化ける。
108:デフォルトの名無しさん
07/10/11 20:02:53
そうなのかスナップショット版だと直ってるのか。>Nimbus
けど、-Dsun.java2d.d3d=trueがデフォになるってことはJOGLでプログラマブルシェーダー使うときは明示的にfalseにしないとOpenGLのシェーダーが効かなくなるな。
(win版JVMはd3dとddrawがtureだと効かない、他はDirectXがないので関係ない)
けど、バックエンドがD3D9とPS2.0に変更になっただけで
描画アルゴリズムは今まで通り、OpenGL版と同じだからパフォーマンスは対して変わらんだろうなぁ。
むしろ、OpenGLパイプラインの一部がJOGLと共通化されてOpenGL使った方がJOGLやSwingにはメリットあるんだよな。
けど、個人向けVGAのOpenGLドライバはNVIDIAもATIもバグが回避出来んしなぁ。
もういっそ、J/Directをry・・・w
それよりjdk6に密かに入ってるJava Smart Card IO APIのjavax移動はマダー!?
jdk6はいろんなモン隠しすぎw
109:デフォルトの名無しさん
07/10/11 20:21:44
>>108
JDesktop側のweeklyビルドの方が古い様子。
どうも、JDK6u5が一番始めに組み込まれてるんじゃないかと。
JDK7にもまだ入ってないし。
110:デフォルトの名無しさん
07/10/11 23:58:07
OpenGLでもDirect3Dでもいいが、そろそろJava2Dでαブレンディングまともに実装してほしい
111:デフォルトの名無しさん
07/10/15 22:49:48
スレ違いなんだが、Mistralって画像ライブラリ?でアニメーションGIFを動かすにはどうすりゃいいんだろうか
読み込んで表示まではいけたんだが、最初の1フレームだけ表示してる感じ
アニメーションGIFだけMistralを使わないとか、もう全部Mistral使わないでやったほうがいいんだろうか
112:デフォルトの名無しさん
07/10/16 01:09:07
マルチイメージのフレーム取得なんて標準で出来るじゃん。
113:デフォルトの名無しさん
07/10/16 01:40:30
>>112
?
114:デフォルトの名無しさん
07/10/16 03:08:55
image I/Oだっけか
確かpngはできないけどgifできたような気がする
115:デフォルトの名無しさん
07/10/16 03:15:32
アニメーションGIF表示するだけなら、ToolkitでloadImageしてdrawImageの最後の引数に表示先コンポーネント指定してやれば勝手にアニメーションする
116:デフォルトの名無しさん
07/10/16 03:15:34
気がする!!!!!!
117:デフォルトの名無しさん
07/10/16 03:55:17
MIDPはするけど、SEやCDCはしなかった気が・・・
>>114
pngのアニメーション仕様なんて画像ビューアーにすら忘れ去られてる存在だから気にしないw
対応してるのは次期Fxくらい。
118:デフォルトの名無しさん
07/10/16 04:03:18
Mozillaの出したAPNGは対応入るのかな?
119:デフォルトの名無しさん
07/10/16 19:04:35
mozillaは標準規格の普及に力入れてるな・・・。
jpeg2000は使われることなく次世代策定中かorz
実際、jpeg2000の拡張仕様まで実装したらPNGどころじゃない超万能規格なんだが。
ウェーブレットいいよ、ウェーブレット!
120:デフォルトの名無しさん
07/10/16 22:07:55
jpeg2000はjpegよりブロックノイズとかの面で優れてるけど
良い面を全部帳消しにするぐらい現在のCPUでも結構重いってのがな……
121:デフォルトの名無しさん
07/10/16 22:17:58
確かにデコード重いな。PNGより重いからな。
122:デフォルトの名無しさん
07/10/16 23:24:27
そろそろJAIのメモリリークは直った?
123:デフォルトの名無しさん
07/10/16 23:33:46
標準APIであるDesktopが動かないバグが放置なのに
JAIがまともになるはずないだろ・・・
124:デフォルトの名無しさん
07/10/17 02:22:17
1.3あたりから無視されてるバグもあるしなぁ
125:デフォルトの名無しさん
07/10/17 14:13:04
それは、Bug Paradeには乗ってるの?
126:デフォルトの名無しさん
07/10/18 08:49:07
さて流れを読まず俺がしょぼい質問する…
JFileChooserのcancelボタンに表示する文字を変えるにはどうすればいい?
ApproveButtonは変えれるのに、キャンセルはなぜ変えれない?
127:デフォルトの名無しさん
07/10/18 11:12:57
自分でダイアログを作って、その中に JFileChooser を放り込んで、JFileChooser のボタンは非表示にして自分でボタンを置くってのでどうだ
128:デフォルトの名無しさん
07/10/18 16:42:55
GUIの部品に日本語使いたくなるの俺だけ?(w
JTextFields 名前 = new JTextField();
JRadioButton 女 = new JRadioButton("女");
JRadioButton 男 = new JRadioButton("男");
JButtonGroup buttonGroup.add(女);
JButtonGroup buttonGroup.add(男);
Javaの変数名はダブルバイト可だし、自然言語風に書くのがスタイルなんだし。
129:デフォルトの名無しさん
07/10/18 16:45:33
下2行まちがえた。
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(女);
buttonGroup.add(男);
130:デフォルトの名無しさん
07/10/18 16:52:32
>>128
ファイルシステムに依存しやすいクラス名と違ってフィールド名やローカル変数は問題は出ないよ
DBでも日本語名のカラムを使うかどうかという話と同じく宗教だから気にすんな
クラス名でつかうのはさすがにとめる
131:デフォルトの名無しさん
07/10/18 17:23:17
文字コードの問題は、機種やOSに依存するからな。
マルチプラットホームのJavaではまさに致命的だし、うかつに手を出せん。
132:デフォルトの名無しさん
07/10/18 17:41:37
変数名で機種依存の問題になるのか?
133:デフォルトの名無しさん
07/10/18 18:21:43
理論上unicodeで表せれば問題ないがフォント側しだいだな。
134:デフォルトの名無しさん
07/10/18 18:24:02
>>132
まあ、無駄に怖がってるのかも試練がな。
だが、linuxなんかで文字コードに苦しんだ俺としては、
少しでもリスクを減らしたい。
135:デフォルトの名無しさん
07/10/18 18:33:24
つーか
変数名に日本語使えるのか!しらんかった!
136:デフォルトの名無しさん
07/10/18 20:23:17
具体的には、
Character.isJavaIdentifierStart(char)
Character.isJavaIdentifierPart(char)
で調べられる。
識別子の頭に使えるかと頭以外で使えるかがチェックできるよ。
137:デフォルトの名無しさん
07/10/19 00:17:38
漢字の変数名はコンパイル通ればOKじゃね?
クラス名はクラスファイルで問題出る可能性があるけど
String 半角カナ = StringConverter.get半角カナ( 全角ひらがな );
氏名フィールド.setText("ほげほげ");
JMenu ファイルメニュー = new JMenu("ファイル(F)");
JMenuItem 開くアイテム = new JMenuItem("開く");
ファイルメニュー.add(開くアイテム);
みたいな使い方もできるから、大胆に使ってみたいんだが、
やっぱりなんか気がひける。w
Java言語のスタイルとしては、ある意味、正しいように思うけど。
138:デフォルトの名無しさん
07/10/19 00:19:14
>>137
入力がうざそうだなぁw
俺カナタイパーだから、IMEオンのままコード打つの難しいし
139:デフォルトの名無しさん
07/10/19 00:20:47
うへぇいちいち入力切替なんてやってられんわ
140:デフォルトの名無しさん
07/10/19 00:33:55
俺もカナタイパーなんだけど、鍛えたんで打つのは苦にならんのよ。w
DOS/VキーでATOKの話だけど、タッチタイプで親指で[変換]キーを叩いて、
全角/半角の切替をマスターしたらけっこう楽に入力できるよ。
チームの中で一人だけ漢字でメソッド名つけたりする人いるのはまずそうだが。w
141:デフォルトの名無しさん
07/10/19 00:39:53
JMenuItemのやJTextFieldの数が増えてきたとき、日本語で書いておくと
けっこういい感じなんだけどね。わかりやすい。
本番で採用したことはないけど。
英語圏の人には災難。
142:デフォルトの名無しさん
07/10/19 00:41:07
>>139
ローマ打ちの人に「面倒じゃない?」ってよく言われる
ローマ打ちの方が遅いから、「平気、っーかよくわかんない」
143:デフォルトの名無しさん
07/10/19 00:41:14
>>137
スマン!気が引ける事もなく最近じゃ普通に使ってる。
プロジェクトとして利用を推進してる。
ホント分かりやすいよ。
>>138-140
補完されるから日本語を全部打つ事はあまりない
>>140 ではないが、Macの流儀に合わせて変換キーで全角モードに入るようにしている
144:デフォルトの名無しさん
07/10/19 00:42:46
>>143
まーじーかー
どうせリファクタリングでゴリっと直せるんだし、挑戦してみようかな
145:デフォルトの名無しさん
07/10/19 00:51:14
>>143
おーっ、勇気あるなーww
Javaはもともとダブルバイトを変数名やメソッド名に許しているんだからして、
そういう作法もありだとSunも暗黙に認めてるってことじゃないかと。
将来には見たこともないフォントで書かれたソースコードが
出てくるような気がするんだよね。
146:デフォルトの名無しさん
07/10/19 00:57:15
>>137のようなコードをあんまり見たこと無いからだろう。
個人的に使う分にはまったく問題ないし。
147:デフォルトの名無しさん
07/10/19 00:58:28
もしIDEでちゃんんと補完が効くのなら入力もそれほど苦じゃないかもね
148:デフォルトの名無しさん
07/10/19 01:20:31
>>145
ちょっと気になったので・・・・フォントと文字自体は、別のものですよ。
見た目と意味、くらいの違いがあります・・・・
老婆心ながら、ちょっと調べておいた方がよいかと・・・
149:デフォルトの名無しさん
07/10/19 01:21:39
メソッド名にはあまり日本語を使いたくないな、気分的にw
Javaを全て日本語で書くとかいう研究がどっかであったけど、
ソースがあまりにもカッコ悪くて、プログラミング言語のほとんどが英語で良かったと思っている
150:デフォルトの名無しさん
07/10/19 01:31:10
アニメーションGIFをImageIconとして読み込んで、JLabelにアイコンとして設定したらちゃんとアニメーションしてくれたのね
で、JLabelを継承して、paint(Graphics g)をオーバーライドしたら、拡大縮小回転を楽しめたんですよ。
ここで質問です。
paint(Graphics g)が呼ばれたときに、
アニメーションGIFの何フレーム目を表示しようとしてるか検出できますかね?
拡大縮小回転のさせたBufferedImageを保存して再利用したいんだけど、
今何フレーム目とかわからないと、再利用できない気がするんだぜ
151:デフォルトの名無しさん
07/10/19 01:50:12
>>149
気分とかカッコいいとかそういった主観に基づい行うもんじゃないだろ。
便利なのか必要なのかどうかで違ってくる。
それも言語仕様でサポートされてるから安心して使えるし。
152:デフォルトの名無しさん
07/10/19 03:48:14
日本語ってなかなかにグルー言語よね
153:デフォルトの名無しさん
07/10/19 07:37:14
>>151
同意!
154:デフォルトの名無しさん
07/10/19 07:46:07
>>148
文意を理解してよw
ギリシア語やタイ語の文字のグリフで変数名が書かれているかもしれないってこと。
155:デフォルトの名無しさん
07/10/19 08:45:12
日本語とハングルを同時表示するには両方に対応しているフォントが必要じゃね?
156:デフォルトの名無しさん
07/10/19 09:44:44
SDCだったかでハングルでコメント入ったソースコードは見たことある。
日本語環境のIDE上で表示できるかどうかはしらんけど。
157:デフォルトの名無しさん
07/10/19 12:18:44
>>140
エキサイト翻訳ででてきた意味不明な英語がはいるよりは漢字のほうがましだと思う
そのアプリは日本国外での開発で、海外で売る気があるのかい?と
数年後メンテをやらなくてはならない場合に
ドキュメントが残ってない場合把握しやすいというメリットもある
DBで日本語の項目名いれてNetBeansなりでJPAを生成でもすれば
日本語名のプロパティが見事に生成されるわけだが、わりとみやすいし
いざとなればリファクタリング一発だから問題はねぇな
158:デフォルトの名無しさん
07/10/19 12:19:33
>>150
とりあえず軽量コンポーネントでpaintそのものをオーバーライドするのやめれ
159:デフォルトの名無しさん
07/10/19 14:17:33
>>157
NetBeansだとGUIまわりのリファクタリングはひっかかるケースが多いけど。
160:デフォルトの名無しさん
07/10/19 14:44:40
Javaのバイトコードって変数名なんかも保存してるんじゃなかったっけ?
変数名に日本語使えばバイトコードにも残るの?
161:デフォルトの名無しさん
07/10/19 15:14:30
UFT8に変換されて残るからソースのエンコーディングがなんであれ問題なし。
162:デフォルトの名無しさん
07/10/19 16:18:19
ローカル変数も残るんだっけか?
163:デフォルトの名無しさん
07/10/19 16:24:36
テストケースのメソッドは日本語がたいへんよろしい。
164:デフォルトの名無しさん
07/10/19 16:26:36
デバッグ情報として残すことも残さないこともできる
165:デフォルトの名無しさん
07/10/19 21:02:52
ローカル変数やGenericsの型指定は残らないと思った。
C#だとGenerics型は残るらしいね。
Javaのはキャストしてるだけってのが理由だろうけど。
166:デフォルトの名無しさん
07/10/19 21:22:05
ローカル変数はフレームごとに領域(とlongとかあるので型のサイズ)だけ
確保されてたはず。
167:デフォルトの名無しさん
07/10/19 21:42:43
どっちにせよ日本語変数は問題なさそうだな
168:デフォルトの名無しさん
07/10/19 22:25:36
>>159
NetBeansのGUIコンポーネントの話はしてないよ
リファクタリングはJPAのほう
GUIのコンポーネントのリファクタリング問題は4.1あたりで直すとか言ってたのだが
絶賛放置中
>>167
なさそうではなくて問題ない
問題が出るとしたらマッピングがおかしい場合だけ
169:デフォルトの名無しさん
07/10/20 00:50:24
>>159
Netbeansは、リファクタリング無しでも日本語が使えないGUIエディタまわりがあるな。
Javaで作って、何でそうなるのか問い詰めてやりたい。
170:デフォルトの名無しさん
07/10/20 04:02:05
そりゃ日本語使ってないやつが作ってんだからそうなるだろ。
使わないものがどうなっていようとそれは仕様です。
171:デフォルトの名無しさん
07/10/20 04:45:28
aho
172:デフォルトの名無しさん
07/10/20 06:30:17
>>170
確かに国際化は意識して対応しないとまともに動かないけど
それってsunは他言語のことなんて知りません、手抜きですって告白してるようなものなんだが
173:デフォルトの名無しさん
07/10/20 06:52:51
Sunは、NetBeansを支援しているだけ。建前上は。
174:デフォルトの名無しさん
07/10/20 21:09:54
国際化で一番ひっかかるとこってどこだろうね。
やっぱフォントまわりかな。
文字列はダブルバイトでも1文字でカウントしてくれるし、
ファイルにはUnicodeで書き出するようにすればてっとり早い。
でもアプリの性質にもよるか。
エディタのように文字を扱うのは問題おきやすいかもね。
175:デフォルトの名無しさん
07/10/20 23:01:36
最近は見なくなってきたけど昔は Reader,Writer を使わずに
InputStream, OutputStreamで処理してる糞アプリや糞ライブラリ
をよく見かけたな…
176:デフォルトの名無しさん
07/10/21 00:04:32
NetBeansの日本語問題は直すつもりがないらしーぜ
177:デフォルトの名無しさん
07/10/21 00:59:58
使ってないから別にいいよ
178:デフォルトの名無しさん
07/10/21 03:01:53
どういうところが糞な
179:デフォルトの名無しさん
07/10/21 03:46:16
URLリンク(videointroplayer.web.fc2.com)
180:デフォルトの名無しさん
07/10/21 06:58:55
>>175
よく見かけるほどJavaアプリがあったのか
181:デフォルトの名無しさん
07/10/21 08:31:45
確に、GUI関係は何とかした方がよい。
Appletもいらない。
182:デフォルトの名無しさん
07/10/21 10:23:38
↑Appletはとても役に立っているから株やってみろ。まったく見識がないところは見逃してやるがなw
183:デフォルトの名無しさん
07/10/21 13:00:16
Appletはこれからだよ〜。
184:デフォルトの名無しさん
07/10/21 13:07:28
AppletよりJava Web Startの方がいいように思うんだが、なんか使ってるとこないねぇ……。
185:デフォルトの名無しさん
07/10/21 13:21:20
比べるものじゃなくて、どっちも必要だと思うよ〜。
186:デフォルトの名無しさん
07/10/21 14:02:14
Web Startってどういう場合に使うものなの?
アプリ配布じゃ駄目なのか?
187:デフォルトの名無しさん
07/10/21 14:08:52
>>186
バージョンが上がってもユーザーは自分の意志でダウンロードしなくていい。
望めばデスクトップのアイコンやスタートメニューのエントリも作ってくれる(後からでも)。
あたりまえだがアンインストールにも対応してる。
188:デフォルトの名無しさん
07/10/21 14:47:22
つまりバグを大量に仕込んだまま出荷しても、ほとんどのエンドユーザに気づかれずにアップデート可能ということか。
189:デフォルトの名無しさん
07/10/21 15:02:20
組み込み型DBつかってたりプラグインのあるアプリには使えないんじゃないの。
190:デフォルトの名無しさん
07/10/21 15:07:53
>>188
エロゲメーカーにもってこいの機能だな。
191:デフォルトの名無しさん
07/10/21 15:30:05
>>189
普通にローカルファイルだって使えるし、組み込みDBやプラグインだっていける。
Eclipse RCPをJava Web Startで配布することも可能だよ。
URLリンク(help.eclipse.org)
192:デフォルトの名無しさん
07/10/21 16:59:03
Java Web Startか
思い出せるのはV2CとTopCoderぐらい
他にももっと見てきたはずなんだが
193:デフォルトの名無しさん
07/10/21 16:59:35
Looking Glassもそうだったか?
194:デフォルトの名無しさん
07/10/21 17:49:40
>>184
WebStartは配布技術だからWebStartアプレットというのもある
まぁ、WebStartアプリケーションのほうがはるかに使いやすいけど
今のJavaだとWebStartはデスクトップなどへのショートカット、
アプリケーションの追加と削除でアンインストールが出来るなど大幅によくなってるが
スタンドアロンアプリでもショートカットやアンインストールやってほしいのにねぇ
リッチクライアントは不特定多数を相手にしたものではなくて特定のユーザー向けだから
業務アプリとかやってないとあまり見る機会はないかもしれない
195:デフォルトの名無しさん
07/10/21 18:02:05
WebStart普通に便利だしJavaアプリケーションの配布では結構使われてはいるんだけど
そもそもJavaアプリケーションで有名なものが少ないからWebStartの知名度も…
196:デフォルトの名無しさん
07/10/21 18:27:12
今まで俺が使ったJavaのアプリケーションっていったら、
JDiskReportとJudeぐらいかなあ。
197:デフォルトの名無しさん
07/10/21 18:43:27
NetBeansとかEclipseとかIDEAとかJDevはなしか
198:デフォルトの名無しさん
07/10/22 00:17:16
V2Cを忘れて何でここを見てるんだか。
Appletは、JavaQuickStarter使えば劇速になるので
これからまだ延びるかもしれないと思った。
JQSについては、
URLリンク(download.java.net)
URLリンク(jdk6.dev.java.net)
参照。
要は、prefetchです。
199:デフォルトの名無しさん
07/10/22 01:15:18
とりあえずJavaSE6は起動速度、動作速度に関して
進歩のほとんどなかった5.0から大幅によくなってるので
だいぶ未来は明るいと信じたい
200:デフォルトの名無しさん
07/10/27 18:27:01
以下、微妙にスレ違い&手前味噌だけど…晒してみる。
コード署名が必要なJavaWebStartアプリの開発をするときには、
maven2のwebstart-jnlp-pluginを使うと、幸せになれる。
URLリンク(sqs.cmr.sfc.keio.ac.jp)
コード署名証明書の値段が高すぎで買えない!という場合には、
URLリンク(sqs.cmr.sfc.keio.ac.jp)
こちらを。
以下、まだ作りかけ・証明書期限切れですが:
URLリンク(sqs.cmr.sfc.keio.ac.jp)
URLリンク(sqs.cmr.sfc.keio.ac.jp)
前者のほうは、クライアントローカルかつ環境非依存に、
フォント埋め込みPDFファイルを作れるようにするために、
JavaWebStartでIPAフォントを配布して利用している。
後者のほうは、LAN内のマシン複数台を使って分散並列処理が
できるように、JavaWebStartで起動した分散プロセス群が
Pure P2P的に通信して、グリッドを作れるようにしてある。
201:デフォルトの名無しさん
07/10/27 19:46:02
WebStartの場合、おもにB2Bや社内アプリのように相手が特定できる用途がほとんどで
あらかじめ信頼できるように登録しておくという手が普通に使われるんで
あんま問題になってない感じ
202:デフォルトの名無しさん
07/10/27 21:06:36
それは AWT/Swing ネタなのか?
っとか思ったけどム板のJava関連のスレで適切なのってないのな…
203:200
07/10/27 22:29:24
…それじゃ、「Swingでがんばりました」的ネタを投下します。
たとえば、Preferencesを設定するGUIを作るときには、
左画面にJTree、右画面にその選択範囲のエディタを配置する形で、
2ペイン構成のGUIとする場合が多いと思います。
URLリンク(www.sociomedia.co.jp)
でも、この手のGUIで作業をすると、左画面と右画面をマウスで
行ったり来たりするのが、ちょっとわずらわしい。
また、左画面と右画面の関係が直感的に分かりにくい。
そこで、左のJTree画面上で任意の範囲をドラッグして選択できるようにし、
その選択部分のフォーカスが右エディタ画面の該当個所に投影される
ような仕組みを作ってみました。
URLリンク(sqs-xml.sourceforge.jp)
こんな感じ。
高機能GUIコンポーネントとしての再利用性の追求は、
まだ全然やっていないけれど、需要あるでしょうか?
こういう部分を含む全体を、Apache Licenseで開発しています。
204:デフォルトの名無しさん
07/10/27 23:10:27
Preferencesを設定するGUIって普通作らない部類だからなぁ
多いとは思えない
アプリでいくらでも上書きできるから、ちょっとした保存くらいにしか使い道がないと思うんだけど
そういうアプリとなると通常Windowsがメイン環境になるし、設定箇所なんてWindowの位置保存程度だろう
ならばレジストリ直接開いたほうが速い
意味のある値ならばxmlなり別ファイルにするはず
ただし、選んだ部分を一気に出してほしいというインターフェースはわりとある
その場合、右側のペインにもちゃんとスクロールバーつけといてね
特に難しいことではないので高機能ってのがわからんのだが、ここが便利!という売り文句がないと難しいぞ
205:デフォルトの名無しさん
07/10/27 23:13:18
「需要あるでしょうか?」ってのが良く分からんのだけど、
そういうのって自分が必要だと思うから作るんじゃないの?
206:デフォルトの名無しさん
07/10/27 23:25:24
>>204
200じゃないけど
>アプリでいくらでも上書きできるから、ちょっとした保存くらいにしか使い道がない
ってどういう意味?
JavaアプリなのにわざわざWindows依存にしてレジストリが出てくるのも
よくわからないんだけどどういう状況を想定してるのかしら…?
207:200
07/10/28 00:22:19
> 意味のある値ならばxmlなり別ファイルにするはず
っていうか、XMLエディタを作っているのですよ。
> そういうのって自分が必要だと思うから作るんじゃないの?
説明が難しいのだけれど、
階層的な構造をまたいで、
離れた枝と枝を見比べながら編集をするときに、
ちまちまと必要のない枝を閉じて、必要な枝だけを開いて、
画面内に収まるようにしてから作業をするのは、かったるい。
また、階層的な構造をまたいで、
離れた枝から枝へドラッグするときに、
マウスドラッグで画面をオートスクロールさせて
画面の外にある別の枝を探しながら作業をするというのは、
スクロール量の制御がやりにくいし、
うっかり途中でドラッグを放してしまいそうで、危なっかしくてイヤ。
こんなふうに感じるのって、俺だけなのかな?と。
208:デフォルトの名無しさん
07/10/28 00:32:29
>>206
Preferencesの実装としてWindowsであればレジストリを使っている
>>207
>っていうか、XMLエディタを作っているのですよ。
XMLエディタです、とあなたは一言も言ってないのにそんなの他人がわかるかい
209:200
07/10/28 00:49:03
先に、
> たとえば、Preferencesを設定するGUIを作るときには、
> でも、この手のGUIで作業をすると、
と、断っているように、Preferencesを設定することが目的ではありません。
Preferencesについて言及したのは、「この手のGUI」について
問題提起するための、「たとえば」の話です。
また、
> URLリンク(sqs.cmr.sfc.keio.ac.jp)
として、ここで提案しているGUIの動作内容が、
JavaWebStartで実際に動くようなURLを示しており、
これを起動してみれば、Preferenceエディタではなく、
XMLエディタであることは、すぐに分かるのではないかと思います。
で、
> Preferencesの実装としてWindowsであればレジストリを使っている
っていうのは、regeditのこと? あれ、使いやすいですか?
210:デフォルトの名無しさん
07/10/28 01:10:19
D&Dが難しい場合(スクロールが必要とか)は、コピペを使うなぁ。
コピペできるように作っておいてくれないと無理だけど。
> URLリンク(sqs.cmr.sfc.keio.ac.jp)
今作ってるのはツリー表示のとこはD&Dもコピペもできないみたいね
その代わり、ポップアップメニューに便利そうなものがあるけど。
211:デフォルトの名無しさん
07/10/28 01:11:44
なんとかく理解した。
アプリケーションに組込む設定機能を作るコンポーネントの話をしているのに
Preferencesを設定するツールの話をしていると勘違いしているのだな?
それでWindows環境ならPrefenrecesの実装がレジストリだから
レジストリエディタで直接弄ればいいんじゃね?って話がでてきたと…
212:200
07/10/28 01:26:32
Preferencesといえば、Java Preferences APIの、
URLリンク(bugs.sun.com)
このバグに悩まされております…。
WindowsではPreferencesの保存先にレジストリを用いているので、
このバグは出ないのだけど。
213:デフォルトの名無しさん
07/10/28 01:35:21
>>203のスクリーンショット一枚でXMLエディタだとわかる人はそうそういまい。
んでみてると汎用XMLエディタにはみえんね。
だとしたら設定項目用ということならツリー構造を見せる必要もないと思うんだけど。
214:デフォルトの名無しさん
07/10/28 01:38:02
>>212
スレタイ嫁。
それにバグパレードに載ってるんだからバグだろうさ。
お前が悩んでいることをここに報告してどうするつもりなんだ?
それは困ったね、よしよし、と慰めてもらいたいのか?
スレタイに関係のない質問をしたいなら質問スレへ、
何かの課題をやってもらいたいなら宿題スレへいけ。
215:200
07/10/28 01:41:21
>>210
やっぱりコピペだよね。
ところで、階層構造のノードをペースト先とするときには、
「そのノード自身(置き換え)」
「兄ノードとして挿入」
「弟ノードとして挿入」
「子供ノードとして挿入」といったように、
何通りかがあるのだけれど、Ctrl-Vで張り付けるとしたら、
どれをデフォルトにするのが感覚的に正しいのだろう?
ちなみにFreeMindでは、
「ノードのアイコンの微妙に上のほうを指しているときは兄として挿入」
「ノードのアイコンの微妙に下のほうを指しているときは弟として挿入」
「ノードのアイコンの右端のほうを指しているときは子供として挿入」
的なGUIを実現しているけれど、
JTreeでは、getClosestPathForLocationとかだと、
指定したx,yがどのノードに一番近いか、ということしかわからないので、
むずかしい。
216:デフォルトの名無しさん
07/10/28 01:41:41
Preferencesって言葉を初めて知ったw
217:デフォルトの名無しさん
07/10/28 01:48:07
>>215
感覚的には弟として挿入かな
CTRL+SHIFT+Vだったら子供として挿入とかもありかもしらん
218:200
07/10/28 02:33:52
>>214
Preferences APIでの保存先の実装は、
Windowsではレジストリ、LinuxなどではXML形式のファイルとして保存される。
ここでの話題にもビミョーに関連すると思ったので、話のついでに書いてみた。
bug_idを示せば、ほかのひともvoteしてくれるかもしれないし。
でもまぁ、ここはGUIのスレなので、スレ違いですね。ごめん。
これから「汎用のもの」を目指して、
XMLエディタの開発を進めていこうと思っています。
個人的にはSwingというかJTreeというか特にTreeCellRendererの
あたりが好き:-)なので、階層構造を編集するためのGUIコンポーネントを、
ユーザ側・開発者側の両面から、もうちょっとだけ使いやすくする
工夫についても、取り組んでみるつもり。
コメントくれた人、ありがとう。名無しに戻ります。
219:デフォルトの名無しさん
07/10/28 13:08:22
>>215,217
一瞬、VIPスレだっけと思ってしまった俺は病んでいる。
リッチなSwing部品、という点で言うとSwinglabで作ってたりするけど
画面ごとの仕組みを含んだライブラリって決定版がないね。
>>203の仕組みも、そんなに便利かなぁと思う。
左で選んだのが右にタブでどんどん、というのでもいいし
左で選ぶの面倒だから、eclipseなんかみたいに項目フィルタあった方が便利だし。
設定パネルなら、一度に見せる必然性ってあんまないのよねぇ・・・
220:デフォルトの名無しさん
07/10/28 15:02:26
よくあるやりかたとしては、
ウィンドウをSplitPaneで分割したり、複数のウィンドウを開いたりして、
それぞれの画面で、同じ文書の、別の場所を表示できるようにする、
というものがある。
MVCできちんと作ってあって、
同じModelに対して複数のViewを表示できるのなら、わりと簡単に実現できる。
Eclipseとかでは、タブを画面内でドラッグすると、
左右ないし上下での好みのスタイルで画面分割できる。
また、タブを画面外までドラッグすると、
新しいウィンドウを開くことができる。
こうした機能は、操作性もわりといいと思う。
221:デフォルトの名無しさん
07/10/28 15:04:56
Swingでも、JTabbedPaneのタブへのドラッグ動作についての作り込みと、
JToolBarのfloatable機能を組み合わせれば、似たようなことができると
思うのだけど、面倒くさいよな
222:_
07/11/01 18:01:56
//ラベル作成
Border wborder = new LineBorder(Color.white, 1);
JLabel Ac1 = new JLabel("");
Ac1.setBorder(wborder);
Ac1.setHorizontalAlignment(JLabel.CENTER);
Ac1.setBounds(400,100,80,30);
add(Ac1);
// ボタン作成
btnEnter =new Button("追加");
btnEnter.addActionListener(this);
add(btnEnter);
btnEnter.setBounds(150,250,80,80);
//ボタンイベント
public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
Border wborder = new LineBorder(Color.black, 1);
Ac1.setBorder(wborder);
Ac1.setText("Push");
}
}
ボタンを押したら指定の場所にラベルが表示されるようにしたいのですが
この方法ではなぜか出来ないのですがどうしてでしょうか
どなたか教えてください
223:デフォルトの名無しさん
07/11/01 18:28:27
>JLabel Ac1 = new JLabel("");
Ac1 がローカル変数だからじゃね
たぶん actionPerformed の中から見てる Ac1 と別物
224:_
07/11/01 18:39:11
どうすればよいのでしょうか?
public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
JLabel Ac1 = new JLabel();
Ac1.setBounds(400,100,80,30);
Ac1.setText("Push");
}
このように書いてみたんですがまったく表示されません.
225:デフォルトの名無しさん
07/11/01 18:55:26
>>224
add(Ac1);
226:デフォルトの名無しさん
07/11/01 22:16:24
>>225
addも書き加えましたが出来ませんでした。
本当に困ってます。
誰か助けてください。
227:デフォルトの名無しさん
07/11/01 22:17:03
全ソースうpれ
228:デフォルトの名無しさん
07/11/01 22:34:06
これなんですがまったく出来ません。
public class Practice extends JFrame implements ActionListener{
Button btnEnter;
public static void main(String[] args){
Practice frame = new Practice();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(50, 50, 900, 700);
frame.setTitle("研究のGUI");
frame.setVisible(true);
}
Practice(){
JPanel p = new JPanel();
btnEnter = new Button("追加");
btnEnter.addActionListener(this);
add(btnEnter);
btnEnter.setBounds(250,120,80,80);
getContentPane().add(p, BorderLayout.CENTER);
appRun();
}
public void appRun(){
}
public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
JLabel Ac1 = new JLabel();
Ac1.setBounds(400,100,80,30);
Ac1.setText("Push");
add(Ac1);
}
}
}
229:デフォルトの名無しさん
07/11/01 23:28:35
なんつーかgetContentPaneつかっていたりつかわなかったりばらばらだな
コンストラクタで設定したり、mainの中だったりここも不統一だし
レイアウトマネージャもしらんっぽいね
そこから勉強したらどうかな
230:デフォルトの名無しさん
07/11/01 23:29:40
add(Ac1);
のあとに、画面の再描画させたらええんちゃうかな?
コマンドは忘れた
231:デフォルトの名無しさん
07/11/01 23:30:39
>>229
それや、add(Ac1);の前にgetContentPaneがいるんや
232:デフォルトの名無しさん
07/11/01 23:35:58
たぶん、BorderLayout.CENTER の JPanel に全面覆い隠されてるんじゃないか
JPanel なくしてみ
getContentPane は最近は要らない
233:デフォルトの名無しさん
07/11/01 23:47:16
JPanelをなくすとなぜか画面が全てボタンになってしまいます
add(Ac1);の前にgetContentPaneを書いても変わりませんでした。
どなたかお手数ですがやってみてもらえないでしょうか?
234:デフォルトの名無しさん
07/11/01 23:51:02
じゃあレイアウトマネージャをなくす。
setLayout(null);
235:デフォルトの名無しさん
07/11/01 23:51:29
>>233
だからレイアウトマネージャが基本なんだから勉強してよ
コンテントペインはボーダーレイアウトがデフォで、
パネルはフローレイアウトがデフォってことでしょ?
推奨サイズとかも覚えてください
236:デフォルトの名無しさん
07/11/01 23:53:20
>>234
何も考えずにそれをすると一番難しいんだけどね
JPanelに推奨サイズを指定してpack、
JPanelはnullレイアウトというのならまだわかるけど
setBoundsというのが真っ先に出てきたあたりで何を参考に作ったのかが気になる
237:デフォルトの名無しさん
07/11/01 23:54:50
ButtonをJButtonに変えろよ
こんな形でAWTとSwingを混在させるなw
238:デフォルトの名無しさん
07/11/01 23:56:57
偉そうなわりに、ズバリの回答書く奴いないのがなんとも
239:デフォルトの名無しさん
07/11/02 00:04:29
偉そうな>>238がズバリの回答を待つとしよう
重要なヒントや答えまででてるのにこれ以上何を言うのか楽しみだ
240:デフォルトの名無しさん
07/11/02 00:19:49
ボタンはJButtonにしたら普通の大きさになったんですが
肝心のラベルがボタンを押しても出てきません
ただそれがやりたいだけなのに何故なんでしょうか?
正直どなたか全文を書いていただけないでしょうか?
241:デフォルトの名無しさん
07/11/02 01:33:33
ヒント200%だしてるのにそれを無視して全部おしえるなんてこの板ではあんまりありえん
答えだけがほしければ宿題スレへどうぞ
242:デフォルトの名無しさん
07/11/02 01:52:16
>正直どなたか全文を書いていただけないでしょうか?
つ 練炭
243:デフォルトの名無しさん
07/11/02 01:59:48
>>240
勘違いすんな。ここはくだすれでもないし初心者スレでもない。
244:デフォルトの名無しさん
07/11/02 03:04:48
public class Practice extends JFrame {
JPanel labelsPanel;
public Practice (){
JButton appendLabelButton = new JButton ("ラベルを追加");
appendLabelButton.addActionListener (new ActionListener(){
public void actionPerformed(ActionEvent event){appendLabel();}});
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(appendLabelButton);
labelsPanel = new JPanel();
labelsPanel.setLayout(new FlowLayout());
labelsPanel.setPreferredSize(new Dimension(400, 400));
add(buttonPanel, BorderLayout.NORTH);
add(labelsPanel, BorderLayout.CENTER);
}
void appendLabel(){
JLabel helloLabel = new JLabel ("Hello");
helloLabel.setBorder(BorderFactory.createLineBorder(Color.white, 1));
helloLabel.setHorizontalAlignment(JLabel.CENTER);
helloLabel.setPreferredSize(new Dimension(80,30));
labelsPanel.add(helloLabel);
labelsPanel.revalidate();
}
public static void main (String[]args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
Practice frame = new Practice ();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.pack();frame.setVisible(true);
}
});
}}
245:244
07/11/02 03:06:18
>>228
こんな感じでいいのか?
今度から宿題は宿題スレいってくれな?
246:デフォルトの名無しさん
07/11/02 04:17:09
>>244
超マジレスに笑ったw
でもこれがさらっと書けない職業プログラマが多いんだよな・・・
247:デフォルトの名無しさん
07/11/02 07:21:14
自演乙
248:デフォルトの名無しさん
07/11/02 07:37:07
口だけの奴が多い中 >>244 はまともだな
249:デフォルトの名無しさん
07/11/02 07:53:50
というか研究のGUIってなんだw
何を研究したらあんなソースになるのか知りたいw
250:デフォルトの名無しさん
07/11/02 10:19:13
>>228
実行して出てきたGUIにワロタ。センターに足す動けばいい的例。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame {
public Test() {
JButton button = new JButton("Add Label");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
add(new JLabel("Hello, world!"));
getContentPane().validate();
}
});
add(button, BorderLayout.SOUTH);
setSize(100, 100);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}
251:デフォルトの名無しさん
07/11/02 11:34:19
>>246
インナークラスとかAWTイベントディスパッチスレッドとかしらないで
GUI扱おうとしてぼろぼろになる例はよくみるね
特にスレッド周りがぼろぼろくさい
基本を勉強せずOJTという名の下に無理やり投入される場合そうなりやすい
デバッグ時には動いていてもたまに動かないとか厄介なバグいれこむのがうまい連中がね
252:デフォルトの名無しさん
07/11/03 12:38:14
>>200
証明書の有効期限切れてるよ
253:デフォルトの名無しさん
07/11/03 13:58:53
>>252
200で言及済
次回以降、安定版のリリースのときには署名タイムスタンプを使うことにするよ。
254:デフォルトの名無しさん
07/11/04 13:41:02
windowsのJFileChooserとかJOptionPaneでキャンセルが"取消し"って表記されるのがウザい…
windows標準みたいに"キャンセル"って書くにはどうすればいいだろ…
255:デフォルトの名無しさん
07/11/04 13:44:43
よくそんなん気づいたな
256:デフォルトの名無しさん
07/11/04 14:20:13
UIManager.put("FileChooser.cancelButtonText", "キャンセル");
UIManager.put("OptionPane.cancelButtonText", "キャンセル");
257:デフォルトの名無しさん
07/11/04 14:25:19
すごい・・・
いつも思うのですが、そのようなフィールドやプロパティの名前はどうやって調べているのでしょう。
ソースを見るしかないのでしょうか?
258:デフォルトの名無しさん
07/11/04 14:38:37
このへんとか
URLリンク(homepage1.nifty.com)
259:デフォルトの名無しさん
07/11/04 14:59:07
こういうの探してました!
ありがとうございます。
260:254
07/11/04 15:35:25
>>256
ありがとう。
これで見た目ほとんどwindowsっぽくなった。
FileChooserの複数選択をwindowsみたいにドラッグでびやーって範囲広げてその中全選択とかやってみたいけど、
さすがにこれはキツいな。
261:デフォルトの名無しさん
07/11/04 16:10:38
単純なファイル選択ダイアログならAWTのほうつかうといいよ
機能がほとんどないけど、それで足りるのならね
262:デフォルトの名無しさん
07/11/04 16:26:51
ファイルダイアログだけど、WindowsのAWTはなんか見た目がしょぼくない?
MacはAWTは普通だけど、Swingの方がしょぼ過ぎる。
Desktop Java Technology Today TS-3160
URLリンク(developers.sun.com)
ここを見ると、Future Platform FeaturesにNative FileChooserってあるから、そのうち改善されると思うけど。
263:デフォルトの名無しさん
07/11/04 22:26:28
1.
URL url = Hoge.class.getResource("../resources/book.gif");
2.
URL url = ClassLoader.getSystemClassLoader().getResource("../resources/book.gif");
このような2つのコードでリソースを取得しています。
1をHogeクラスで使用するとちゃんとURLが返ってきますが、Hogeのインスタンスであるインナークラスから呼び出すとnullが返ってきます。
しかし2のようにシステムクラスローダから呼び出すと、Hogeからの場合もHoge中のインナークラスからも呼び出すことができます。
そこで質問なのですが、
Q1.インナークラスからの相対パスは、そのインナークラスの属するクラスからの相対パスとは異なるのか(上でいうHogeのインスタンスのインナークラスとHogeクラスの関係)
Q2.上の実行を、eclipseで行うと結果が逆になる(2がうまくいかず、1がうまくいく)のですがその理由。
答えづらい質問ですみません。もしよろしければ教えてください。
264:デフォルトの名無しさん
07/11/04 23:44:44
相対やめたほうがいいでよ
どうせリソースは決まった場所におくでそ
265:デフォルトの名無しさん
07/11/04 23:51:10
確かにそうですよね。
なんだかそこらへん結構複雑そうですし・・
分りました。以後リソース読み込みは絶対指定にします。
ありがとうございました!!
266:デフォルトの名無しさん
07/11/08 01:13:35
今更だがV2Cすげー
267:デフォルトの名無しさん
07/11/09 12:10:05
JOptionPaneに、「次からこのメッセージを表示しない」とかチェックボックス付けたいんですけど、
何かいい方法ないですかねぇ
268:デフォルトの名無しさん
07/11/09 12:14:15
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("本文"));
panel.add(new JCheckBox("次からこのメッセージを表示しない"), BorderLayout.SOUTH);
JOptionPane.showMessageDialog(parent, panel);
269:デフォルトの名無しさん
07/11/09 12:35:18
>>268
おー、早いレスありがと〜。
270:デフォルトの名無しさん
07/11/09 23:36:58
いまからSwingアプリケーションつくるからなんかお題くれ
条件はネット接続しないこと
開発環境はJDK6u3、NetBeans6.0
271:デフォルトの名無しさん
07/11/09 23:44:52
>>270
Jazzの自動作曲。高品質の楽譜の表示と印刷。
272:270
07/11/09 23:45:27
>>271
勘弁してくれ
273:デフォルトの名無しさん
07/11/09 23:50:42
swing jazzじゃなくてもいいんだが…
swingはあくまでもguiのフレームワークに過ぎないから、
swingでアプリケーションを作るって言っても範囲が広すぎるんじゃないかな?
guiでアプリ作るけど何か無いかなって言うようなものだから、もう少し幅を狭めないと。
274:デフォルトの名無しさん
07/11/09 23:51:07
>>270
ドロー系お絵書きソフト、SVGでの読み書き可能なものを、OSSで。
275:デフォルトの名無しさん
07/11/09 23:51:49
>>271
少しジャンルは違うがヤマハの「初音みく」とか言うの良さそうじゃないか?
276:デフォルトの名無しさん
07/11/09 23:51:56
じゃあ懐かしのブラウザ HotJava を今の技術で作って
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4901日前に更新/252 KB
担当:undef