Java低速GUI Swing 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/02/21(火) 23:57:46パフォーマンスの問題が改善されつつあります。
しかしながら、"Java"というだけで犬猿されつつあるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
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
参考スレ
Java 高速GUI SWT 2
http://pc5.2ch.net/test/read.cgi/tech/1068349883/l50
0002デフォルトの名無しさん
2006/02/21(火) 23:58:29http://pc3.2ch.net/tech/kako/1002/10021/1002160815.html
クライアントサイドJavaどうよ?:part2
http://pc2.2ch.net/tech/kako/1032/10326/1032665721.html
クライアントサイドJavaどうよ? part3
http://pc2.2ch.net/tech/kako/1045/10458/1045891783.html
参考スレッド。
Java 高速GUI SWT
http://pc5.2ch.net/tech/kako/1032/10324/1032448424.html
Java 高速GUI SWT 2
http://pc5.2ch.net/test/read.cgi/tech/1068349883/
FrontPage - java
http://www.wikiroom.com/java/
0003デフォルトの名無しさん
2006/02/21(火) 23:59:40WisdomSoft - JAVA入門
http://wisdom.sakura.ne.jp/system/java/javax.html
developerWorks - マルチスレッド化Javaアプリケーションの作成
http://www-6.ibm.com/jp/developerworks/java/010427/j_j-thread.html
[en]
Creating a GUI with JFC/Swing
http://java.sun.com/docs/books/tutorial/uiswing/
Threads and Swing
http://www.math.cuhk.edu.hk/TechInfo/JavaTutorial-2/ui/swing/threads.html
The Last Word in Swing Threads
http://java.sun.com/products/jfc/tsc/articles/threads/threads3.html
Painting in AWT and Swing
http://java.sun.com/products/jfc/tsc/articles/painting/
0004デフォルトの名無しさん
2006/02/22(水) 00:00:21赤坂玲音著「Javaアプリケーション作成講座 - Swingプログラミング徹底攻略」
http://www.amazon.co.jp/exec/obidos/ASIN/4839913862/
大村忠文著「Java GUIプログラミング」Vol.1〜3
http://www.amazon.co.jp/exec/obidos/ASIN/4877830510/
http://www.amazon.co.jp/exec/obidos/ASIN/4877830529/
http://www.amazon.co.jp/exec/obidos/ASIN/4877830537/
サンソフトプレス「グラフィックJava2」AWT編、Swing編(上)(下)
http://www.amazon.co.jp/exec/obidos/ASIN/4756134513/
http://www.amazon.co.jp/exec/obidos/ASIN/475613582X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756135838/
Java実践プログラムによるデザインパターン入門講座
- Swingプログラムで体得する23のパターン
http://www.amazon.co.jp/exec/obidos/ASIN/4894712563/
0005デフォルトの名無しさん
2006/02/22(水) 00:01:03http://java.sun.com/docs/books/tutorial/uiswing/
為政敦男氏が1998〜1999年にSwingExamplesを書き、
オリジナルサイト消滅後もミラーされ続けている。
5年以上前にSwingの素晴らしい使い方を示してくれた為政さんに感謝します。
http://www.senun.com/Left/Programming/Java_old/Examples_swing/JTableExamples1.html
http://www.physci.org/codes/tame/
SynthLaF
ユーザーを虜にするものは機能だけではありません。
見た目のCoolさでアピールしてはいかがでしょうか。
(雄の孔雀が美しい尾羽を持つように:-))
[ja]
IBM 進歩したSynth 最新のSwingルック・アンド・フィールを使うとカスタムUIが手軽に
http://www-6.ibm.com/jp/developerworks/java/050318/j_j-synth.html
[en]
Sun The Synth Look and Feel
http://www.javadesktop.org/articles/synth/index.html
0006デフォルトの名無しさん
2006/02/22(水) 00:01:59NetBeans
http://www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
http://www.eclipse.org/
http://www.eclipse.org/vep/
0007デフォルトの名無しさん
2006/02/22(水) 01:10:37イルッボンヌ サァ コリアン へ シャザイシール
0008デフォルトの名無しさん
2006/02/22(水) 06:13:060009デフォルトの名無しさん
2006/02/22(水) 06:20:34伝統w
0010デフォルトの名無しさん
2006/02/22(水) 07:56:34http://sourcepost.sytes.net/
0011デフォルトの名無しさん
2006/02/22(水) 12:51:06でも日本語とおらん、UTF-8でないとだめなのかな。
0012デフォルトの名無しさん
2006/02/22(水) 15:36:400013デフォルトの名無しさん
2006/02/22(水) 20:29:38×犬猿
○敬遠
これだからJava厨は…
0014デフォルトの名無しさん
2006/02/22(水) 21:30:04>>9
0015デフォルトの名無しさん
2006/02/22(水) 22:25:420016デフォルトの名無しさん
2006/02/22(水) 22:39:00IDEが対応してナンボ
0017デフォルトの名無しさん
2006/02/22(水) 22:46:330018デフォルトの名無しさん
2006/02/23(木) 00:20:170019デフォルトの名無しさん
2006/02/23(木) 00:26:010020デフォルトの名無しさん
2006/02/23(木) 09:55:38guiエディタは少しバグあるけど使えないレベルじゃないし。
ttps://jgoodies.dev.java.net/
0021デフォルトの名無しさん
2006/02/23(木) 10:28:130022デフォルトの名無しさん
2006/02/23(木) 14:54:05新しいレイアウトマネージャーには対応する予定はないって話しあったよね。
Visual Editorを元にGroupLayoutとかに対応したのを作ろうっていう動きは
どっかにないのかな。
あ、俺はムリよ。L&F集のコレクションで忙しい・・・。
0023デフォルトの名無しさん
2006/02/23(木) 16:04:180024デフォルトの名無しさん
2006/02/23(木) 21:17:590025デフォルトの名無しさん
2006/02/24(金) 02:04:32substanceで統一させようとか考えてるのか
それともsunの作ったOSに合わせたskinが決定稿なのかな?
初めに登録したのが先に呼ばれるとか、後から登録された方が先に呼ばれるとか。
0027デフォルトの名無しさん
2006/02/24(金) 13:09:13原則は順番不定だったと思う。
でもソース見れば順番はわかったりもする。そんなのに依存すべきじゃないけど。
どうもありがとう。順番に依存する実装は止めた方がよさそうですね。
0029デフォルトの名無しさん
2006/02/24(金) 13:23:04順序依存したいならメッセージを順序立てて投げるアダプタクラスつくってやればいいのだ。
そうすることでソースコード上で順序立てたことを表明できるし。
0030デフォルトの名無しさん
2006/02/24(金) 15:58:20スキン作ろうと思わせるアプリケーションが
まだJavaにはないんじゃないかね。
もしくは、Synthを想定してないアプリケーションが多いとか。
0031デフォルトの名無しさん
2006/02/28(火) 12:07:53画面1 → 画面2 → 画面3 → 画面1
みたいにやりたいのですが、画面1から画面2に行くときに画面1が表示されたままになってしまい困っています。
どのようにしたら常に画面表示が1つだけの状態になるのでしょうか?
0032デフォルトの名無しさん
2006/02/28(火) 12:18:48g.clearRect(x, y, width, height)
Swingとは関係ないね
JLabelを使っているなら
setIcon(new ImageIcon(hogeImage))
でいけるはず。ImageIconは毎度newせずとっておけば幸せになれる。
0033デフォルトの名無しさん
2006/02/28(火) 12:42:14つjava.awt.CardLayout
0034デフォルトの名無しさん
2006/02/28(火) 15:24:57JTextField を2つ作りその中に別々の数値など(例えば、"a","10")を入力して、
String配列を作っておきその中に入力したものが入っているかどうかを調べるときってどうしたらよいのでしょうか?
0035デフォルトの名無しさん
2006/02/28(火) 15:31:29↓ここをブックマークしなさい。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html
クラスが特定できてるなら、まずここでそのクラスを読み
またその関連クラスを調べれば生産性が大きく向上する。
0036デフォルトの名無しさん
2006/02/28(火) 16:50:43こんな感じでやればできたから参考にしてみて。
1)JTextField を2つ作る
2)その中に別々の数値など(例えば、"a","10")を入力させる
3)String配列を作っておきその中に値を入れておく
4)String配列に入力したものが入っているかどうかを調べる
0037デフォルトの名無しさん
2006/02/28(火) 18:22:11何かそんなようなこと書いてある記事があったから気になった
0038デフォルトの名無しさん
2006/02/28(火) 19:20:57ネイティブのAPIを使って描画するようになるから、ルックだけはネイティブ。
フィールは変わらないから、SWTと同じルック&フィールではない。
0039デフォルトの名無しさん
2006/02/28(火) 22:05:480040デフォルトの名無しさん
2006/02/28(火) 22:26:150041デフォルトの名無しさん
2006/02/28(火) 22:34:470042デフォルトの名無しさん
2006/02/28(火) 22:53:49いらいらする。再描画もカックンとくる。
0043デフォルトの名無しさん
2006/03/01(水) 00:04:28Javaが遅かったのはJITの技術の完成度が低かったからだよ。
1.4.2とかjava5以降は不足を感じることはほとんど無い。
0044デフォルトの名無しさん
2006/03/01(水) 00:07:36βだもうバリバリ動いてるんだろうか
0045デフォルトの名無しさん
2006/03/01(水) 00:50:571.2時代や1.1時代のSwingはきっつい
0046デフォルトの名無しさん
2006/03/01(水) 00:53:030047デフォルトの名無しさん
2006/03/01(水) 00:56:36Eclipseも遅い。
NetBeansとか使えたもんじゃない。
言うまでもないが、JavaのGUIは失敗しているので選んではいけない。
どうしてもクロスプラットフォームにしなければならないなら話は別だが。
0048デフォルトの名無しさん
2006/03/01(水) 00:58:46SJSE8でJ2EEとか開発してるなら糞重いんだろうけど
0049デフォルトの名無しさん
2006/03/01(水) 01:06:08まぁ、マシンはセレロン1.2Gのメモリ700MBだから、そんなプアーなマシン使うなと言われたらそれまでだが
0050デフォルトの名無しさん
2006/03/01(水) 01:19:18起動が遅いのがダメならJavaは使わないほうがいいかもね
0051デフォルトの名無しさん
2006/03/01(水) 01:19:41遅いと言われなくなるにはもう少し時間が必要だと思う。
0052デフォルトの名無しさん
2006/03/01(水) 02:00:23普通は同じマシン上で動かしてる別のアプリと比べるもんだから。
まぁ俺は ThinkPad X31 で十分。でも広い画面は欲しい。
0053デフォルトの名無しさん
2006/03/01(水) 02:10:21アプリ次第では?
おそいおそいといいつつjarファイルダブルクリックしてるだけとか
ヒープ調整しないと最初ヒープ拡張のためにFULLGC連発ですし
0054デフォルトの名無しさん
2006/03/01(水) 10:19:33そろそろ Swing は書き直して欲しい。
0055デフォルトの名無しさん
2006/03/01(水) 10:48:17いちいちリスナ書いてモデル(Swingでなくて自前の方)との接続コードを書くのやだ。
これの同等以上の簡便さが欲しい。
http://pcweb.mycom.co.jp/special/2005/cocoamvc/
モデルを設計するだけで、接続コード一切書く必要なし。
今のところラピッド開発はこれが最強だと思う。
0056デフォルトの名無しさん
2006/03/01(水) 12:01:21Swingは生APIだから層が違うと思われ
それモデルが万能じゃないだろ
Swingは互換性が命だからVectorをListインターフェースに置き換えるだけでも
かなりきついのが問題か
0057デフォルトの名無しさん
2006/03/01(水) 12:21:05「JavaのGUIが悪い」じゃなくて、
「Swingで作ったアプリのGUIが悪い」じゃないのか?
うまく作ればいいGUIだってできるよ。
下手なやつを作りやすいだけ。
0058デフォルトの名無しさん
2006/03/01(水) 12:31:15Swing は Swing で進化させつつ
1から作り直したやつも用意すれば良いかと。
生APIは生APIとして作るとして
より上位のレイヤがあっても良い。
WebのMVCは雨後の筍のようにポコポコ生まれてるのにね。
もういいだろ、Webは。
0059デフォルトの名無しさん
2006/03/01(水) 12:37:21メンテが厳しいのでは
AWTですらいまだに手は入ってるし履歴見るとバグ修正とかかなりでてる
SwingのAPIの数もすごいしね
どっかがSwingベースで簡単に作れるようなのを用意すればいいだけ
ただ、業務系で複雑なテーブルとか使う機会があるからそこはどうかなぁと
0060デフォルトの名無しさん
2006/03/01(水) 21:09:53それはXcodeとInterfaceBuilderの凄さじゃないか
SwingよりNetbeansとかに求める機能だと思う
0061デフォルトの名無しさん
2006/03/02(木) 00:08:30xml等のスクリプト言語に、レイアウト情報を格納してい
るのに、swingっていまだにコードにレイアウト情報を
直接に書くしかできないの?
0062デフォルトの名無しさん
2006/03/02(木) 00:12:340063デフォルトの名無しさん
2006/03/02(木) 00:14:39あれはなんと、オブジェクトをシリアライズしてるんです。
起動時にそれをロードしてるだけ。
0064デフォルトの名無しさん
2006/03/02(木) 00:15:16「レイアウト情報をコードから分離させろ」
ってことでしょ。
できないわけじゃないけどね。
0065デフォルトの名無しさん
2006/03/02(木) 01:50:330066デフォルトの名無しさん
2006/03/02(木) 01:51:06Lispの時代のS式厨と同じにおいを感じるぞ
0067デフォルトの名無しさん
2006/03/02(木) 02:19:200068デフォルトの名無しさん
2006/03/02(木) 02:54:59> SpringLayoutってなんか依存性注入してトランザクションなんか管理しそうだよな。
おれもマジでSpring Framework使われてすげー!!と思った
かっくしorz
0069デフォルトの名無しさん
2006/03/02(木) 09:31:32わかりづらい。
プロトタイプ式に変更したいのではなく、そもそも複数の役割を持つようなクラスは
単にうまく分離できていないだけだと思う。
それとも単に、長いよ、っていう話ならプリプロセッサのantタスク作ってincludeすりゃいいんじゃない?
なんかパックンマックンのコント中コント中コントを思い出したよ。
0070デフォルトの名無しさん
2006/03/02(木) 09:36:470071デフォルトの名無しさん
2006/03/02(木) 09:56:08Javaでも1ソース複数クラスかけるしなぁ
とはいえできることとやってもいいとは違うと思う
C#でも1ソース1クラスにしてるところは多いだろ
C++での多重継承とおなじ
0072デフォルトの名無しさん
2006/03/02(木) 09:59:30おれはC++の宣言と実装が分かれてるところが嫌いなんだよね。
あれは生まれた時の事情をそのままひきずっちゃったというか。
DやらjavaやらC#やらが結構すきなのは1クラス1テキストって対応がとれるからなんだよね。
UIのレイアウト定義を外部に出す系のjavaコードだとThinletってのがあったよ。
実装は小さきを目指したせいでアレだけど。
0073デフォルトの名無しさん
2006/03/02(木) 11:06:17Cの互換性維持からはじまってるからどうしようもないんだよね
考慮されてないダイナミックリンクと相性は悪いし
Javaはコンパイルされたpublicなclassはすべて手軽なライブラリとして扱えるから
これだけフリーのプロダクトが普及したと思ってるが
ダウンキャストといっても本質的に場合分けじゃないけど。
0075デフォルトの名無しさん
2006/03/02(木) 14:53:48同意。
DefaultMutableTreeNodeとか激しくウザイ。
レンダラやエディタ、モデルをこねくり回すクラスのそこかしこで出てくる。
0076デフォルトの名無しさん
2006/03/02(木) 19:35:50実装と分けてるからDefault系がはいるとはかぎらない
のだが、実際のところJTableにしろJTreeにしろDefault系で機能は十分足りる
足りなかったことがないんだよな
せこせことつくったはいいが、実際はDefault系を継承したりする程度で済む
ということばかりだったな
たとえばIME上で "きょうだいすきな” を入力してその後(スペースを押して)変換させようとしますね。
そうすると "兄弟好きな”と変換されて、Swingコンポーネントでは”兄弟”の部分が選択されたように白黒反転されます。
ここで望ましい変換が"今日大好きな"だとします。
そのためにshiffと矢印キーで単語区切りをを拡張収縮します。すると白黒反転の選択表示が解除されてIMEがどの部分を単語境界とみなしてるかが凄くわかりにくいのです。
普通のWinアプリならIME上で変換のための単語境界を拡張収縮する時は対象の単語が選択状態の白黒逆転表示になるので見やすいのです。そのようにSwingのテキストコンポーネントでするにはどうしたらいいですか。
「きょうだいすきな」
を変換しようとすると
「兄弟好きな」
になるので
単語「兄弟」の範囲を収縮させて「きょう」にして「今日」と変換させたいとします。
Swingテキストコンポーネントでは単語の範囲境界の変更がすごい見にくいんです。
「きょうだい」から「きょう」に最初の単語境界を移動させる時に普通のWinアプリだとその境界までの文字列が選択されたように白黒逆転されて表示されているんですが、Swingではそうなりません。
0079デフォルトの名無しさん
2006/03/03(金) 12:21:38変換中テキストの描画してるところで AttributedCharacterIterator の属性弄るとかすれば
出来んじゃないか? とか適当な事を言ってみる。
0080デフォルトの名無しさん
2006/03/03(金) 17:35:06JTextField でできたテキストに文字を入力(おはようございますとか)した後
テキストボックスをクリックすると自動的に記入していた内容が消える(空になる)ってことはできるのでしょうか?
0081デフォルトの名無しさん
2006/03/03(金) 17:36:54応対してくれてありがとう。その辺を調べてみました。でも難しく理解がまちがってるかもしれない。。
とにかく自分の調べた限りではAttributedCharacterIteratorを使っては属性を変更できないみたいです。
なんかInputMethodListenerを登録してでカスタマイズするのは無理そうな気がする。
InputMethodEventから取り出したAttributedCharacterIteratorから
getAttribute(TextAttribute.INPUT_METHOD_HIGHLIGHT);
を呼び出すと
InputMethodHighlightクラスのオブジェクトが得られます。
それに文字属性のハイライト情報がはいってるみたいで、これを使ってJTextComponentは描画してるんだろうけど、自分では属性を変更できないのでどうしようもない。
というかJTextComponentは文字が選択状態の属性を持っていても、未変換の属性をもっていると白黒反転表示しない。
最終的に文字を描画するのはJTextComponentだからどうしようもない。
0083デフォルトの名無しさん
2006/03/03(金) 22:29:18UnsupportedLookAndFeelException
しかないんですか?
0084デフォルトの名無しさん
2006/03/03(金) 22:29:20まず、「単語境界を移動させる時」も反転してないけど下線が太くなってる。
これは、たぶん太い下線を描くような属性がわたってると思う。
それから、「単語境界を移動させる時」は反転してないけど、
その部分を変換する時は、その部分だけ反転するよね。
これも、たぶん反転させるような属性があると思う。
で、AttributedCharacterIterator が final でなければ
任意の属性を偽装するのはできるよね。ちと面倒だけど。
JTextComponent じゃないコンポーネントでも、InputMethodListener から渡された
AttributedCharacterIterator を Graphics2D で drawString しても同じような結果になるから、
AttributedCharacterIterator を偽装してやれば思ったような描画に出来んじゃないかと思うんだわ。
これは、JTextComponent の processInputMethodEvent 上書きして
super.processInputMethodEvent() に
偽装した AttributedCharacterIterator 渡してやれば出来る。
もっとも、ここまで苦労しても JTextComponent の実装依存なんだけどね。
0085デフォルトの名無しさん
2006/03/03(金) 22:34:27「Swingの例外」を定義してくれ。
javax.swing パッケージで使われている例外=「Swingの例外」なら>>83の問いの答えは no だ。
javax.swing パッケージ(サブパッケージは含まない)で宣言されている例外=「Swingの例外」なら yes だ。
0086デフォルトの名無しさん
2006/03/03(金) 23:41:07別に何も無かったようにJTextFieldなどはそのまま表示されますよね。
しかしJPanelの上にJTextFieldをのせ、JPanelのpaintComponentを弄ると
JTextFieldは本来の指定された領域が描画されず、フォーカスだけが点滅しています。
このようなケースで上述した画面外から戻ってきたときのような
綺麗な再描画を得るには何を利用すればよいのでしょうか?
0087デフォルトの名無しさん
2006/03/03(金) 23:50:110088デフォルトの名無しさん
2006/03/04(土) 00:07:16TimerTaskでrepaintを繰り返してる以外は別に変わったことしてないんですよね・・・
0089デフォルトの名無しさん
2006/03/04(土) 11:53:320090デフォルトの名無しさん
2006/03/04(土) 18:40:59レイアウト情報をクラスに書きたくないなら、こういうのがある。
ttp://graftabl.com/staff/shunji/fswiki/wiki.cgi?page=HtmlTablePanel
設定ファイルにHTMLのテーブルタグを書いてレイアウトするパネル。
0091デフォルトの名無しさん
2006/03/04(土) 23:15:19packしてサイズと位置がはじめて決まる
必ず100ピクセルの幅で!とかは一応やれないことになってる
0092デフォルトの名無しさん
2006/03/05(日) 02:59:45テキストのログを表示したいんですけど
JTextPaneとかJEditorPanteとかを使うのが定石なんでしょうか?
キー入力とか編集機能は別にいらないんですが、、、
0093デフォルトの名無しさん
2006/03/05(日) 03:23:310094デフォルトの名無しさん
2006/03/05(日) 03:41:58だったらJTextPaneを使おうよ、思わないならJTextAreaだね
0095デフォルトの名無しさん
2006/03/05(日) 04:13:51JLabelでも赤字で出せるんだけど。
0096デフォルトの名無しさん
2006/03/05(日) 04:37:580097デフォルトの名無しさん
2006/03/05(日) 13:05:33JLabel label = new JLabel();
label.setText("<html><font color=\"red\">エラー</font></html>");
JLabel label = new JLabel("エラー");
label.setForeground(Color.red);
0098デフォルトの名無しさん
2006/03/05(日) 18:38:13だからコピーさせろー
0099デフォルトの名無しさん
2006/03/05(日) 18:54:09何を?
0100デフォルトの名無しさん
2006/03/05(日) 19:06:500101デフォルトの名無しさん
2006/03/05(日) 19:16:55やっとわかった、出てきたログをテキストとしてUI上からコピーさせろと言う意味だったのか。
略しすぎると基地外の戯言にしか見えんぞ>>98
■ このスレッドは過去ログ倉庫に格納されています