Java標準低速GUI 6 AWT/Swing
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/09/26(水) 20:51:18しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
Java低速GUI Swing 5 (前スレ)
http://pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
http://pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
http://pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50
0688デフォルトの名無しさん
2007/12/21(金) 13:33:04NetbeansのGridBagLayoutのエディタが無いと仕事にならんね・・・・
もうちょっと進化してくれても恨まないけど・・・・
複数のレイアウトマネージャを組み合わせて、
がちっと作り込むのは実はむしろ趣味のほうだったりする。
それでも、GridBag,Groupを手で書くのは調整くらいはできても、まぁ正直無理。
0689デフォルトの名無しさん
2007/12/21(金) 13:37:50ただ、GropuLayoutがでてしまったおかげでほとんどそれ1本でいけるようになっちまった
0690デフォルトの名無しさん
2007/12/21(金) 13:47:57でもそのためにはJavaのバージョンを6にしないとだめなんだよなー
まだ1.4だしなー
先は長いな・・・
0691デフォルトの名無しさん
2007/12/21(金) 13:50:370692デフォルトの名無しさん
2007/12/21(金) 13:58:225.0からだったかな?
来年登場予定のJavaSE7がでると1.4は保守されなくなるから。
保守契約結んでいるなら5.0以上でも動くようにしていったほうがいいね。
0693デフォルトの名無しさん
2007/12/21(金) 16:55:490694デフォルトの名無しさん
2007/12/21(金) 19:39:20GroupLayoutが、考え方が非常に明快な上に
頭で考えたことを素直に反映できる優秀なレイアウトだったので、やめた
0695デフォルトの名無しさん
2007/12/21(金) 19:40:220696デフォルトの名無しさん
2007/12/21(金) 19:45:290697デフォルトの名無しさん
2007/12/21(金) 19:50:41JTableとかテキストフィールドで再現してそう
0698デフォルトの名無しさん
2007/12/21(金) 19:56:510699デフォルトの名無しさん
2007/12/21(金) 20:16:430700デフォルトの名無しさん
2007/12/21(金) 21:17:20GUIエディタは便利だけど、業務アプリでそういうのでサックリ作っちゃうと
後々火を吹くから俺のPjでは使わない。
>>685
イタイな
0701デフォルトの名無しさん
2007/12/21(金) 21:46:14なんか冗長な記述だよな。これは仕方ないのか?
0702デフォルトの名無しさん
2007/12/21(金) 21:46:20GUIに頼らずにどこまでできるかで、決定的な差が出る場面ってあるからね。
このスレではアマチュアが多いのか、あまり良く分かってない人が多いようだけど。
0703デフォルトの名無しさん
2007/12/21(金) 22:05:17えぢたを使って火を噴くって例えばどんなの?
0704デフォルトの名無しさん
2007/12/21(金) 22:21:03ウチではハンドラをあとからインジェクションする仕組みで使ってるが・・・
0705デフォルトの名無しさん
2007/12/21(金) 22:24:13確かにそうだね。
完全にGUI担当者がデザイナと化してくれれば問題はないよね。
あとは、GUI担当者が皆一様の作法を身につけてくれることが重要かな。
そのためにもGUIデザインのためのフレームワークみたいなものは欲しいね。
0706デフォルトの名無しさん
2007/12/21(金) 22:27:100707デフォルトの名無しさん
2007/12/21(金) 23:59:580708デフォルトの名無しさん
2007/12/22(土) 06:26:420709デフォルトの名無しさん
2007/12/22(土) 07:39:23おまえ程低くないと思うよ。
0710デフォルトの名無しさん
2007/12/22(土) 08:06:290711デフォルトの名無しさん
2007/12/22(土) 12:13:06それはどっちかというとGUIアプリの処理手順をフレームワーク化してるよね
ちょっとわかりにくいかもだけど、俺がいいたいのは、「GUIデザイン」部分のフレームワーク。
そういうのがあったらいいなぁなんてオモタわけ。
うーん伝わらないか。。。
0712デフォルトの名無しさん
2007/12/22(土) 12:45:000713デフォルトの名無しさん
2007/12/22(土) 15:44:410714デフォルトの名無しさん
2007/12/22(土) 16:01:580715デフォルトの名無しさん
2007/12/22(土) 16:22:380716デフォルトの名無しさん
2007/12/22(土) 16:26:243ペインアプリとかは手書きじゃないと満足いくものはできないだろ
0717デフォルトの名無しさん
2007/12/22(土) 16:32:420718デフォルトの名無しさん
2007/12/22(土) 18:37:380719デフォルトの名無しさん
2007/12/22(土) 18:39:31ツール使えばすぐできることを、なんだかんだいいながら手書きでやるんだけど、無駄に時間かかるし古い機能しか使ってなかったり。
0720デフォルトの名無しさん
2007/12/22(土) 18:46:41なるほどね。業務アプリって画面びっしりコントロールをつけるからなw
0721デフォルトの名無しさん
2007/12/22(土) 19:00:30まともなコードが書けるかどうかが重要であって、
IDEの使用経験の有無は大した問題じゃない気がする
IDE使ったことない奴には使い方を教えてやるだけで済むが、
プログラミングのセンスがない奴はいくら教えてもどうにもならん
0722デフォルトの名無しさん
2007/12/22(土) 19:10:380723デフォルトの名無しさん
2007/12/22(土) 19:11:510724デフォルトの名無しさん
2007/12/22(土) 19:15:21でもIDEの慣れの差はやはり大きい
NetBeansを長年使ってきた人はさくさくつくれるけど、
Eclipseしか触ってこなかった人は開発効率が悪い
1,2年たつと違うんだろうけどね
0725デフォルトの名無しさん
2007/12/22(土) 19:17:27結局それがいいたかっただけか。
マジレスしなくてよかった。
0726デフォルトの名無しさん
2007/12/22(土) 19:19:44俺今日はじめて書きこんだんけど
0727デフォルトの名無しさん
2007/12/22(土) 20:00:38http://www.epson.jp/products/oen/products/kyuyo_lite/img/img_kyuuyo02.gif
ツール使わずにやるのは非効率極まりない。
0728デフォルトの名無しさん
2007/12/22(土) 20:45:36俺が仕事で作ってる業務アプリは、こんなもんじゃねーぞ・・・
タブで分かれて細かい設定項目が山のようにある。
あんなの手書きしてたら気が狂うわ。
0729デフォルトの名無しさん
2007/12/22(土) 20:48:020730デフォルトの名無しさん
2007/12/22(土) 21:12:100731デフォルトの名無しさん
2007/12/22(土) 21:22:46そういう人らは使えばいいんじゃない?
0732デフォルトの名無しさん
2007/12/22(土) 21:24:250733デフォルトの名無しさん
2007/12/22(土) 21:32:13JTable使いまくりだけど・・・
検索結果を大量に表示したりせんの?
まあ、めったにJTreeは使わんけど。
0734デフォルトの名無しさん
2007/12/22(土) 22:44:43ツリーはあんまりないけど
0735デフォルトの名無しさん
2007/12/22(土) 22:53:200736デフォルトの名無しさん
2007/12/23(日) 01:19:09でも、部品の利用のされ方ってのは興味深いな。
アプリで使われてる場面がどれくらいあるのか、
JTableなんかのレンダラとかもどうされてるか気になる。
デフォルトで行ける場面ってどれくらいあるのかとか。
Swingのデフォルト部品って、あと一味足りないみたいなとこあるからなぁ。
というか、特にJTableに感じるんだけど。
(表の真ん中にスクロールバー付けたいなぁ、とか)
エクリプスとかで走らせてるとoutputに表示されるけど、コマンドプロンプトから走らせるとキャッチされない例外が起きてるのが分かりません。
これを知るにはどうしたらいいのですか?
検出してログをとるなり、メッセージダイアログを表示するなりしたいんです。
0738デフォルトの名無しさん
2007/12/23(日) 05:31:300739デフォルトの名無しさん
2007/12/23(日) 11:06:010740デフォルトの名無しさん
2007/12/23(日) 11:13:30> 表の真ん中にスクロールバー付けたいなぁ
それは一味も二味も違うだろ w
それができるテーブルコントロールなんて他の言語でも見たこと無いけど。
まあ、俺なら二つのテーブルを並べて、スクロールを同期させるかな。
0741デフォルトの名無しさん
2007/12/23(日) 11:42:12どうもありがとうございます!
>>739
jarにしてダブルクリックで起動したりもするので、windowsだと何も表示されないのです。
0742デフォルトの名無しさん
2007/12/23(日) 16:28:19java -jar file.jar
と「ファイル名を指定して実行(R)..」すれば
例外は全部コンソールに表示される
0743デフォルトの名無しさん
2007/12/23(日) 19:40:17ユーザーにGUIで見せて後は処理続けるかどうかは状況次第っていうように組むもんだが。
System.errにテキストコンポーネント突っ込んでやると楽。
0744デフォルトの名無しさん
2007/12/24(月) 00:02:41その、「アプリケーションのどっか」にこないから問題っていってるんじゃねぇの?
738で解決するようだけど。
0745デフォルトの名無しさん
2007/12/24(月) 01:58:17問題ない例外なのかそうでないのかは単純に判断できないし。
運用時ならテキストファイルにログを書き出しておいてそこをメールで添付させるように促すとか
画面のスナップショットを自動でとってdesktopに自動でbmp作ってそれを添付させるとか
まぁいろんな方法があるわな。
0746デフォルトの名無しさん
2007/12/24(月) 14:15:13新機能であまり取り上げられていないけどこれはすごいな。
0747デフォルトの名無しさん
2007/12/25(火) 14:46:260748デフォルトの名無しさん
2007/12/25(火) 15:34:33JDialogを普通に使うほうがいい場合もあると思うけど。
JPopupMenuは想定される素の状態だとメニューバーと同じくアクションボタンを並べるものだけど
例によって自由にカスタマイズできるので継承するといいかも。
0749デフォルトの名無しさん
2007/12/25(火) 15:41:53JFrameの上に出せるWindowなら何でも良いというくらいの意味だったんですが、Dialogでやろうと思います。
JPopupMenuがカスタマイズできるとは知りませんでした。ありがとうございます。
0750デフォルトの名無しさん
2007/12/26(水) 00:00:310751デフォルトの名無しさん
2007/12/26(水) 00:26:58NetBeansでデスクトップアプリケーションで作ると
メインフレームがメニューとか作られるから参考にするとよろし
0752デフォルトの名無しさん
2007/12/26(水) 00:29:32サンクス。
いつもEclipseばっかり使ってたもんで、NetBeansには疎いんですが、
機能的には遜色ないですかね?
Eclipseでいうところの「呼び出し階層を開く」とかそういうのはありますかね?よく使う機能なので。
0753デフォルトの名無しさん
2007/12/26(水) 01:25:27CTRL+クリックでとぶよ
キー操作だけだとどこだったかはわすれたけどEclipseと同じキー設定もあったような気がする
乗換えとかじゃなくて参考に出来ればよいと考えるといいかも
でも、GUIアプリ開発とWebアプリ開発が目的なら乗り換えるほうが楽だと思う
Swing Application Framework対応していて、@Actionとかぜんぶやってくれるよ
0754デフォルトの名無しさん
2007/12/26(水) 08:37:12そっちの機能じゃなくて、選択したメソッドがどこから呼び出されているかを一覧する機能。
かなり重宝してる機能なのであったらいいんだけど。
0755デフォルトの名無しさん
2007/12/26(水) 13:14:070756デフォルトの名無しさん
2007/12/27(木) 00:09:33オブジェクトのxとyを少しづつ変化させているんですけど、どうやるのがベターですかね?
オブジェクトはいろんな場所に発生するので、
if (x > 行き先X) {
0757デフォルトの名無しさん
2007/12/27(木) 00:10:11続き
if (x > 行き先X) {
0758デフォルトの名無しさん
2007/12/27(木) 00:13:28続き
if (x > 行き先X) {
x -= 5;
} else {
x += 5;
}
if (y > 行き先Y) {
y -= 5;
} else {
y += 5;
}
こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、
ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?
0759デフォルトの名無しさん
2007/12/27(木) 00:13:370760デフォルトの名無しさん
2007/12/27(木) 00:15:210762デフォルトの名無しさん
2007/12/27(木) 00:34:37それぐらい、自分で考えろよ・・・・
つかスレ違い。
0763デフォルトの名無しさん
2007/12/27(木) 00:40:10差が5に満たない場合
差の分だけ移動
既に目的地に到達してたら チェックはしない。
移動距離の5は定数にしようかな
思った事を書いてみた。
俺は寝る、がんばれ。
0764758
2007/12/27(木) 00:41:06表示上の問題だと思ったんでここで聞いたんですが・・・
xflagとyflagを作って、&で到達チェックするとか考えたんですけど、
スマートじゃないんですよね
たとえばどんなのが考えられますかね?
0766デフォルトの名無しさん
2007/12/27(木) 00:45:01って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。
0767デフォルトの名無しさん
2007/12/27(木) 00:51:43javaのスレッドで聞いたほうが良かったですね
答えてくれた方ありがとうございました。
0768デフォルトの名無しさん
2007/12/27(木) 01:03:08問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ
0769デフォルトの名無しさん
2007/12/27(木) 01:14:11初心者スレッドで聞けばよかったですか
いえばただの簡単なアルゴリズムの問題なのですが、
ここなら同じようなことをやっている人がいるかなと思ったんで、
ここで聞いたほうが早いかなと思ってしまいました。
0770デフォルトの名無しさん
2007/12/27(木) 01:17:26まあ、その前にこの程度のロジックは自分で考えられないと、
なにを作るにしても困ると思うぞ。
0771デフォルトの名無しさん
2007/12/27(木) 01:33:38そこまでのアルゴリズムじゃないけど。
0772デフォルトの名無しさん
2007/12/27(木) 01:36:47どう見ても小学生の算数レベルだろ。
0773758
2007/12/27(木) 01:39:19スマートにできないんですよね(馬鹿なんで)。
完璧を目指すのはキリがないと思うんですが、
ある程度きれいなコードが知りたいんですよ。
ttp://pc11.2ch.net/test/read.cgi/tech/1197710566/
ここに移動したんで良かったらいいサンプルコードお教えください。
0774デフォルトの名無しさん
2007/12/27(木) 01:43:05>ここで聞いたほうが早いかなと思ってしまいました。
こんなのを自分で考えられないとしたら先は長い気がするが…
まぁ地道にがんばれ!
0775デフォルトの名無しさん
2007/12/27(木) 02:06:16こういうの当時の小学生は普通に作ってたもんね
0776デフォルトの名無しさん
2007/12/27(木) 02:18:59というかゲームにSwing使ってるの?
0777デフォルトの名無しさん
2007/12/27(木) 02:20:55ただ、ここAWTと合流したからJava2D等も含むといえば含む
本気でやるならJOGLだろうけど
0778デフォルトの名無しさん
2007/12/27(木) 02:26:13いつの間にかスレタイにAWTが入ってた!!
0779デフォルトの名無しさん
2007/12/27(木) 02:32:45いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。
OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね?
それならわざわざ2D描画に3Dtoolkit使う必要ないし。
バグさえ消えれば。
0780デフォルトの名無しさん
2007/12/27(木) 04:23:20↓の様にやること多いじゃないですか
このタイマーをストップさせることって可能ですか?
public void startTimer() {
int i = 0;
Timer timer = new Timer(20, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (i > 100) {
return;
}
i++;
});
timer.start();
}
いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、
ずっとタイマーは動きっぱなしなんですよね。
timerはiが100を超えたらストップさせたいんですよ。
timer内から自分自身をstopさせることができればいいんですが...
0781デフォルトの名無しさん
2007/12/27(木) 07:13:18http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/Timer.html
0782780
2007/12/27(木) 07:55:23実際のコーディングを見てください
まずメインクラスでクラスAのインスタンスaを10個作る(略
pubilc void run { //メインループ
for(int i=0;i<10;i++){ //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay
a[i].x++;
if(a[i].x >= 10) {
a.startTimer();
}
�@
}
}
pubilc class A {
int x = 0;
int size = 10;
public void startTimer() {
Timer timer = new Timer(20, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (size> 20) {
return;
}
size++;
});
timer.start();
}
}
実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが...
�@の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、
メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね
なにか大きな間違いがあるんでしょうか?
0783デフォルトの名無しさん
2007/12/27(木) 08:37:43後は変数のスコープの問題。
ローカル変数timerをクラスAのインスタンス変数にして、
こんなメソッドを作って
public void stopTimer(){
timer.stop();
}
これをactionPerformed()内の適切な位置で呼べばいい。
ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、
これは単純化したサンプルコードなだけだよね?
ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?
0784デフォルトの名無しさん
2007/12/27(木) 08:53:05GUIスレッドですべき処理というのがいまいちわかんないんですが、
ある条件でaのエフェクトを起こすみたいな感じなんですよ
とにかくこれで寝れます どうもありがとうございました
0785デフォルトの名無しさん
2007/12/27(木) 10:45:150786デフォルトの名無しさん
2007/12/27(木) 12:26:40swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思
0787デフォルトの名無しさん
2007/12/27(木) 13:29:19Java2Dだとαブレンディング/テストとか足りないものが多いから
2DであってもOpenGL使わざるを得ないのが現実
>>785が正解
あと注意すべきところはSwingTimerは定期処理にはいいけど、
長時間の流れがある処理には向かないというのもおぼえておくとよろし
あくまでも一定時間ごとにアクションイベントを発生させるだけ
詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?
■ このスレッドは過去ログ倉庫に格納されています