Java低速GUI Swing
..
369:デフォルトの名無しさん
03/12/10 19:14
>>368
OSに限っていえばそのとおりだけど
IBMのほうが商売手広いイメージがある
MSも意外といろんな分野に手をだしてるけど
370:デフォルトの名無しさん
03/12/10 19:57
おまえら、IBMは巨人ですよ。
MSなどまだまだ新参の成金。
371:デフォルトの名無しさん
03/12/10 21:12
アメリカの特許の年間出願件数の一位は長い間IBMが
とってて、そのかなりの部分がソフトウェア特許って
ことを考えるとMSなんかたいしたことないきがする。
372:デフォルトの名無しさん
03/12/10 21:33
企業の規模。
IBM>MS>SUN
しかし得意なもの、主要な顧客が微妙に違う。
MSはプロセッサ作ってないし、
IBMはJavaや.Netのような大きな処理系作らない、
それに企業端末弱い、OS/2は負け組。
373:デフォルトの名無しさん
03/12/11 11:20
>>372
端末はね。
でもAS400とか勝組み。
374:デフォルトの名無しさん
03/12/11 21:17
「汎用機」といえばIBM製とその互換コンピュータを指す。
375:デフォルトの名無しさん
03/12/11 21:33
>>374
PCといえば、IBM製PC-ATとその互換コンピュータを指す
376:デフォルトの名無しさん
03/12/11 23:44
現在店頭に並んでいるPCはPC-ATとの互換に欠ける罠
377:デフォルトの名無しさん
03/12/13 15:17
AWTXってどうよ?
Swingは結局アレなんかい?
再びAWTが復活するわけね?
378:デフォルトの名無しさん
03/12/13 22:20
>>377
AWTXってURLリンク(scand.com)のこと?
なんか妙にアプレットにフォーカスした文章で、Swing駄目って
いってるけど、そんなにJavaPluginを使ったJREの自動インス
トールって駄目なのかなぁ。htmlconverterがあまり使われてない
現状ってのはあるけど。
そいや一昔前はKFCとか軽量コンポーネントあったけど
最近話をきかないね。Swingでみんな満足ってことなのかな。
まあ実用で使っているJavaアプリケーションってうちではEclipse
だけだし、なんでもいいや。
379:デフォルトの名無しさん
03/12/14 22:31
Swingでデジタル時計を作りたいのですが
1秒後とに表示を変えていくにはどうすればいいのですか?
380:デフォルトの名無しさん
03/12/14 22:34
あー.... あなたはスレッドって聞いたことありませんか?
381:デフォルトの名無しさん
03/12/14 23:49
sleep。これ。
382:デフォルトの名無しさん
03/12/15 08:15
>>380
そんな処理にスレッドを勧めるなんて・・・
javax.swing.Timerだろ。
383:デフォルトの名無しさん
03/12/15 10:41
>>378
違う。そっちのAWTXじゃない。
URLリンク(www.javadeveloper.jp)
そのほかにもJVMのメモリー使用量を節約する,起動を速くするなど
地道な改良が模索されている。また,AWTの新版(?)としてAWTX
が搭載されるという。
384:デフォルトの名無しさん
03/12/15 11:15
>>383
その記事大丈夫か?
メタデータの使用例とかいって generics と auto boxing のサンプル出したりしてるし、
例内のコードは list が List だったり、list.add が list add だったり間違いのオンパレードだ。
385:デフォルトの名無しさん
03/12/15 15:02
>>383
> AWTXってどうよ?
> Swingは結局アレなんかい?
> 再びAWTが復活するわけね?
お前は何も分かってない。
386:デフォルトの名無しさん
03/12/15 23:26
AWTXねぇ
もうSUNのやる事には何も期待できないわけですが
387:デフォルトの名無しさん
03/12/16 12:39
AWTX で検索したら
URLリンク(www5.airnet.ne.jp)
> でも、クオリティは ×。p22 のリスト 1 はメタデータでなくて Generics だし。AWTX じゃなくて XAWT だし...
で、XAWT で検索したらこんなのが見つかった。
URLリンク(servlet.java.sun.com)
> XAWT: A Faster, Lighter AWT for X11 Desktops
388:デフォルトの名無しさん
03/12/21 21:49
一番手前に表示されるような
ウィンドウを作りたいのですが
どうすればいいのですか?
389:デフォルトの名無しさん
03/12/21 22:51
Windowsでよくある"常に前面に表示"みたいなやつなら
coreAPIだけじゃできない。nativeありならAPI2,3行でいけたはず。
390:デフォルトの名無しさん
03/12/22 11:56
>>388
同一 VM のウィンドウの中で前面に出たいなら java.awt.Window#toFront()
他のネイティブアプリより前に出るのは Windows だったら
JNI 使えばできるかも知らんが他は知らん。
391:デフォルトの名無しさん
03/12/23 01:16
>>389
Windows nativeでいいので
やりかた教えてください
392:デフォルトの名無しさん
03/12/23 01:56
>>391
URLリンク(www.google.co.jp)
393:デフォルトの名無しさん
03/12/26 23:55
Javaって死滅しちゃうの?の1より
>Javaの理想も破れ、貧弱な言語と重いGUIという印象だけが残った。
>のろのろと改良を目指しているがその内容は某言語のパクリである。
>SUNの洗脳から解かれた人民は某言語にシフトしている。
まんまやね。
394:デフォルトの名無しさん
03/12/27 10:14
> 某言語のパクリ
頭悪そうだな。
395:ミルコ・マグカップ
03/12/30 06:31
そんな Swing 使って検索アプリ作りました。
指定されたページの検索とそのリンク先のページの検索をします。
数あるニュースやテレビ番組等のサイトを一括検索。
検索サービスの無いサイトの検索にも。
興味ある人はコチラ → URLリンク(www.geocities.co.jp)
396:デフォルトの名無しさん
03/12/30 10:40
URLリンク(www.geocities.co.jp)
397:デフォルトの名無しさん
04/01/02 22:46
JComboBoxについて質問します。以下のプログラムを実行し、コン
ボボックスのhogeを編集した後、ボタンを押すとhogeが出力されま
す。もう一度ボタンを押すと編集されたテキストが出力されます。
一度押すだけで、編集したテキストを表示させるにはどうすればい
いでしょうか。
import javax.swing.*;import java.awt.*;import java.awt.event.*;
public class ComboBox implements ActionListener {
JComboBox box;
public ComboBox() {
String[] patternExamples = { "hoge" };
box = new JComboBox(patternExamples);
box.setEditable(true);
JButton button = new JButton("hoge");
button.addActionListener(this);
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(box);
frame.getContentPane().add(button);
frame.pack(); frame.show();
}
public void actionPerformed(ActionEvent e) { System.out.println(box.getSelectedItem()); }
public static void main(String[] args) { new ComboBox(); }
}
398:デフォルトの名無しさん
04/01/02 23:10
>>397
普通に編集されたテキストが出力されるけど?
どんな環境で使ってるのかな。
399:397
04/01/03 01:59
>>398
Red Hat Linux 9です。
java -version
java version "1.4.2_01"
もう一つ分からないことがあります。
button.addActionListener(this);
この行を
box.addActionListener(this);
に変えて実行し、hogeを編集してからリターンを押すと編集したテ
キストが2回表示されます。編集しずに押すと一回だけ表示されま
す。
しかも編集したときは、なぜかボタンを押してもテキストが2回表示
されます。
400:
04/01/03 04:14
>>399
自分も398と同じく普通に編集されたテキストが出力される。
OSはWindowsだけど。LinuxのVMがおかしいのかな?
399の方は自分も躓いた。自分もSwing勉強して間もないので間違いもあるかも知れんが
URLリンク(www.atmarkit.co.jp)
でも話題になってる。
コンボボックスが発生させるアクションイベントは実は2種類に細分化できて
comboBoxChangedとcomboBoxEditedがあるみたい。
actionPerformedの引数として渡されるActionEventオブジェクトのgetActionCommand()で区別できるみたい。
選択項目が変化するとcomboBoxChangedのほうが、リターンキーを押すとcomboBoxEditedの方が来る。
編集してリターンキーを押すと選択項目も変化するから2回アクションイベントが発生する。
またコンボボックスを編集可能にして編集して項目書き換えると、
コンボボックスがフォーカスを失うときに、選択項目が変化したとみなされcomboBoxChangedが発生する。
だからボタンを押すとコンボボックスがフォーカス失ったので選択項目変化のためと、ボタンが押されたことによるアクションイベントの両方が起きる。
401:400
04/01/03 04:59
で何故397のようなことが起こりうるのかについての推測だけど
編集可能なコンボボックスのテキストを編集しても
編集してる最中にはたくさん文字が入力されたりして変化してるから
選択項目が変化したとコンボボックスが判断するのはリターンキーを押されたかフォーカスを失った時になって初めてである。
だから397さんの環境だと、コンボボックスを編集した後ボタンを押すと
ボタンのアクションイベントの処理がまず最初になされ
その後になってコンボボックスのフォーカス喪失の処理がなされて
選択項目の更新がなされるようになってるのかな。
自分のWindowだとボタンを押せばその前にコンボボックスのフォーカスが失われたことによる選択項目の更新がまずなされ、
その後ボタンのアクションイベントの処理が行われるからうまくいく。
見当外れだったらすまそ。
コンボボックスとボタンの両方にアクションリスナーを登録してactionPerformedの中で
イベントオブジェクトのgetSourceかgetActionCommand()でどっちが先に呼ばれてるか調べてみたら。
ボタンの方が先に呼ばれてたら推測があってるかも。
でも常識的にフォーカス失ったほうの処理の方が先だよな。
402:399
04/01/03 13:00
わかりやすい説明ありがとうございます。
>>399の編集した後リターンを押すと2回表示されるのは
comboBoxChangedとcomboBoxEditedによるものでした。また、ボタ
ンを押したときも同じイベントが発生していました。Tabキーでコ
ンボボックスのフォーカスをはずすだけでも同じイベントが発生し
ました。
buttonとboxの両方にアクションリスナーを登録してどのイベント
が発生しているのかを確認したところ、button、comboBoxChanged
、comboBoxEditedの順で発生していました。buttonのイベントのと
きはbox.getSelectedItem()で得られるテキストは編集前の状態で
、boxのイベントのときは編集後の状態でした。
403:デフォルトの名無しさん
04/01/03 13:32
>>402
編集したらコンボボックスがフォーカスを失うだけでcomboBoxChangedとcomboBoxEditedの両方発生したね。
間違ったこと書いてゴメン。
あと自分のWindowsではやっぱりボタンにアクションリスナー登録しても
コンボボックスのイベントの方が先に処理されてました。
LinuxとWindowsじゃ違うみたいだね。
解決策はあまりいい方法は思いつきませんでした。上にあげた
URLリンク(www.atmarkit.co.jp)
が参考になるかも。
404:デフォルトの名無しさん
04/01/04 11:54
もう済んだ話かもしれないけど、
RedHat9 + Java 1.4.2_03 では、>>397 のようにはならず、>>398 のようになったよ。
405:デフォルトの名無しさん
04/01/04 14:04
結論:Javaを使うならやっぱりWindows環境がイイ!
406:デフォルトの名無しさん
04/01/04 14:06
そしたらJava使う意味ないじゃn
407:デフォルトの名無しさん
04/01/04 14:25
低速なのにどうして使うの?
408:デフォルトの名無しさん
04/01/04 14:25
Javaって、Windowsで使うと意味無いんですか?
ショック。
409:デフォルトの名無しさん
04/01/04 14:28
Windowsで使うことに意味がないわけではないが
"Windowsだけ"で使うんだったら意味は半減するわな。
410:デフォルトの名無しさん
04/01/04 14:31
>>407
基地外だから
411:デフォルトの名無しさん
04/01/04 14:32
>>409
なんの意味が半減するの?
412:デフォルトの名無しさん
04/01/04 14:43
Javaって、Windows以外で使うと意味が倍増するんですか?
すごーい。
Javaやってみようかなー。
413:デフォルトの名無しさん
04/01/04 14:47
馬鹿の集まりだな
JavaのバイトコードはJavaVMがあればWindowsでもLinuxでもSolarisでもそのまま動くということも知らずに
Javaスレに来るとは
414:デフォルトの名無しさん
04/01/04 14:51
>413
師匠!師匠と呼ばせてください。
415:デフォルトの名無しさん
04/01/04 14:56
>>413
意味が半減する理由にはなっていないと思うが?
ケースバイケースという言葉を知らないの?
416:デフォルトの名無しさん
04/01/04 14:59
>>415
師匠に理屈を言ってはいけません。
417:デフォルトの名無しさん
04/01/04 16:01
>>387
つまりXAWTがSwingを死滅させるということでFA?
418:デフォルトの名無しさん
04/01/04 16:14
Windows上でGUIをやる場合Javaに比べて
VBの方が圧倒的に簡単に作れる。
VCの方が圧倒的に自由度が高い。
だからWindows上だけでGUIを作る場合
Javaを積極的に選択する理由がない。
よって複数プラットフォームを視野に入れてJavaでGUIをやる意味に比べたら
Windows上だけでJavaでGUIをやる意味は減っている。
419:デフォルトの名無しさん
04/01/04 16:33
>>418
Javaをやるのは理屈じゃねーんだよボケ
420:デフォルトの名無しさん
04/01/04 16:36
信じるものは救われる
421:デフォルトの名無しさん
04/01/04 18:47
>だからWindows上だけでGUIを作る場合
>Javaを積極的に選択する理由がない。
JTableをVCやVBでやろうとするとそれはそれは大変な道程となる訳で。
文化オリエントの製品を別途購入しVCだと更にCOMの奥義を極めるのが普通、
というまさに茨の道。
422:デフォルトの名無しさん
04/01/05 00:41
作り手にとってよいというのはあるだろうさ。
でもSwingで作ってあるアプリはなんかがっかりなんだよね、ユーザーとしては。
423:デフォルトの名無しさん
04/01/05 02:16
Linuxで日本語フォントがガタガタなんですが
どうにかなりませんか?1.4です。
424:デフォルトの名無しさん
04/01/05 02:23
1.5のSwingはかなりいい感じだが。
もっと早くやってくれよという。
425:名無しさん
04/01/05 02:30
>>3
426:デフォルトの名無しさん
04/01/05 02:31
Javaって相変わらずGUIが枯れてないんですねぇ…。
J#に走ろうかと考えてますがやっぱりあれですか?
427:
04/01/05 02:50
JTextAreaの重さには愕然とした。
たいした事の無い量のテキストでスクロールが明らかに重い。
Swingで使える軽い奴ないかな。
428:デフォルトの名無しさん
04/01/05 03:36
>>427
残念ながらあなたの要望にJavaはついてこれません・・
JTextAreaのスクロールが重い・・とは思った事ないなぁ・・
429:デフォルトの名無しさん
04/01/05 04:31
>>428
そもそも、JTextAreaにスクロール機能なんて無い。
重いとかいってるのは、スクロール量が小さすぎるからだろう
から、自分で調整しろ。てか、API Doc読め。
JScrollPane scroll = new JScrollPane(new JTextArea());
scroll.getVerticalScrollBar().setUnitIncrement(25);
430:427
04/01/05 05:18
_| ̄|○ >>428 >>429
431:デフォルトの名無しさん
04/01/05 21:13
>>418
VBのほうが簡単ってありゃオブジェクト指向言語としては最低だよ。
VBもVC++もソースコードの管理のしやすさ、メンテナンス性では
Javaに劣る。
432:デフォルトの名無しさん
04/01/05 21:15
>>422
マシンパワーが2GHz以上、メモリ1GB以上あれば
Swingで作ってあろうと満足に動く。
しかも最近のSwingアプリはルックスが綺麗だ。
433:デフォルトの名無しさん
04/01/05 22:04
>>432
「最近」=1.5というのなら同感
434:デフォルトの名無しさん
04/01/05 23:18
>>431
オブジェクト指向は手段であり、目的ではなく、ましてや何かを比較する尺度では無い訳で。
435:デフォルトの名無しさん
04/01/05 23:23
Javaはすべて、Swingがぶちこわしたと言っても過言じゃないと思う。
なんで、標準的でもっとシンプルでかるいtoolkitにしなかったのか
436:デフォルトの名無しさん
04/01/05 23:24
>>435
使い勝手は悪くても、作り勝手はいいんだよなぁ。
437:【中吉】
04/01/05 23:28
1 名前:ひろゆき@どうやら管理人★ 投稿日:03/07/04 21:40 ID:???
おみくじ機能を搭載しました。
名前欄にomikujifusianasanといれて書き込むと、
【大吉】【中吉】などに変換されますです。。。
438:デフォルトの名無しさん
04/01/06 00:35
>>435
「なんで軽いtoolkitにしなかったのか」というのはわからんでもないが
Swingより標準的でシンプルなtoolkitってなんだ?
>>436の言うとおりなのだが、PCの性能がついてくればSwingのつかいごこちもじょじょによくなっていくのだろう(今のPCではSwingの豪快な機能拡張に絶えられない)
それが>>435の回答だと思うのだが
439:デフォルトの名無しさん
04/01/06 01:23
昔に比べるとSwing自体もかなり軽くなったって言われてるが、
実際に昔のPCで今のSwing動かすとどうなの?
もう手元にそんなPC残ってないもんで、わからないんだけど。
440:デフォルトの名無しさん
04/01/06 01:34
PCの性能が上がれば云々ってJava出た当初からずーっと言ってるよ。
その間PCの性能が一切上がってないとでも?
441:デフォルトの名無しさん
04/01/06 02:00
もうちょっとなんだよなぁ。
2GHz512MBが当たり前になればいいのかな、と思う。
まぁ、昔ほど遅くなくなった。
1.5はVMの起動も速いし、結構使えるかも。
「使い勝手」っていったのは、IMEの制御とかクリップボード関係とか、WindowsでいえばDLLが必要になるような機能が使えないので、かゆいところに手が届かないことがあるってこと。
442:デフォルトの名無しさん
04/01/06 02:00
俺、別に今のPCでけっこう快適にSwing動いてるんだけど。
明らかに遅いSwingアプリって、Swingが悪いんじゃなくて書いた人間が
ヘタクソってケースがよくあるよ。
443:デフォルトの名無しさん
04/01/06 04:16
ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
444:デフォルトの名無しさん
04/01/06 07:40
>>442-443
だよねえ。Java質問スレのほうでも
シングルディスパッチスレッドとか、そのあたりについて質問していた人がいたようで。
それは逆を言えばSwingって簡単に使えるから、よく原理を分かっていなくても、
どうにか動くものが作れてしまうってことでもあるんだけど。
【初心者】Java質問・相談スレ38【大歓迎】
スレリンク(tech板:867-869番)n
445:デフォルトの名無しさん
04/01/06 09:54
> ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
ちょっと乱暴な運転したぐらいで、人を殺せてしまうのも、自動車の良くないところですね。
キミはプログラム書かないほうが幸せだと思われ。
446:443
04/01/06 10:11
>>445
ん?
VBとかVCLとかだと、ヘタクソなコードでパフォーマンスに大きく影響が出たりしないからな。
小回りは効かないけどな。
445の言い方をすればちょっと乱暴な運転しただけで人を殺せる車は良くないということだな。
普通の車なら、ちょっと乱暴な運転しただけでは人を殺せないからな。
なんなら、そこらへんの車で乱暴な運転してみ。あんたの腕では暴れもしないから。
もちろん、車というものは人を殺そうとして運転すれば人を殺せる。
# 日本車でちょっと乱暴な運転で暴れるのは前期SW20か。
447:デフォルトの名無しさん
04/01/06 12:38
>>445←こういうのが俗に言うJava厨の慣れの果て
448:デフォルトの名無しさん
04/01/06 14:30
Swing のシングルスレッド規則なんか、そうしないと使いもんにならない
くらい遅かったから後付けしたんだろ。JComponent#setText とかは
「このメソッドはスレッドセーフですが、〜」って中途半端なんだよ。
とかよく知らずに言ってみる。
449:デフォルトの名無しさん
04/01/06 15:10
> そうしないと使いもんにならないくらい遅かったから後付けしたんだろ。
イベントディスパッチスレッドで重い処理すれば止まるのは Windows も同じ。
450:デフォルトの名無しさん
04/01/06 17:23
>>446
> VBとかVCLとかだと、ヘタクソなコードでパフォーマンスに大きく影響が出たりしないからな。
例えば BCB で OnMouseMove 内に while(true); だけ書いておけば即死すると思うが。
> 445の言い方をすればちょっと乱暴な運転しただけで人を殺せる車は良くないということだな。
書き方が悪かったか? まぁその部分は枝葉だし
「ちょっと余所見したぐらいで、人を殺せてしまうのも、自動車の良くないところですね」
「ちょっと巻き込み確認を怠ったぐらいで、人を殺せてしまうのも、自動車の良くないところですね」
でも何でも良いわけだが。
451:デフォルトの名無しさん
04/01/06 18:42
>>450
> 例えば BCB で OnMouseMove 内に while(true); だけ書いておけば即死すると思うが。
明らかに殺意あり。密必の恋。
452:443
04/01/06 18:48
>>450
そのたとえに、やっちゃいけないことやったらよくない結果になる、という以上の意味はあるのか?
っていうか、お前はちょっと余所見したくらいで人殺してしまうくらい殺伐とした道路事情の場所に住んでるのか?
そこは中国か?勇気がないと道路渡れんようなところか?
まぁ、発言するたびにバカ晒してる感じだから、そろそろやめとけ。
453:デフォルトの名無しさん
04/01/06 18:57
>>451
> 明らかに殺意あり。密必の恋。
単に
> > ヘタクソなコードでパフォーマンスに大きく影響が出たりしないからな。
が間違いだって例をだしただけ。
454:デフォルトの名無しさん
04/01/06 19:01
>>453
while(true);が「下手糞な」コードだ、と?
455:443
04/01/06 19:04
>>453
で、その例が、適切でないという指摘をうけたわけだな。
Swingの場合、コーディングの自由度が高いから、安易に組むと、最適に組んだときとのパフォーマンスの差が大きいという話をしてるわけだろ。
VCLの場合、コーディングの自由度が低いから、差はでにくい、と。VBよりは自由度あるけど。
VCLでもコーディング次第でパフォーマンスを落とせるとか、そういう話じゃないだろ。
456:デフォルトの名無しさん
04/01/06 19:05
>>452
> そのたとえに、やっちゃいけないことやったらよくない結果になる、という以上の意味はあるのか?
無い。
> っていうか、お前はちょっと余所見したくらいで人殺してしまうくらい殺伐とした道路事情の場所に住んでるのか?
仮に、脇見運転で人を殺したら道路事情のせいにするのか?
> そこは中国か?勇気がないと道路渡れんようなところか?
例え話にそんなツッコミされても…
中国行ったこと無いし。
457:デフォルトの名無しさん
04/01/06 19:09
>>454
> while(true);が「下手糞な」コードだ、と?
イベントディスパッチスレッドを止めるような事をしてはイカンのは
Java も BCB も同じという例だから、while(true); でなくても別に構わないんだけどね。
458:デフォルトの名無しさん
04/01/06 19:13
>>455
> VCLでもコーディング次第でパフォーマンスを落とせるとか、そういう話じゃないだろ。
Swing 以外でも同じようにコーディング次第でパフォーマンスが落とせるなら、
Swing が悪いわけでは無いという事になりますが…
459:443
04/01/06 19:15
> 仮に、脇見運転で人を殺したら道路事情のせいにするのか?
するわけないだろ。
歩行者もバカじゃないし、普通の速度でちょっとくらい脇見しても、死ぬようなタイミングで突っ込んできたりはせんよ。
普通車で自転車まきこんでも、よほど壁にはさんだりしない限り、死ぬようなこともないし。
だからといって、脇見や巻き込み確認をしなくてもいいわけじゃないよ。
たとえが適当じゃない、っていいたいだけ。
460:443
04/01/06 19:16
>>458
その直前の文章くらい、読んでくれ。
461:デフォルトの名無しさん
04/01/06 19:18
>>459
> > 仮に、脇見運転で人を殺したら道路事情のせいにするのか?
>
> するわけないだろ。
普通はそうだよね。
プログラム組む時も同じような心構えなら
> ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
とか言わんと思うんだが。
462:デフォルトの名無しさん
04/01/06 19:22
>>460
> ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
> VBとかVCLとかだと、ヘタクソなコードでパフォーマンスに大きく影響が出たりしないからな。
とかゆー発言から、
「Swing だけが、ヘタクソなコードでパフォーマンスに大きく影響が出る」
のかを問題にしてる。
463:デフォルトの名無しさん
04/01/06 20:22
>>461
もう放置しろよ。屁理屈捏ねる粘着相手にしても切がないでしょ。
464:デフォルトの名無しさん
04/01/06 20:55
>>463
「ちょっと下手糞に書くとSwing『だけ』パフォーマンスが『著しく低下する』」
に対する反論はしないわけ?
それともできないわけ?
窮地に追い詰められた時に「屁理屈捏ねる粘着相手」と相手を蔑むことで
その場から逃げようとする姿勢は情けなく思います。
465:デフォルトの名無しさん
04/01/06 21:55
俺Swingはヘタレなんで知らないけど
下手糞なコーディングする自分を恥じる心は無いわけ?
「うわぁい、俺実装のクイックソートはバブルソートより遅いぞ☆」
悪いのはクイックソート?下手糞な俺実装?それとも使ってる言語か?
466:デフォルトの名無しさん
04/01/06 22:07
>>465
ワラタ そりゃー下手糞なコーティングしてるヤシが悪いだろ。
俺はSwingとか今から始める段階だから知らないんだけどさ
「ちょっと下手糞に」の「ちょっと」ってのが嫌だナァ。
言葉だと面倒だから良いコーティングと悪いコーティングのソースキボン
467:デフォルトの名無しさん
04/01/06 22:13
>>465
> 下手糞なコーディングする自分を恥じる心は無いわけ?
そりゃ恥じるべきだよ。
> ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
> VBとかVCLとかだと、ヘタクソなコードでパフォーマンスに大きく影響が出たりしないからな。
とかゆー発言から、
「Swing だけが、ヘタクソなコードでパフォーマンスに大きく影響が出る」
のかを問題にしてる。
468:デフォルトの名無しさん
04/01/06 23:09
具体的に、どんなヘタクソなことができるの?
469:デフォルトの名無しさん
04/01/07 00:14
俺Swingは趣味(?)でやってて、仕事で個人的に使うツールを作って使ってるだけなんだけど
2GHz512MBでもちょっと遅い・・と思うけどなぁ
あと4倍は速くなって欲しいと思う。いつになったら8GHzの時代になることやら。。
あと、専門でやってるわけではないのでヘタレコーディングになってるかもしれない
自分では普通につくっているつもりなのだが。
470:デフォルトの名無しさん
04/01/07 00:24
>>469
SWTスレの↓なのが気になったけどどうなんだろ?
> Eclipse3.0M6からの、SWTへのSwing埋め込みを試してみた人レポートよろ
471:デフォルトの名無しさん
04/01/07 01:06
>>470
元カキコした者です。↓が簡単な紹介になってます。
URLリンク(download.eclipse.org)
自分で評価しろやゴルァと言われそうですが、僕はSWTでしかJavaのGUI作ったことないので評価しにくいのですよ。
472:デフォルトの名無しさん
04/01/07 01:30
>>470
URLリンク(dev.eclipse.org)
SunをEclipseコンソーシアムに引きずり込みたいIBMが
「SwingのコードもEclipseに組み込める」というために
つくったものだったけど、結局無駄になったね。internal
なAPIから正式なAPIになったけど、これ以上すすめる
モチベーションがIBM/OTIにあるのかは疑問。
473:デフォルトの名無しさん
04/01/07 01:53
とりあえず、443は何故そんなに必死なんだ?
474:デフォルトの名無しさん
04/01/07 01:59
SWTにSwing組み込めるのは、おまけだろ
SWTはSWTで組まないと意味内
475:デフォルトの名無しさん
04/01/07 07:50
へたくそが使っても、へんなふうにはならない部品というのは、
たしかにすごいけど、SwingやAWTにそこまで求めるのも酷のような気がする。
まあそこまで使い勝手のいいようにラップされた部品というのも、
Java以外のなにかのシステムのGUIコンポーネントには、あるのかもしれないけど。
Javaチュートリアルを日本語に訳して誰でも読めるようにしてくれれば、
固まるようなJavaのGUIアプリも、ずいぶんと数が少なくなりそうなんだが。
>>468
俺も、すごく基本的なことしかわからないけど、
まず基本的な問題として、Javaにおいては、
ボタンがクリックされときに処理をするとか、画面を描画したりするとか、
そういうGUI関連の処理をしてくれるスレッドは、ひとつしか存在しない。
ゆえに、
「ボタンをクリックしたら10秒くらいの時間がかかる処理をはじめる」
とか、そんなソフトをなんの考えもなしにつくったら、
そのボタンをクリックしたら最後、10秒くらいGUIが固まっちゃうのさね。
これを固まらないように作るとすれば、
別のスレッドを用意して、10秒くらい時間のかかる処理は、
その別スレッドにまかせてしまうという感じ。
SwingWorkerクラスとか色々あるので、まじおすすめ。
476:デフォルトの名無しさん
04/01/07 13:11
Win上でSwingアプリをSpy++で見ると
InternalFrameとかタブとかあっても一つのjavax.swing.JFrameしか
見えないんだけどこれってその窓に全部自前で描画してるってこと?
477:デフォルトの名無しさん
04/01/07 13:37
そういうこと。
Swingの重量コンポーネントと軽量コンポーネントでぐぐるとその辺のことが出てる。
478:デフォルトの名無しさん
04/01/07 14:31
>>476
だから、リソース的には軽い。
479:468
04/01/07 15:03
>>468
> 「ボタンをクリックしたら10秒くらいの時間がかかる処理をはじめる」
> そのボタンをクリックしたら最後、10秒くらいGUIが固まっちゃうのさね。
これって、SwingだけじゃなくほとんどのGUIツールキットで起こらない?
逆に、スレッドや同期が気軽に使えるSwing(Jave)のほうが有利なくらいだと思うのだけれど。
「リストにアイテムを突っ込むときに○○○してからじゃないと遅い」
とか
「モデル側でのエレメントの取得処理は十分高速でないといけない」
みたいな例があるのかと思って。
素人ですんまそん。
480:468
04/01/07 15:04
レス番間違えた >>475
481:475
04/01/07 16:46
>>479
>これって、SwingだけじゃなくほとんどのGUIツールキットで起こらない?
たとえば、つぎのようなGUIコンポーネントのシステムが
考えられるとおもうよ。
システムが、ワーカースレッドを複数つくっておいて、それをプール。
クリックされたときなどに行う処理は、ワーカースレッドにすべて引き渡す。
こういったことを、プログラマーが意識しなくとも、システムが自動的におこなってくれる。
これなら、へたくそなプログラマーが、
どんなに重い処理をなんの考えもなしに記述しても、
描画や、ボタンがクリックされたかのチェックを行うスレッドは、固まらない。
キューを作っておいて、そこのキューに仕事をため込むことで、
あるていどのバッファとしたりしてもいいかもしれない。
もちろん、重い処理をつぎつぎと発生させれば、
ワーカースレッドも、つぎつぎと浪費されていくことにはなるし、
キューも、やがてはあふれて処理を取りこぼすだろうけどね。
それはさておきJavaでも、既存のSwingのうえに
このようなコンポーネントシステムを構築(ラップ)することは可能だとおもう。
ただ、Javaの場合は、
もうひとつ『シングルスレッドルール』なるものを考慮しないといけないけどね。
// つーか俺がしらないだけで、
// Swingを使ったそういうコンポーネントのシステム、どこかにありそうだけどね。
482:475
04/01/07 16:47
>>479
>みたいな例があるのかと思って。
その手の例なら、最近のJava Live Transcriptsのテーマにあったとおもう。
俺は、英語苦手だから、全部目を通したわけではないが。
URLリンク(java.sun.com)
483:デフォルトの名無しさん
04/01/07 17:44
>>481
> たとえば、つぎのようなGUIコンポーネントのシステムが
ちなみに、そのような方法を採用したGUIコンポーネントのシステムってあるの?
484:デフォルトの名無しさん
04/01/07 19:41
>>481
画面からの入力がコマンドになってるCommandパターンなわけね。
面白いと思うけど、各処理を同期させないといけない場合なんかは
面倒くさそうだな。
485:デフォルトの名無しさん
04/01/07 21:17
coreJava2Vol2.応用編より
Swingの設計者は、2つの理由からSwingをスレッドセーフにしないことを決めた。
まず、スレッドの同期には時間がかかるため、Swingの処理速度を
これ以上遅くしたくなかった。
さらに重要な理由として、他のチームがスレッドセーフな
ユーザーインターフェースツールキットを開発したときの経験が挙げられる。
ユーザーインターフェースツールキットを構築する場合、
他のプログラマがユーザーインターフェースツールキットに独自の
要素を追加できるように拡張性を持たせたい。
しかし、スレッドセーフなツールキットを使うと、同期を行わなければ
ならないという制限のためにプログラミングが難しくなり、
デッドロックの可能性を秘めたコンポーネントが生成される傾向がある。
486:デフォルトの名無しさん
04/01/07 22:37
>>481
そういうのは今まで見たことがないな.
アプリケーションへのコールバックがマルチスレッドで行われる場合,
イベントハンドラが全てスレッドセーフになっていなければならないってことになるよ.
foolproofのつもりが,かえってプログラマに対する要求がきつくなってる.
あと,いわゆる先行入力ができなくなる.
たとえばボタンを押すとダイアログボックスが開くというような場合,
普通のツールキットならダイアログが開くまで
重い処理があっても入力はキューされるので
ユーザは先行してEnterとか入力することができるけど,
おまいさんのモデルの場合はダイアログが開く前の(重い処理中の)
入力が他のウィジェットに吸収されてしまうので,先行入力ができない.
こういうのはくだらないと思うかもしれないけど,
ユーザの使い勝手の点では重要.
普通に使われてるウィンドウツールキットが
同期的なイベントハンドリングをするのにはしっかりした理由があるので,
ちょっとした思い付きで改善できるならとっくにそうなってるよ.
その点に関してSwingはVBやVCLと比べて優劣の違いはない.普通.
AWTと比べればスレッドアンセーフだけど,むしろその方が一般的だし.
487:デフォルトの名無しさん
04/01/07 23:06
結論:MFC >>>>>>>>>>>>>>>>> Swing
488:デフォルトの名無しさん
04/01/07 23:21
>>487
プログラムの組みやすさ以外は、ある意味そうだと思う。
489:デフォルトの名無しさん
04/01/07 23:29
>>488
マルチプラットフォームだしね。
URLリンク(www.bristol.com)
Mac版もあったけど資料が見当たらない……。
490:デフォルトの名無しさん
04/01/07 23:40
動作速度、カスタマイズ、大きさ、全てにおいて、MFCの勝ちだな。
491:デフォルトの名無しさん
04/01/08 00:10
>アプリケーションへのコールバックがマルチスレッドで行われる場合,
>イベントハンドラが全てスレッドセーフになっていなければならないってことになるよ.
>foolproofのつもりが,かえってプログラマに対する要求がきつくなってる.
Swingの場合、それをシングルスレッド規則が包括しているわけですの。
「コールバックしたらイベントキューに突っ込め。ユーザスレッドで再描画するな。」
ですから。
シングルスレッド規則って、しらん人多いんでわ。←これが問題
492:デフォルトの名無しさん
04/01/08 00:58
シングルスレッド規則知らん人なんですけど
「コールバックしたらイベントキューに突っ込め」
これがどういう事なのかすらわからないのですが
といか、そこまでSwingきわめて、ちみらいったい何つくったわけよ?
493:デフォルトの名無しさん
04/01/08 01:37
極める何てレベルでなく
基 本 中 の 基 本
です
494:デフォルトの名無しさん
04/01/08 03:10
>>493
どっちでもいいけど何作ったの?
495:デフォルトの名無しさん
04/01/08 03:34
>>494
簡易ダウンローだ
496:デフォルトの名無しさん
04/01/08 06:30
>>494
>>395
497:デフォルトの名無しさん
04/01/08 08:55
>>491
> シングルスレッド規則って、しらん人多いんでわ。←これが問題
普通は知ってる。
理由:他のGUIツールキットも同じだから
498:デフォルトの名無しさん
04/01/08 10:00
>>434
あのな。わしが言いたいことは
VBとか.net frameworkとかはAPIの質が低いといっているのだよ。
なんというか、初心者みたいなのとかオブジェクト指向を知らない香具師とか
使い捨てプログラムしか作る気がない香具師には便利なんだろうけど。
拡張性を求めるとあれらのAPIはごちゃごちゃして使い勝手が悪い。
(ドキュメントを見る限りでは)WinFXでもまだまだ汚なさは残っているようだ。
499:デフォルトの名無しさん
04/01/08 10:04
>>445
> > ちょっとヘタクソなコード書いたくらいで、パフォーマンスに大きく影響がでるのも、Swingの良くないところだな。
> ちょっと乱暴な運転したぐらいで、人を殺せてしまうのも、自動車の良くないところですね。
その喩えは奇異だ。そういうのは
ちょっと乱暴なコーディングをしたぐらいで、メモリリークやバグを量産させてデスマーチを起こせてしまうのも、
COBOL, C/C++の良くないところですね。
というならなるほどって思うが
500:デフォルトの名無しさん
04/01/08 10:09
>>452
そういう危険な国は中国と言うよりむしろポルトガルだよ。
世界一交通死亡事故がおきやすい道路というのがあそこにある。
アメリカや日本の警察のように、国が事故原因をしっかりと詳細に調べず、
事情聴取なとといったこともろくにせず
道路標識を修正・追加するとか、その後の対策をしっかりととらないから
いつまでたっても死亡事故が減らない。
なんだか、C++プログラマを見ているようだ。
501:デフォルトの名無しさん
04/01/08 10:38
>>498
> VBとか.net frameworkとかはAPIの質が低いといっているのだよ。
そーゆー事は「質の高いAPI」を作ってから言ってください。
502:デフォルトの名無しさん
04/01/08 11:05
>>499
> というならなるほどって思うが
なるほどって思っちゃうのか。困ったもんだ。
503:デフォルトの名無しさん
04/01/08 13:17
>>502
なんか読み違えてない?
504:デフォルトの名無しさん
04/01/08 13:32
>>500
> なんだか、C++プログラマを見ているようだ。
そーゆー話をしたければ死滅スレにでも行け。
505:デフォルトの名無しさん
04/01/08 13:41
>>501
比較すればSwingAPIの質は高いと思うぞ。
506:デフォルトの名無しさん
04/01/08 19:22
APIの美しさだけ見ると、一番優れているのはなんだろう。
507:デフォルトの名無しさん
04/01/08 19:30
>>506
とりあえず「API の美しさ」を定義してください。
しっかし厨が好きそうな話題ですな。
508:デフォルトの名無しさん
04/01/08 21:07
URLリンク(cgi.io-websight.com)
URLリンク(cgi.io-websight.com)
こんな感じのアプレットをサーブレットで動かそうと考えたのですが
普通に開くと見られるのですが
サーブレットで開くとアプレットを開くことが出来ません。
いろいろいじってみたのですが、行き詰まりました、
もしよろしければ助言いただけないでしょうか
509:デフォルトの名無しさん
04/01/08 22:19
>>508
サーブレットで開くというのが意味不明。
要解説
510:デフォルトの名無しさん
04/01/08 22:37
普通に開くは、HTMLとしてアプレットを表示するだけのソースで開き
サーブレットで開くというのは
URLリンク(localhost)〜/servlet/MondaiL4
と言う感じにサーブレット通して開こうとすることを思って書きました。
一応アプレットとして開くと見られるのですが
サーバー通して動きを付けようとサーブレットで開くとアプレットすら表示されません
アプレット表示されて、動きが現れない、なら対処しようがあるのですが
アプレット表示することが出来ず立ち止まっています。
511:デフォルトの名無しさん
04/01/08 22:39
>>510
で、そのときのHTMLはどんなのが出力されてるの?
ま、「サーブレットで開く」って言葉から、理解不足がありあり感じられるわけで、そろそろ「スレ違い」という目も怖くなってくるわけで。
512:デフォルトの名無しさん
04/01/08 22:46
Swingのおすすめの本を教えてください
513:デフォルトの名無しさん
04/01/08 22:46
Swingスレでサーバサイドの話題かよ!
514:デフォルトの名無しさん
04/01/08 23:30
>>507
何とかかんとか2 とか 何とかかんとかEx
みたいなクラス名, メソッド名があるのは美しくないですね。
意味不明な略語が使われてるのも美しくないですね。
515:デフォルトの名無しさん
04/01/08 23:43
JavaWebStartアプリをHttpServletと会話させてリッチクライアントな
Webサービス、ってのはアリじゃないのかね。
516:デフォルトの名無しさん
04/01/08 23:46
>>514
privateなら"なんとかかんとか0"ってのがあっても良いの?
517:デフォルトの名無しさん
04/01/08 23:47
>>515
Avalonがそれに近いことを実現させようとしている
518:デフォルトの名無しさん
04/01/09 00:44
>>515
「API の美しさ」ってのは名前だけで決まる、と。
ところで、JComponent とかの J は許せるのか?
519:デフォルトの名無しさん
04/01/09 00:44
>>516
private なものは公開しないことが前提
裏でどうなっていようと利用する側から触れないところならば問題ない
520:デフォルトの名無しさん
04/01/09 00:45
>>518
名前も美しさの一因だろうが「名前だけで決まる」なんて書いてないだろ。
521:デフォルトの名無しさん
04/01/09 00:49
>>520
>>514 では名前に関してしか書いてない。
ところで、JComponent とかの J は許せるのか?
522:デフォルトの名無しさん
04/01/09 00:56
名前に関してしか書いてないから名前だけで決まる
と考えるなんてすごい○○○ですね。
JComponent の J はない方が美しいでしょうね。
523:デフォルトの名無しさん
04/01/09 01:02
>>522
> > とりあえず「API の美しさ」を定義してください。
の答えが
> 何とかかんとか2 とか 何とかかんとかEx
> みたいなクラス名, メソッド名があるのは美しくないですね。
> 意味不明な略語が使われてるのも美しくないですね。
だったら、それが全てと解釈されても仕方ない。
他にも条件があるような事も全く書いてないし。
524:デフォルトの名無しさん
04/01/09 01:08
>>515
アリ。俺そんなの作って公開してるから探してみな
APIの課題になってるけど
JavaAPIについて
boolean型の戻り値を持ってるメソッドの、isXXXXX / getXXXXXXはどういうきり分けになっているのだろう?って思う、どちらかに統一してくれれば良いのに、、と思うけど
あと、.length()、.getLength()、.size()も統一して欲しい
あと、.size()とかって、ゲッターでしょ?getSize()にすべきなのではないか?と思うけど
反論求む
525:デフォルトの名無しさん
04/01/09 01:18
>>524
Swing に関して言えば、そこそこ統一されてると思うが。
526:デフォルトの名無しさん
04/01/09 01:19
Jなんとかって汚過ぎ。何のためのpackageなのか分からん。
527:デフォルトの名無しさん
04/01/09 01:20
>>524
immutableかどうかで変わるとかJava厨が言ってた。
オレは納得してないがな。
528:デフォルトの名無しさん
04/01/09 01:44
>>527
そう?.getLength()、.size()があるあたりimmutableかどうかで命名されているとは考えにくいのだけど
ちょっと調べてみよ
Jなんとかはいいでしょう
packageはネームスペースの意味もあるけどクラスライブラリの分類/整理が主目的だと思うよ
パッケージが分かれてもクラス名なんか一致しないほうが良いと思う
AWT、Swingは共存して実装できるのだからもしJがなかったらコード醜くなると思うよ
529:508
04/01/09 02:54
>>510 すいません、問題はclassの抜け落ちでした。。。。
ところで、サーブレットで開くという表現を使ったのですが
どんな言い方をすればよかったのでしょうか。。。スレ違いですね、ありがとうございました。
530:デフォルトの名無しさん
04/01/09 03:05
>>508のは「普通に開く」といっても、
>>508のいう「普通」ってどういうことを想定して「普通」と言っているかもわからないし。
「サーブレットで開く」もよくわからないし。
でも、そんな>>508の書き込みでも、
APIの美しさについてのどうでもいいような話よりは、
まだ有意義かもしれないとおもったよ。
言葉の正確さはともかくとして、>>510の
>サーブレットで開くというのは
>URLリンク(localhost)〜/servlet/MondaiL4
>と言う感じにサーブレット通して開こうとすることを思って書きました。
で、だいたい言わんとするとは理解できたよ。
つーか、なんでSwingスレで、質問しようとおもんたんだい?
531:デフォルトの名無しさん
04/01/09 03:06
もしSwingを使ったアプレットなら、そっちの話でもしてみないかい。
なんか解らんことがあったら、解る範囲で答えるよ。
532:508
04/01/09 03:15
では、お言葉に甘えて
URLリンク(cgi.io-websight.com)
これが、アプレットなんですが
Appletを継承しています。
JAppletを継承して初めは作っていたのですが、見つけたソースがAppletだったため
Appletになってしまいました、これはAwtと言う奴で、Swingとは違うのでしょうか?
その辺が良くわからず、困惑しています。変な質問すいません
JAppletに戻すにはどうしたら良いかとやってみたのですが出来なかったもので
もしよろしければ、教えていただけると幸いです。
533:デフォルトの名無しさん
04/01/09 04:01
SwingとAWTは別物だよ。
あと基本的なこととして、
WindowsのIEがデフォルトで使用するマイクロソフトのJavaVMでは、
Swingが使えない。
Swingを使用するためには、Sunなどが提供している最近のJavaVMを
クライアント側がインストールしておく必要がある。
ただWindowsマシンでも、
東芝やDellのマシンでは、もしかしたらデフォルトでSwingが使えるかもしれないけどね。
そんなわけで、現状ではAWTのほうが、
より多くの人がそのままで利用できるアプレットにはなるとおもうけれど。
まあ、それでもSwingでアプレットを作ってみたいなのなら、
ここが参考になると思うよ。英文だけど、断片的なソースの所は理解できるだろうから。
URLリンク(java.sun.com)
How to Convert
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5389日前に更新/238 KB
担当:undef