おつ そういやいつまで「低速」がつくんだろうか 1.4.1からはDirectXとか使って高速化してるし SWTも多少いじるとJFaceとか必要だからあっちにくらべて遅くねぇーよ
8 :
デフォルトの名無しさん :2005/07/19(火) 02:56:21
そう言えば最近SWTの評判を聞かないなぁ…
犬猿されつつあるw
10 :
デフォルトの名無しさん :2005/07/19(火) 06:44:20
敬遠じゃねぇのかYo!
11 :
デフォルトの名無しさん :2005/07/19(火) 10:32:05
ブビ六ライクな環境に毒されているタコです。 レイアウトマネージャって使うのデフォですか? (というか皆さんは思い通りに配置出来てますか?) ポトペタに慣れると激しく使い難いです。
>>11 デフォ。
GridBagLayoutになれたら、むしろVBの頃の方が面倒くさかったと思えるようになってきた。
コントロールのサイズ合わせとか、縦横の座標あわせとかね。
ところでSwingのコードを手書きしていた頃は、
GridBagLayoutを敬遠していたんだ。なんだか複雑そうな印象があって。
代わりにBoxLayoutを組み合わせてやってた。
でも、IDEで書いてみたらそれほど複雑じゃないね。Eclipse + VE使ってます。
レイアウトマネージャは便利 最初は確かに慣れるまでは手間かもしれないけど 複数のコントロールを綺麗に位置あわせとかは絶対座標じゃ大変 絶対座標がいいのならあぶそりゅーとレイアウトかNullレイアウトつかいな
14 :
デフォルトの名無しさん :2005/07/19(火) 15:53:35
>>12-13 tくす。やっぱデフォですか。orz。
今ねっとびーんずでペタペタやっとるんですけど、これはかなりイライラしますね。
今まさに、すべてのコントロールが横一列に(無造作に)並んじゃっているので、どうしたもんかと思案中ですw
15 :
デフォルトの名無しさん :2005/07/19(火) 17:10:25
>>12 おまえは俺か!
ウィンドウとして使わずに全画面でVBアプリの様にするならNetBeansのIDEについてくるAbsoluteLayoutってのが便利だったよ。
でも俺も
>>12 と同じでGridBag使うのがいいと思うね。
大変だと思うのは最初の3回くらいだし。
>>14 まずレイアウトの勉強してくれ
デフォではぼーだーやふろーになってるがこの2つと
ぼっくすの3種類の組み合わせだけでまずGUI作成はおわり
レイアウトが分からないってことはpackとか推奨サイズの意味もまったくわからんだろうね
幸いAWTとSwingの資料は大量にあるので勉強してみよう
>11 俺も GridBagLayout を強く勧める。 敷居は高そうに見えるけど、 簡単なサンプルで少しずつ学べば大丈夫。 Eclipse + Visual Editor なら制約とか勝手に宣言して加えてくれるし。 全画面のアプリ作る時でも、GridBagLayout でレイアウトしといた方がいいですよ。 (あとあとコンポーネント足したり、移動させたりするわけだし。) VBでプログラミングしたことないから分からないけど GridBagLayout に慣れた後で MFC(VC++) で画面作れ と言われるとストレスで死にそうになる。 ダイアログのプロパティ開いて、WM_SIZE選択して、 OnSize() の中に10個も20個もあるコンポーネントを 素敵に並べ替えるコードをネチネチ書き連ねて、、、自分が惨めになる。
NetBeansでNullLayoutで部品配置して、GridBagLayoutに変更、GrigBagLayoutカスタマイザーで調整。 これ。 最強l。
VEはフレームにサイズ設定いれてくるのがだめぽ
RTFをw3c標準のHTMLでオエっと吐き出す方法を教えてください(><)
>>7 SWTのスレが、高速名乗ってるからじゃないの?w
SWTが、高速の看板おろしたら低速の看板も外せばいいんじゃないかな、と。
低速といわれてるSwingの速さにみんなびっくりするから低速ってのは入れてて欲しいww
22 :
デフォルトの名無しさん :2005/07/19(火) 23:31:16
Flex見て興味をもったんだが、アコーディオンインタフェースがほしいな。 SplitPaneみたいな仕切りが何層にも分かれているんだけど、開いて置けるのは常に一画面。 んでバーにはそれぞれパネルのタイトルが表示できる。 タグインタフェースに似てるけど、こっちのが見た目がいい。
24 :
デフォルトの名無しさん :2005/07/20(水) 00:45:01
MFCは1つのドキュメントを2つのビューで表示できるが、Swingってどうやるの?
25 :
デフォルトの名無しさん :2005/07/20(水) 01:19:48
普通に自分でつくったモデルを二つのビューで表示するだけじゃないだろうか? どういう意味の質問なんだろうか?
「MFCのCDocumentやCViewに相当するクラスはないのか」 という意味なのだろう、きっと。
Swingだってドキュメントとビューは分かれてるな
Table2つ作って、同じTableModel参照させたら失敗した。
どういうふうに?
SplitPaneで右や下を基準にdividerLocationを指定する方法ってありますか? resize時にも自動でやってくれるのとありがたいです。
おれそのインターフェース苦手なんだわ なんでこんなのがあるのか不思議に思うくらい
>>31 これこれ。これではバーがしょぼいけど
この贅沢にスペース取ってますよ感がすき。
>>33 TabbedPaneでいいんじゃないかとおもっちゃうんだが、なんか良いこと在るのか?
ユーザー受けがよい
縦長のペインだとそれなりに使いやすい気はする。 スクロールするタブとか、すげえ操作しんどいし。
スクロールさせないタブにすればいいじゃない
38 :
デフォルトの名無しさん :2005/07/23(土) 16:00:37
初歩的な質問で申し訳ないのだが……。 ウィンドウの大きさを変更した時にウィンドウ内部のJPanel等の内部領域の大きさも追従させるにはどうすればいいのかな。 ウィンドウのイベントリスナでサイズ変更するたびに内部コンポーネントの大きさを弄くらなければならないのか、あるいは何らかの属性をセットすれば自動的に調節してくれるのか……?
Swingほどレイアウトマネージャで動的なサイズに強いGUIはないだろ
個人的にはTextPaneが早くなってくれれば言うこと無しなんだが
質問。 フレームをドラッグしてリサイズしてる最中でも、レイアウトを効かせるのってできるんでしょうか。 普通に作ると、リサイズ→マウスのボタン離す→レイアウトとなり、 ドラッグ中にはレイアウトされません。
>>42 Toolkit tk = Toolkit.getDefaultToolkit();
tk.setDynamicLayout(true);
動的変更やるかどうかは tk.isDynamicLayoutActive() で真偽値が取れる。
セットしても環境によっては無視される(falseのままとかtrueのままとか)。
44 :
42 :2005/07/26(火) 14:48:21
>43 思い通りになりました。ありがとうございます。 確かに、これでSystemDefaultのLookAndFeel使うと、 SWTの立場が危ういですね。 Swingだとネイティブのウィンドウシステムのウィンドウをバカスカ作る わけじゃないので、リソース負荷も少ないし。
SWT はちょっと触っただけだけど API の直感的な分かりやすさは Swing の方が上に感じる。 どーーーーしても Windows 的な L&F にしろって言われたら 仕方なく SWT 使うしかねーかなって程度じゃなかろうか。 (Swing の Windows L&F は native なものと微妙に違う時がある。)
たまーにVBみたいに絶対座標ではりつけたいという人いるけど NetBeansのAbsoluteLayout使えばいいだけだし、SPLなので組み込んでも問題ないし そもそもソースコード見れば分かるが非常に小さいレイアウト部品で自分で作れるくらいのものだしね SwingのLAFのネイティブとの違いは5.0で大幅に減ったから区別がつきにくくなったと思う 分かりやすさに関してはいわゆる普通のオブジェクト指向的プログラムで組むのがSwingで 自前でウインドウシステム作ったことがあるのならSWTはわかりやすいともいえる SWTががんばるためにはVEで圧倒的優位なコード吐き出してくれるくらいにならないと難しい
APIの構造が、Swingだと親に子供を乗せる感じだが、SWTは子供が親を飲み込む 感じ。両方やると混乱する。どっちを取るって言われたら漏れならSwingを取る JFace使えってのもあるんだろうけど、どっちにしろEclipseが無いところで動かすの めんどい。最近Swingで作ってJWSで配布ってよくやるから
48 :
デフォルトの名無しさん :2005/07/26(火) 19:30:07
まじっすか? JWSって流行ってるの?
流行っています
リッチクライアント案件ではいくつかあるな どれも企業内アプリだから目立たないだろうが JNLPAPI以外は通常のアプリとアプレットだから 特別な知識がいることもない
>JFace使えってのもあるんだろうけど、どっちにしろEclipseが無いところで動かすの >めんどい。最近Swingで作ってJWSで配布ってよくやるから それは正確ではないな。なぜなら最近のEclipseではSWTで作って JWS向けにexportする機能がついているから。強いて言えば「Ecliipse が無いところで開発するのがめんどい。」だろう。
IEなどのブラウザコンポーネントを使用するフリーソフトとかってよくあるけど、 これをjavaでやろうとするとSWTしかないんじゃない?Swingで使用できるIEや Mozilla並みのブラウザコンポーネント/クラスライブラリってフリーのは無いん じゃないか?いや商用でも動画とかフラッシュまで対応するのは無いんじゃ..
>>50 >どれも企業内アプリだから目立たないだろうが
というよりも企業内アプリのようにそれなりのサポート体制
を構築できてユーザPC上のJRE/JWSの環境がまともに使えるところでないと
駄目っていうのが現状。
IBMのような昔からJavaクライアントアプリを出荷しているところで
さえ、エンドユーザ向け製品ではアプリケーション一つに対して
一つ専用JREを準備していて、ユーザPCの共通Java環境を全く信用していない
ってのがよくわかる。おかげで複数のIBM製品使うとHDDにJREが四つも五つも...
NetBeansを使ったSwingレイアウト講座を開設してくれんかね。 2chブラウザやRSSリーダみたいなTree+List+Viewの三画面アプリが限界だ。
NetBeansを使ったSwingレイアウト講座を開設してくれんかね。 2chブラウザやRSSリーダみたいなTree+List+Viewの三画面アプリが限界だ。
NetBeansを使ったSwingレイアウト講座を開設してくれんかね。 2chブラウザやRSSリーダみたいなTree+List+Viewの三画面アプリが限界だ。
やっちまった。この話はなかったことにorz
にはは
59 :
デフォルトの名無しさん :2005/07/26(火) 22:47:18
なんか板が重いよね
60 :
デフォルトの名無しさん :2005/07/26(火) 22:52:08
なんか板が重いよね
>>53 プライベートJREはシステムに左右されず使えるから別に悪くはないかと
>>54 基本的にパネル複数組み合わせてやれば十分
そのGUIの階層を深くしただけでおけ
にはは
>>51 exportは楽でも、swtをJWSで使うとjarに署名が必要になるのは気になる
65 :
47 :2005/07/27(水) 01:07:19
>>51 その機能は知らんかったが「めんどい」の主な理由は
>>64 の言うとおり。
Eclipseが入っていればPlug-inとしてアプリ単体で配布できるから、まぁアリかなぁと思った
察しのとおり企業内なんで「偽署名の警告出るけどポチっとしてね」が通用する場合も
あるが、セキュリティがどうのとか言い出す香具師が出てくる規模になると無理
かと言って認証局使うとコストが発生する。でもSwingでなくてSWTを使うことでそれを
回収する方法を漏れは知らない。そうまでして使う理由が漏れには無いってこと
Swing自体じゃなくて、周辺ライブラリについての質問なのですが、 Swingと組み合わせて、ダイアグラム図エディタのようなものを 作るツールキットってないでしょうか? draw2dのようなやつの、Swing版が希望なんですが…
つーかライトウェイトのコンポーネントがSwingなんでSwingはすべてDraw2Dといえるんだが SWTのほうを先にやる時代なのかね? たぶんSwingの出来ることの多さにびびるとおもわれ
swingが高機能なのは知ってるがコンポーネント同士のコネクションって簡単に扱えるの? UMLのクラス図でいう矢印みたいなやつやパワーポイントのコネクタみたいなやつね。 draw2dだとそのへん簡単に扱えるよね。
>>69 どんなものかは知らんがJGraphというのはどうだ?
検索したらでてきたやつだけど
73 :
66 :2005/07/30(土) 23:43:31
Draw2Dの話はただしくないとおもうぞ。
Swingアプリ作る時ってIDEは何使ってる? Eclipseのswingプラグイン使ってる人いるかい?
普通はNetBeansだろうな
jBuilderってのは無し?
NetBeansって便利なんだけど 一括コメントアウトってできないの?
>>78 コメントボタン押す、またはCtrl+Shift+T
>>80 おおおお。すんばらしい。
メニュー>編集には無いのにボタン化やショートカットはあるのか
みんな基本的には、JavaのGUIがデスクトップ分野で盛り返すこと期待してる? おれはほとんど趣味の領域だけど, Swingが陽の目のを見る日が来てほしいよ本気で…勉強したし。 まだ発展途上だと信じたい。
>>75 俺はNetBeans使ってる。
eclipse+VEは重くてダメだった。
機能的にはどちらがいいのか知らない。
VEとNetBeansのフォームエディタ機能を比較してるサイトとかない?
ECObejctって知ってるか? あれがswingに新たな光をもたらしてくれる・・・ かもしれない(´・ω・`)
>>82 期待はしてる
企業内アプリとかでは今でもそれなりに使われてるから、リッチクライアントが
もっと流行ればもっと多く使われるようにはなると思う
ただ、一般向けのソフトで使われることはあまりないだろうね。残念だけど。
NetBeansはカスタムパネルが簡単に登録できるね。 レイアウトマスタリーになればVBより強力なツールになりそう。
>>83 VEのGUIエディタなんて、まだ全然だと思った。
ちょっと変わったことするとすぐソースコードがおかしくなったりした。
(おかしくなるっていうのが、可読性の悪いコードを出力するっていうのなら、
まだゆるせるが、間違った部分にGUI設定のコードを出力して、コンパイルエラーになったりする。)
あと、GUIのデザイン後に、手でコードを編集、追加したりすると、
これも、デザインが不能になったりする原因になる。あとやっぱりクソ重い。
でも、コードを編集する機能としては、NetBeansよりもeclipseのほうがずっと便利だから、
結局おれはeclipseを使っている。
VEよりもJiglooとかのほうが軽くて良さそうだった。
>でも、コードを編集する機能としては、NetBeansよりもeclipseのほうがずっと便利だから、 そうか?
先頭列コメントをコード整理の対象からはずしてくれる分 NetBeansのほうが使いやすいと感じた 小規模開発ならNetBeans、そうでないならEclipseかな
87ではないが、try〜catchの自動生成(またはthrowsの追加)は便利だと思う 他の機能は慣れればおk。 操作は全然違ったりするけど、一通りEclipseと同じ機能が実装されてる気がする。
91 :
87 :2005/08/01(月) 01:20:25
メニューから選べるような基本的な編集機能はどっち同じようなもんだと思うけど、 編集時の細かい操作は、eclipseの方が優れていると思った。 ぱっと思い出せたのはこんな感じ ・コンパイルエラーを簡単に自動修正できるところ(クイックフィックス?) ・インターフェースを匿名クラスで実装しようと、補完しただけで必要なメソッドをオーバーライドするところ ・補完後のカーソルの移動の仕方とか textbox.setTe| ←この辺で補完 textbox.setText(|) ←カーソルが()の間にある。ここでTABで、)の後ろに移動する ・コード補完のポップアップとかの使い勝手もeclipseの方が軽快に動作すると感じた eclipseは1文字入力した瞬間に絞り込まれるけど、NetBeansは、ちょっと待たないと絞り込まれない 開発効率がどれだけ違うかっていうと大差ないだろうけど、このあたりの動作が俺にとっては便利だった。 スレ違いごめん。
このスレ的にはGUI製作含めての効率のよさが重要だからNetBeansということになるんだろうか。 補完スピードも別に変わらんよ。どっちも一瞬で出る。 Eclipseで補完で大文字小文字の判定なしってどうすんだっけ。 2.1までは快適だったけど3以降は・・・ まぁNetBeansはカスタマイズしないとつらいけどなー。
>>91 ほかにもimportの候補とか、細かい点ではEclipseがいいけど、おおざっぱな点ではNetBeansが使いやすい。
try〜catchの自動挿入は実装してほしいけどね。
木を見て森をみずなEclipseと、森をみて木を見ずなNetBeans
emacsキーバインドがあるかないかが、最重要なので、eclipse。 その他は似たようなもんか。
VEしか使ってない身には重たいのとメモリ食うのが迷惑だけど 他はまぁ許容範囲と言うか、非常によく出来ている。 NetBeans を使ってみたいものの 会社が買ってくれない以上はどうにもならん。
NetBeansを買う?
フリーなのしらんのか
知らなかった。。
やっと時代がjwsに追いついた?
WebStartなんて業務系は出たときから使ってたが 5.0からは通常のAPIも一部とおるようになってきているな もちろんサンドボックス内で JNLPAPIの立場がなくなってきたかも
Webアプリとかよく知らないんだけど、 Yahoo!ゲームの将棋とかで使われてるGUIはSwingなの?
>>101 結構使われていたのかな。ちょっと以外。
ブラウザ嫌い&リッチクライアント万世なおれとしては
Swing+jwsががんばってくれると凄く嬉しい。
JWS使わないでSwingでのリッチクライアントもどきなら何度も見た 署名いれて印刷とかなんでもできるようにするより 普通にアプリケーションにしてjarをhttpでダウンロードして実行するだけのを作ってるね どうせJWS入れるにしても最初はJRE入れないとダメだし、 それならプライベートJREにしてバージョン固定させて他の環境と共存しやすいようにしたりね これなら配布コストはかからないし
>>101 >5.0からは通常のAPIも一部とおるようになってきているな
通常のAPIってなんのこと?
>>105 ドキュメントくらいよもう
新機能のところにいろいろとかいてあるんだし
>>75 のレスからいきなり活発になったな。このスレ
RTFStringみたいなクラスってないのかな?
>ClipboardServiceとか、FileOpenServiceもそうなるのかな。 いつかはなるだろ・・・たぶん
>>93 try〜catchは4.2で実装するみたいだね
daily buildで使えるようになってたよ
>>111 まじっすか?
欲しいよぉ〜と中の人に言ってみた甲斐があったのかな
>>113 SunからMSが買うってか
J#.NETでSwing実装と・・・
J#.NETってなんだい
>>115 MacでSWING使うとなかなかいいじゃんの略。
>>115 JavaScriptでSwingアプリケーションが組めたら便利だよね、の略
JavaとJavaScript混同してる本屋いまだに多いよね、の略じゃなかったっけ?
120 :
デフォルトの名無しさん :2005/08/03(水) 00:56:31
質問なんだけど、JButtonみたいな標準のコンポーネント、 あるいは自作したコンポーネントを、ドラッグさせて表示位置を変更させるみたいな事って、 できるかな。 つまりEclipseのomondoみたいなツールを作ってみたいんだけど・・・。
本屋で分離しておいてるのは見たことがない
Rhinoをこよなく愛する俺からしてみれば JavaScriptはまさしくStrinptingJavaなんだがw
イベントくらい勉強しよう
NetBeansでGridLayout使えばいいのでは?
125 :
デフォルトの名無しさん :2005/08/03(水) 01:00:06
あるいは、Visual Editorみたいな・・・
>>120 できるよ。
サンプルがネットに転がってたのを見たことがある。忘れたけど。
答えは
>>123
127 :
デフォルトの名無しさん :2005/08/03(水) 01:39:29
イベントでそんな事ができるんだ・・・。ヒントありがとう。 頑張って調べてみます。 ドラッグ中のコンポーネントを半透明表示とか出来たらイイなぁ・・・。
128 :
デフォルトの名無しさん :2005/08/03(水) 02:08:45
>>128 この場合awt.dndは用途が違わないか?
paintオーバーライドを承認? MouseMotionListenerが勝利の鍵?
131 :
デフォルトの名無しさん :2005/08/03(水) 12:51:57
む、用途が違うのでありますか・・・・。 MouseMotionListenerでドラッグ中に・・・・paint? ええええ?orz
Swingはpaintをオーバーライドしちゃいかんだろ
だめなの? paintComponentオーバーライドとどこが違うの? paintComponentは、間違えてpaintComponentsをオーバーライドしてしまってはまる。
paintはAWT時代のもので コンポーネントをまるごと描画する Swingはそのコンポーネントの状態に応じて paintメソッドが各種paint〜メソッドをコールする 最適化のために描画バッファの持ち方が様々だから勝手にコントロールはできんよ
ソース眺めてるとコレでもかってくらいに protected な paintHOGE があって 困惑したり感動したりした。 table 系のレンダリングが少し混乱気味な気がする。 (UI 以外でも描画に関わるメソッドが用意されてるあたりが。)
まぁユーザーはコンポーネント、チルドレン、ボーダーの3つしか使わんから 内部まではしる必要ないけどね その3つをオーバーライドするってのだけ知っていればよい
rtfをhtmlで保存するとき皆どうしてるの?
そんなことはしない
139 :
デフォルトの名無しさん :2005/08/19(金) 12:37:37
awtとswingのカラミ関連だが、軽量コンポーネントと重量コンポーネントの混載の際、軽量の方が重量に重ね描きされて 描画が正しく行われないあの不具合はいつ直るんだろう・・・。
>>139 原理的に、そういう仕様だと考えるべきだろう。
Canvas3Dのlightweight版ホスイナァ
全てをSwingにした場合、AWTのみで作った場合と比べて どの程度性能が落ちるのでしょうか? 処理速度は変わらず、メモリがちょっと大目に食う程度でしょうか?
なにをするかによる。 AWTでできる程度のことだったらSwingでもそんなに遅くないんじゃないか?
SWTとSwingはえらい差が出るけどな・・
いまだにSWTが速いと思い込んでるやついるのか
>>144 2DのアクションRPGではどうでしょうか?
聖剣伝説2(SFC)レベルのアニメーションが出来れば満足です。
>>147 余裕で出来るがそれSwingと関係ないぞ
Java2Dを勉強しなされ
>>146 そりゃネイティブコードで組んでるアプリには勝てないけどさ、
ここはJavaスレであって、awt swing swtの中ではswtが速いという意味だが。
>>148 Graphics2Dのみで頑張れという事ですか?
ならAWTだけで十分という結論になりそうですね・・・
Swingの利点はゲームには関係ないのでしょうか?
関係ないんじゃないの? そもそも一般的なウインドウアプリ書くためのライブラリなんだから。 ただJFrameで作っとけばRPGとかで体力表示するウインドウとかを Swing部品使って作ることで手間を省けるとかはあるかもな。
>>151 そうですね。
リアルタイム処理に影響しない街名ラベルの
アニメーションなどに絞って使おうと思います。
>>149 >awt swing swtの中ではswtが速いという意味だが。
大間違い。
詳述無き否定はタダの妄想
自分で調べてみればいいじゃん。 WindowsでもSWTのTableはかなり遅くて使い物にならないし LinuxだとあきらかにSwingよりも遅い。
>>154 まちがいっていうほどじゃないとは思うけど、
> 詳述無き否定はタダの妄想
っていうのはタダの負け惜しみ
自演乙
SystemLAFのレンダリングにネイティブ使うってことだろ?
AWTみたいになるってこと?
そういやどっかにSwingとSWTのベンチマークがあったな・・ どっちもどっちだった
SWTも細かいことやろうとするとjfaceだからな
つーかSWTの開発陣自身、eclipseがSWTを採用したのは速いからではなく
見た目を重視したからだと言ってるわけで。最初Swing版を作ってIBMの
コンペに出したら落ちたらしい。だからもともと速度重視で作られている
わけではない気がする。
>>156 今のtableは遅くないよ。
じゃあこのスレタイは間違っているということだな。
どんぐりの背比べって感は否めない。
機種に依存しない、UIがGUIのツールを簡単に作れるのはSwingのいいところ
安定してて凝った Look and Feel 無いかよ
前スレで、敢えて低速の語を残そうという話になってたような記憶が。
>>169 swingなら自前でかけるぞ。
#俺はやる気ナッシングだけどな。
JPEGを読み込んで指定色透過させる方法はありますか?
けどSwing関係ないな
Swingスレというより画像処理スレになってるな いい傾向だ
どこがいい傾向なんだ ただのスレ違い
JPEGの圧縮方法わかってるならカラーキーがどういう結果になるか分からんかね?
回りくどくて無駄にえらそうなきもいレスは要らないのでもういいです。
最近釣り多いな
釣なのか真性なのか…。
ディスプレイ全体ってなんだよ
_____ ||// ∧_∧|∧_∧ ||/ ( ´・ω・)( ) ジャギーでまくり || ( )|( ● )  ̄ ̄ ̄ ̄ ̄ u―u' _____ ||// ∧_∧|∧_∧ ||/ (n´・ω・)n ) でも Swing 使ってる… || (ソ 丿|ヽ ● )  ̄ ̄ ̄ ̄ ̄ u―u' _____ ||// ∧_∧|∧_∧ ||/ r( (n´・ω・`n) Swing 使ってるのにジャギーでまくり… || ヽ ● )|( )  ̄ ̄ ̄ ̄ ̄ u―u'
Swingは、というかJava2Dでアンチエイリアスのヒントはいれれるからな
186 :
デフォルトの名無しさん :2005/08/22(月) 13:59:26
イベントが起きると、あるパネルに貼り付けられているラベルの上に、 透過色の四角形でそのラベルにマスクをかけるようなことをしたいのですが、 できますでしょうか? graphics2Dで色の透過ができることはわかったのですが、 ラベルの下に透過させた四角形が潜り込んでしまうんです。
GlassPaneに描画すればいいんじゃない?
そのもぐりこんでるコードさらしてみ
189 :
182 :2005/08/22(月) 15:10:41
>>183 文字通りディスプレイに映る全ての文字がかすれてしまいます。
>>185 レスありがとうございます。やはりそうでしたか。
>>189 SwingやJava2Dが他のアプリーケーションの描画をかえることはないぞ
液晶ディスプレイ使ってて、Judeが立ち上がるとVGAで フルスクリーンモードになるような設定でもしてるとか? 見てみたいんでスクリーンショット貼ってくれ。
192 :
186 :2005/08/23(火) 10:55:54
>>187 ,188
レスありがとうございます。
要点以外は端折って書きました。
あと、ここに書いてあるのは透過の四角形じゃなくて
ただの四角形になってますが、よろしくお願いします。
要はラベルの上で、透過した四角形が出たり消えたりして欲しいのです。
public class Test extends JInternalFrame {
class MyCanvas extends JPanel {
public int x1[] = {10,20,20,10};
public int y1[] = {10,10,20,20};
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillPolygon(x1,y1,4);
}
}
private MyCanvas canvas_a = null;
193 :
186 :2005/08/23(火) 10:57:39
public Test() { super(); initialize(); } private void initialize() { this.setContentPane(getJContentPane()); } private JPanel getJContentPane() { jContentPane.add(getJScrollPane1(), null); return jContentPane; } private JScrollPane getJScrollPane1() { jScrollPane1.setViewportView(getJPanel_Main()); jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); return jScrollPane1; } private JPanel getJPanel_Main() { JPanel jPanel_Main = new JPanel(); JLabel jLabel_a = new JLabel(); jPanel_Main.setPreferredSize(new Dimension(1000,435)); jPanel_Main.add(jLabel_a, null); jPanel_Main.add(getCanvas(), null); return jPanel_Main; } private MyCanvas getCanvas() { canvas_a.setBounds(0, 0, 1500, 437); return canvas_a; } }
>>1 > ハードウェアの高スペック化、JavaVMのホットスポットの高速化に伴い、
> パフォーマンスの問題が改善されつつあります。
> しかしながら、"Java"というだけで犬猿されつつあるのが現状。
へ?
んなこと言うのはシステム屋だけでしょ
AWTスレってないのな
今からAWT使う理由ってあるのかな?
197 :
デフォルトの名無しさん :2005/08/24(水) 17:22:38
Look and Feel 変えてもシステムのウィンドウバーだけは変わらないみたいだけど、 これは変えられないの?
>>197 ウィンドウバーってタイトルバーのことか?
あれはOSの管轄だから変えられないよ。
>>197 ヒント:JFrame.setDefaultLookAndFeelDecorated(boolean)
>>198 タイトルバーですね。Windows だと左側にアイコンとタイトル文字、
右側に最小化、最大化、クローズのボタンが付いているところです。
MetalTheme 使って全面チョコレート色 (SwingSet2 デモのチャコール風)
とかにしてみてるんですけどね、あそこだけ Windows してるんで激しく萎えます。
>>199 おっ、これはできそう、だ、が…
JFrame を最大化すると Windows のタスクバーの上に来るのね。ついでに Metal 以外の
Look and Feel に切り替えると decoration が消える。他のはサポートされてないんかな。
あわせ技で最大化して Metal 以外の Look and Feel に切り替えるとキオスクモード風
(IE で F11 押した状態) になるな。これはこれで使えそうだが。
どうもです。
1. 一度表示したら JFrame#setUndecorated(true/false) できない ⇒ タイトルバーの Look and Feel 化/デフォルト化を動的に切り替えられない。 2. Metal 以外はウィンドウ装飾を表示できない。 ⇒ Metal 以外はデフォルトのタイトルバーにする必要あり。 ∴動的な Look and Feel 変更と、タイトルバーの Look and Feel 化は両立できない でした。 残念!
203 :
182 :2005/08/24(水) 21:30:33
>>190-191 すみません遅れました。まだ見てたらよろしければレスください。
PrintScreenで確認しましたらそっちは正常に写ってました。
ということはグラフィックドライバの設定何でしょうか?
Java起動してなくてもおかしいんじゃないのか?
>>202 JWindowかなんかを使うようにしてタイトルバーを自前で描くようにすればいいんじゃね。
207 :
デフォルトの名無しさん :2005/08/26(金) 02:50:17
みなさん、レイアウトマネージャ乗りこなせてますか? 私はPreferredSizeとMaximumSizeとMinimumSizeの設定値が どのレイアウトだとそれぞれきちんと反映されたりされなかったりするのかがいまいちよくワカメ。 レイアウトマネージャの飼い慣らすのに役立つ情報ソースってありますでしょうか?
ソース読むのが一番早いだろ。
209 :
デフォルトの名無しさん :2005/08/26(金) 03:37:26
という
>>208 はソースなんて読んだことないというオチ。
ちなみに俺はライブラリのソースなんて読まない。ドキュメントと使用法のサンプルは読む。
チュートリアル動かしてソース読めって事かと思ったが コンポーネントそのもののソースかよ 蛍光灯使うのにグロースターターやインバーターの知識はいらんだろ
通常ほとんどのコンポーネントはPreferredSizeしか意識はしないな
>>210 だが蛍光灯を買うときにサイズは必要だよ。
よく30型と32型を間違える奴居るじゃんかよ(俺とかorz)
俺は髭剃りの替え刃をカンで買って間違える。 それくらい全社統一しろよ!
>>213 30型と32型がセットになったやつを買えばいいじゃない
>>216 それじゃ人生つまんないよ!冒険しようぜ!
>216 それじゃ、片方が確実に余るじゃん。
219 :
213 :2005/08/27(土) 00:17:39
>>216 おまいら俺がどうやって間違えたかおしえたるわい。
40型と32+30の組み合わせあるやん。、今家の中みただけで4つはその組み合わせなんよ。
で、40型と32か30のどっちかやとおもうやん。
大抵取り替える方は逆の組み合わせなんだよ。orz
もうね、わけわかめ。
#つうか年にいっぺん取り替えのつもりで4つの蛍光灯の2つが40+32のこりが40+30なんだけど
#なんでいつも間違えて買うかな。orz
#自分がおっちょこちょいなのは承知だけど、けっこうこういう話しあるんだよ。
あースマン、 酔っぱらってワケワカメな感想書いた。 半年にいっぺん取り替えるようにしている4箇所の蛍光灯の、たまたま半分が 40+32でのこりが40+30なんだけど、毎回間違えるのよ。 orz #スミマセン、マヂでEtherネットの回線切って頸つってきます。
221 :
208 :2005/08/27(土) 00:43:04
>>209 , 210
ドキュメントと使用法のサンプルを読むのは当たり前だろ。
それでもわからないところがあったときソースを読むのも当たり前だろ。
そんなこと言ってるからJava厨ってバカにされるんだよ。
レイアウトマネージャのソース解読は投資対効果低すぎるな。 低脳のすることだ。
223 :
208 :2005/08/27(土) 03:24:50
ホントにソースを読んで >レイアウトマネージャのソース解読は投資対効果低すぎるな。 >低脳のすることだ。 といってるとしたらあなた自身も低脳ってことですね。 読んでないのにそんなこと言ってるとしたらタダの嘘つきですね。 どっちにしろあの程度のソースを「解読」とか言ってる時点で程度が知れますが。
プッ ROI も理解できない三流コーダーが無理すんなw
なんかソース読んで理解したのが自慢な人って多いよね。そりゃ読むことはあるけどさ。 API リファレンスとサンプル作成、ネットの情報で理解できなかった人か、あるいは 「俺はコアライブラリのソース読めるくらいのスキルなんだぞー」とか、レベル低すぎて 見てて恥ずかしいんだが。
まぁ、
>>207 の「乗り回す」だの「飼いならす」のレベルによるわな。
当面使えればいいのか、内部構造に手を出してでも細かく制御したいのか。
>>215 よく見ろよ。全社統一とかいう問題じゃなくて、
同じメーカーなのに違うんだよ。それが販売戦略なのさ。
>>226 使うの次は作るだと思うが、今のところ既存のレイアウトマネージャーを
組み合わせれば、自前で実装するほどの必要性を感じたことはないな。
必要性があったところで特殊な配置だろうから、苦労してレイアウト
マネージャー一本起こすほどの価値も再利用性もないだろうし、
普通は JPanel に直接配置して終わりだろ。
つーか、いまさらコンポーネントの配置・調整なんてドロドロしたコードは
書く気にならんな。そういうのゴリゴリ書くのが好きな人たちもいるけど。
結局、
>>207 は「使いこなすまで難しいですよね〜」って言いたかっただけかと。
レイアウトの希望としては推奨サイズに-1をいれれるようにして -1の場合はサイズ計算してそれを適用とかになるともういらないかな いまだと指定するとほぼそれが中に書かれてるテキストサイズとか無視してサイズが決まるしね 今の状態だとX方向だけとかY方向だけとかの固定が出来ない
JComboBox のドロップダウンする項目でで選択不能なセパレータを入れたいんだけど ListCellRencerer で項目の上か下かに JSeparator 入れるしかないのかな。
SwingのダブルバッファとAWTの自作ダブルバッファとBufferStrategyってどれが一番性能がよい?
233 :
229 :2005/08/28(日) 02:06:37
とりあえず DefaultListCellRenderer のサブクラス作って、セパレータ入れたくなった項目で
this.setBorder(BorderFactory.createMatteBorder(1,0,0,0,Color.gray));
(つや消しボーダーで上辺のみグレー設定)
とやったらよくあるような形になった。
>>231 さん
そう、JSeparator をそのまま 1 項目としてしまうと ItemListener 仕掛けてはじかなきゃ
いけなくなるんですよね。項目の上辺か下辺に線が付けば要件満たせると思って
辺を指定できる MatteBorder 使っちゃいました。
>>232 それぞれ特徴が・・・というかSwingとAWTのダブルバッファの意味が分からん
SwingはJava2D使って実装されてるし、AWTでダブルバッファまでやってくれたっけ?
AWTの自作ってなんだよ
AWTとかSwingってGUIコンポーネントだろ AWT以下のパッケージという意味ではないよな ならAWT上の自作ダブルバッファという意味がつうじん
1) Swingであらかじめ用意されているダブルバッファ(RepaintManager?)を使うのと、 2) ダブルバッファ機能をスクラッチから自作するのと、 3) BufferStrategy(これってjava.awt.image下のクラスだよね?) のどれがいいでしょうか、という質問かな? どっちにせよ質問者が質問の意味を分かってないようなんだな。
BufferStrategyとかSwingのダブルバッファは使用目的が限られてるし 用途で決まるもんだけどなぁ
SwingでBufferStrategyを使うとトリプルバッファになる?
>>241 BufferStrategy勉強してからそういうこときいてね
それにトリプルバッファってどういうもんかしってる?
ダブルバッファ+1に決まってるだろ
どういう用途で使うか知ってるかと聞いたのだが
フリッピングだろ?
もうこのスレと関係ねーじゃん。
JFrame配下のJComponentでBufferStrategy使うのと CanvasでBufferStrategy使うのとではどっちが有利かってことだろ?
BufferStrategyはフルスクリーン以外はイマイチ
250 :
デフォルトの名無しさん :2005/08/28(日) 20:34:13
swingアプリでフルスクリーンにする時なんかあるの?
ほとんどないから実質スレ違い
POSとか
組み込みでフルスクリーンはあるけどその場合BufferStrategyはつかわんな ゲームとかで垂直同期ページフリッピングが必要ならやるけど
このスレの伸びがSwing現状を物語ってるな…。 Javaがんがれ
つーか、ひょっとしてみんな Web 系で画面は HTML で作ってばっかとか? そしてそれ以外は全部ゲーム・携帯アプリとか。 GUI コンポーネントとイベントリスナを HTML で記述できりゃ楽なのに。配置や 色のちょっとした調整するのに Visual Editor 立ち上がるの重すぎ。Longhoneで やってなかったっけ?
256 :
デフォルトの名無しさん :2005/09/06(火) 14:23:22
XAMLか? あれは微妙に違うかも。
詳しく調べてないんで、イベントはどうかわからんけど レイアウトをXMLでやるのはありますね。 XMLでマークアップできるJava GUIまとめ tp://d.hatena.ne.jp/sakamoto_yuki/20050612#p1
JBuilderつかう
260 :
デフォルトの名無しさん :2005/09/07(水) 00:22:30
でもなんだかんだ言ってVisual Editorがディファクトスタンダードになりそうだよな・・・。 そうなるならOSX版も出して欲しいんだが。
NetBean も JBuilder も HTML 手書き+ブラウザリロードに比べたら激遅やん。
HTMLって・・・なにいってるの? JSPしか分からない人?
263 :
デフォルトの名無しさん :2005/09/07(水) 00:48:28
基本的にvisualc++のスピードを抜かないとSwingは普及しないね。
>>262 確かにHTMLってのは舌ったらずだと思うけど
マークアップでGUIを定義できないもんかって
話だってのは読んで判ったよ。
>>263 のいいたいことがサッパリわからない。何故にIDEとライブラリを比較してるのか。
MFC のことを言ってるんだろうということくらい容易に想像つくと思うが。 まぁ MFC すら触ったことない人間なら思いつかんかもしれんが。
>>262 10 レスくらい前から読めば言わんとしてることくらい分かるだろ。
IE レベルのユーザインターフェースを HTML で定義できたら Web 系の
スキルの人間をクライアント GUI 開発に回せて便利だろうね。
NetBeansのMatisseとか触ってみると、ぜんぜんそうは思えないんだが。
あれそんなに良いの? 今度触ってみるか… マークアップ言語の GUI はコンポーネントのレイアウトをリソースとして 切り離せるというのもあるな。GUI ビルダーが吐き出した汚いソースに 恐る恐る手を入れるよりよっぽどスマートでしょ。
まだ例外でまくり。でもレイアウトかなりやりやすいよ。
>>267 IEレベルのしょぼいGUIでいったい何をしようって言うのよ?
だからコンポーネントの配置だっつってんのに。
しかし、タグで設計するSwingGUIライブラリって、あんまり人気でないね。 Swing自体が使われないからか。 NetBeansのフォーム情報XMLが編集しやすければいいんだけどね。
>>273 257に書いてある所に、SWTのもあるんだけどね。
あまり情報ないね。
やっぱりリッチなGUIはどうせならポトペタでって
刷りこまれちゃってんのかな。
まあ俺もそんな感じだけど。
ポトペタのほうが、どうしても脳味噌容量を節約できるしな。 リッチな開発環境が使えるのであれば、XMLでGUIをデザインするメリットが 少なく見えてしまうのも頷ける。
ポトペタでXMLを吐けばまんじOKコンピューターだな
NetBeans5が正式リリースされればすべて解決だ
VS2005が正式リリースされればSwingももうお終いだな。
関連性がないぞ それにそういうことは死滅スレいけ
>>272 >だからコンポーネントの配置だっつってんのに。
???
「IE レベルのユーザインターフェース」を HTML で定義できたら...(
>>267 )
HTMLで配置とか言ってるヤシがいるがHTMLだってほとんどポトペタだと思うがな
IDE に縛られなくても HTML 程度なら好きなエディタで作れるがな。
まさかCSSの使えないHTMLか
ところで、JTextPane はもうちょっとまともにならないのか。
まったくだ。 誰かそろそろGecko並みのHTMLコンポーネント作ってくれないもんか。
>>282 AWTもSwingもSWTもIDEには縛られなくても好きなエディタで書ける。
HTMLも複雑なレイアウトだと直接書くのは大変。
つまりHTMLもGUIライブラリも同じ。
Visual Editor で作ったものを NetBeans でメンテナンスできるの?
それは縛られてるとは言わんのか。つーか、縛られてるって開発物が特定の 開発環境にって意味なんだが。個人の嗜好が特定の IDE にって意味じゃなくて。
そろそろそんな環境がほしいならプラグインでもモジュールでもなんでもいいから自分で作れといいたくなってきた
ありがちな思考停止の言い訳
業務アプリでテキストエディタでGUI生成しようとしてるやつはみたが 画面数とコンポーネントの数が大量なのに根性あるなと思った まぁその後は予想通りの結果だったが
>>292 一回手書きなり IDE なりで GUI 作ってしまうとずっと引っ張られるからなぁ。
移行しようにも分析のために何年前か分からん IDE が吐き出した汚いソース読む
羽目になったり。
絵に描いた餅には興味はない
>>291 つまり、自分の思い通りにならないから駄々をこねてるだけということか
「自分で作れ」っていうのは、「これ以上いいアイデアもないし自分は不便に感じてないしキミにつきあってられないから勝手にやってくれ」っていうメッセージだよね。
>>295 ここは個人の勝手な不満をぶちまけるスレではありませんし、
到底実現しそうにもない無意味なアイデアを開陳するスレでもありません。
「つまり」 って便利な言葉だな。脈絡なくても文章力なくても結論導いたような文章が書ける。
だいたいHTMLとか言ってるやつの不満はSwingそのものじゃなくてIDEの問題なんだからIDEのスレでやれよ。
記述法重要
>>300 重要だと思うなら思考停止とか言わずにそのアイデアとやらを基に自分で作ってみろって、
本当に必要なものならみんな使ってくれるさ。
今のままじゃ本当にただの絵に書いた餅に過ぎない。
はいはいクマクマ
JTextPane で挿入した Component に文字の回りこみって設定できる?
>>302 なんだ、ネタだったのか。相手して損した。
↑
↓
→
←
↗
自分は賢いとか思ってるんだろうな、コイツ
どいつ?
JTextPaneで、今何行目にキャレットがあるかを調べるには、 やっぱり、中身が変更される毎に各行の開始点を計算して、それから計算しないとだめなんだろうか? SwingでNetBeansやEclipse並みのエディタを作成しようとしているのだが、 2000行ぐらいになると重くて使い物にならなくなるorz
316 :
314 :2005/09/09(金) 14:40:33
>>315 CPU:1.7GHz
メモリ:256MB
OS:Window2000
Java:バージョン1.5
>>314 任意の位置の行番号を保持する StyledDocument を自分で作る。
ま、行ごとの文字数をリストで持ってて、入力イベント拾って画面と同期してれば
良いかと。
各行の開始点を計算ってのがよく分からないけど、 Caret#getDotとElement#getElementIndexを毎回呼んだとしても そんなに遅くならないんじゃないかなぁ と試しもせずに言ってみる。
エディタ程度でそんなに重くなるとは思えないが 完全に自作してみたほうが軽いかもよ あと1.7GHzといってもCeleronの1.7GHz+SDRAMと PentiumMの1.7GHz+DDR2デュアルチャネルでは 性能が2倍は違うから注意な netburst系はJavaの動作速度が遅いし
その点V2Cってすごいな
>>320 いや、あの、その、そういう問題じゃないだろう?
>>319 カーソルより上で挿入・削除が行われたときに
増減した\nの数を数えるのが最速だと思う。
swingで速くできないレベルのプログラマなら、
自作しても遅いままだと思われ。
タイトル表示ありでウィンドウの終了ボタン(Windowsの場合右上の×ボタン)って 非表示にできないかな?
>>323 JInternalFrame だったらコントロールできるけど、
JFrame, JDialog とか Frame, Dialog だと無理っぽい。
どーしてもって言うなら JNI 経由で HWND 取ってきて
RemoveMenu(hwnd, SC_CLOSE, MF_BYCOMMAND);
とかするしかないと思われ。
325 :
314 :2005/09/12(月) 09:44:49
レスが遅れて申し訳ないです。
>>317 >ま、行ごとの文字数をリストで持ってて、入力イベント拾って画面と同期してれば
>良いかと。
それをやってると2000行を超えたあたりから重くなるんですorz
>>318 各行の開始点っていうのは、
例えば全文の文頭から5行目の文頭へのオフセットは41とかいった感じです。
>>319 Celeronの1.7GHz+SDRAMですorz
>>322 特定の文字列を太字にする等のスタイル関連の処理の為に、
全行の文頭の位置を記憶する必要があったので、
増減した\nの数を数えるだけじゃ駄目なのですorz
>>325 2000行程度ArryListでもLinkedListでもVectorでも遅くならないぞ
たぶん原因はそこじゃないな
327 :
314 :2005/09/12(月) 15:12:47
>>326 仰るとおりでしたorz
無理して取得しない場合で何とかなる方法を試みてみたが、殆ど早くならなりませんでした。
そこで、どの部分の処理で時間を喰っているか調べてみたところ、
原因は改行コードが\r\nの場合に\nに直す処理だったみたいです。
Windows系のOSだと、getText()で文字列を取得した際、改行コードの扱いが1文字から2文字に変更され、
テキスト関連の処理で不都合が生じるため、このような処理を行っています。
String str = getText();
StringBuffer strBuff = new StringBuffer(1000);
for(int i=0;i<str.length();i++){
if(str.charAt(i) == '\r'){
if(str.charAt(i+1) == '\n'){
i++;
}
}
strBuff.append(str.charAt(i));
}
String text = strBuff.toString().substring(begin, end);
これ以上、直しようがないorz
>>327 DocumentEvent 拾って挿入文字に '\r' が含まれてたらその位置を削除ってので
良いんじゃなかろうか。量がでかいなら一括でするには効率悪すぎ。
つか、"\r\n", "\r" で不具合の起きるテキスト処理というのを見直すべきでは。
329 :
314 :2005/09/12(月) 16:13:38
>>328 それが、
abc
de
f
と、いう文字列は
JTextPane内で「abc\nde\nf」
と、認識されているのですが、
getText()で取り出すとWindows系では「abc\r\nde\r\nf」
っていう感じに改行コードが変換されるみたいなのです。
その為、JTextPane内では、'e'は6文字目になるのに対し、
getText()で取得したString内では、'e'は7文字目になってしまうのです。
>>329 じゃ逆に JTextPane 内で "\n" を System.getProperty("line.separator") 文字として
カウントしてみるとか。
確かに DefaultEditorKit#write() で System.getProperty("line.separator") 取ってるのな…
マルチスレッドで何か動いてたら支障あるかもしれんが
String crlf = System.getProperty("line.separator");
System.setProperty("line.separator", "\n");
String text = getText();
System.setProperty("line.separator", crlf);
>>327 String::replaceはダメなの?
>>331 やってることは変わらないので同じじゃないのか。
つか、1.4 までなら char しか渡せんやんか。
JEditorPane, DefaultEditorKit のソースみた限りでは getText() する前に Document#putProperty(DefaultEditorKit.EndOfLineStringProperty, "\n"); すれば良い感じ。ちょっと試してみ。
338 :
314 :2005/09/13(火) 12:30:13
お返事の方、遅れて申し訳ありません。
今まで質問に答えてくださった方々どうもありがとうございます。
>>331 以前やってみたのですが、逆に遅くなりました(´・ω・`)
>>336 参考になりました。
これで、改行文字が操作できそうです。
>>337 この方法でうまくいきました。
重ね重ねどうもありがとうございます。
>>325 >例えば全文の文頭から5行目の文頭へのオフセットは41とかいった感じです。
そいうデータって、getDocument().getRootElements() でとれるやつが持ってたりする。
しかし、参考になるドキュメントがあまりないので、APIリファレンスやSwingのソースと格闘しないといけない罠。
>>336 関係ないけど、手元にある JDK 5.0 の日本語版 API リファレンスとちょっと違うのね。
Newlines の章の代わりに一言
> EndOfLineStringProperty は、get/setProperty メソッドを使用して Document 上で設定されます。
> サブクラスはこの動作をオーバーライドできます。
とあるだけだ。リファレンスが古いのかな?
と思ったら 1.4 のには「復帰改行」の章がある。なんじゃこりゃ?
デグレ?
質問なんですが、JFileChooserでxml形式のファイルを選択し画面のテキストエリア に表示したいのです。 その時にxmlファイル全文を表示するのではなく、タグでかこまれたテキストだけを 表示するにはどうしたらいいでしょうか? 単純に全文表示するだけならできるのですが、タグの部分「<title>」とかも表示されてしまいます。
343 :
デフォルトの名無しさん :2005/10/11(火) 10:44:58
スレ違い XMLのスレで聞きなさい
>>342 String#replaceAll("<[^>]*>","")
Commons Digester
346 :
デフォルトの名無しさん :2005/10/17(月) 12:49:52
すみません、教えてください。 Canvasをスクロール可能にできますか? JScrollPane jsp = new JScrollPane(); jsp.setViewportView(canvas); のようにしてみましたが、うまくいきませんorz
どううまくいかないのさ?
なんでSwingとAWTまぜるのさ
349 :
346 :2005/10/17(月) 13:53:25
>>347 他のコンポーネントの上にCanvasが覆いかぶさってしまいます。
スクロールペインにのせずに使うと、途中で切れてしまいます。
>>348 すみません、今のところコレしか方法知らないので・・・
動的にグラフをかくというアプリケーションを作っているのですが、
グラフ描画の部分で、Canvasのpaint()メソッドをオーバーライドしています。
350 :
デフォルトの名無しさん :2005/10/17(月) 14:06:54
JPanelでいいじゃん「
>>349 SwingはすべてのコンポーネントがCanvasみたいなものだよ
JPanelはりつけてpaintComponentに描画処理いれてみそ
352 :
346 :2005/10/17(月) 16:08:22
>>350 >>351 JPanelでも描画できるのですね!!
ありがとうございます。
でも、ScrollPane上でスクロールさせるには、Scrollableをimplementsしないといけませんか?!
>>352 なにもせんでええ
わからなかったらNetBeans等のIDEではりつけてそのソースみてみそ
354 :
346 :2005/10/17(月) 17:15:22
ありがとうございます。試してみます。
ボタンを押すと、DB接続してデータ取得するのですが、 ボタンの連打を回避したいのです。 何かいい方法があれば教えてください。
>>355 処理が終わるまで無効化すりゃいいじゃん。
JFileChooserやJColorChooserがあるのに、 JFontChooserが無いのはおかしいと思う今日この頃。
JListかJComboBoxで簡単に作れるよ。重いけど
>>357 作れる、作れないの話ではないと思うが。
コモンダイアログとして、提供されるべき。
?? 簡単か面倒かの話じゃないの? わざわざ用意するまでもないと思うけど
そういう話は 「じゃ Swing 使うなよ」 「Bug Parade 逝け」 という つまんない話にしか落ちないからお勧めできない。
JFontChooserでぐぐって出てくる奴使えばいいじゃない
うはっ、売ってるヤツあるよ。すげー
365 :
デフォルトの名無しさん :2005/10/20(木) 01:59:03
俺は使う機会がないけど、使う必要があったら、自作するより標準があってそれを使いたい。 標準で用意されれば、統一したインターフェースの選択ダイアログになるが、 簡単だからといって、自作したら、微妙に見た目や操作やAPIの違う 俺式MyFontChooserが横行することになる。 なので、色やファイルの選択ダイアログのように、フォント選択も用意されても良いと思うよ。 commonsとか使うでしょ?
もっともな意見だと思う しかしあらゆる統一インターフェースを標準パッケージに入れる事はできない以上 使用頻度や要求に応じて取捨選択しなければならない あくまで私見だが、フォント選択はデフォでは不要と思う 純正のSwingデコレーションパッケージみたいなのを用意するのが良いと思うな
Windowsのフォント選択ダイアログもあまり使われてないような気がするしね。
プラットフォームによってフォントの指定とか取り扱いが全然違うからないんだと思ってた。
370 :
デフォルトの名無しさん :2005/10/21(金) 15:00:59
JTextPaneのテキストの自動折り返しってなんとかならないのかな?
371 :
デフォルトの名無しさん :2005/10/22(土) 00:24:11
>>370 ↓な感じでとりあえずできる
JFrame frame = new JFrame();
JTextPane text = new JTextPane() {
public boolean getScrollableTracksViewportWidth() {
return false;
}};
text.setPreferredSize(null);
JScrollPane sp = new JScrollPane(text);
sp.getViewport().setBackground(text.getBackground());
frame.getContentPane().add(sp);
frame.setSize(400, 200);
frame.setVisible(true);
でも起動しても、たま〜に画面が表示されないときがあったのでやめた。
これが原因か不明だが、レイアウト処理中にSwingの内部でデッドロック
がおきたみたいだった。text.setPreferredSize(null)が問題かも。
JTextPaneは特殊な表示系として考えればいいのでは? 入力が入るならJTextAreaで
373 :
デフォルトの名無しさん :2005/10/23(日) 15:08:38
Photoshopとかのツールパネルでさ、ペンボタンとか長押ししてると類似のペンのボタンがポップアップして選べるじゃない。 ああいう特殊なトグルボタンを作るにはどうすれば良いかしらん?
いろいろと方法はあるだろうけど 状態を持ってjavax.swing.Timerとかで マウスを放したらその遅延イベントは無効にするとかね 1回だけのイベントでいいのでjava.util.Timerのほうが使いやすいと思うけど Swingのイベントと離れるから注意
375 :
デフォルトの名無しさん :2005/10/25(火) 00:36:52
>>374 ありがとー。うまくできたよ。
javax.swing.Timerで250msほどトグルボタンを長押ししたら、JPopupMenuが開くようにした。
ただ、細かい問題も発生。
長押ししたまま開いたJPopupMenuの項目を、マウスボタンを離すことで選択すると、
どうもmouseReleasedイベントがトグルボタンの方でなくそのJPopupMenuのアイテムの方にぶん取られちゃうようで、
トグルボタンの外観が、変な感じになる。
どう変かっていうと、ボタンを押したまま離さずに(mouseReleasedせずに)ボタンの外にマウスを移動して、
またボタンの中に移動したりするときに、ボタンがへっこんだり元に戻ったりを繰り返すっしょ。あの調子になる。
見た目気持ち悪いしユーザーを混乱させるから、なんとかしてmouseReleasedイベントを
トグルボタンに強制的に送り込んで落ち着かせたいんだけど、どうすればいいかな?
勝手にmouseReleasedを呼べばいいだろ。
377 :
デフォルトの名無しさん :2005/10/25(火) 16:16:15
>>376 リスナのmouseReleased呼んでも意味ないんじゃ? あれはマウスのイベントを検知してどうするか、だから。
ボタンの挙動を押しっぱなしの状態から元に戻したいんだが、それを制御できるメソッドが多分ないので。
マウスが離された、というイベントそのものをトグルボタンにぶち込むしかないような気がする。
>>375 マウスがコンポーネントの外に出たら処理をやめれば?
>>377 processMouseEventは?
導入されたバージョン: 1.5以降だけど
380 :
370 :2005/10/25(火) 20:20:06
>>371 お返事の方、遅くなって申し訳ありません。
やはり、その方法しか無いみたいですね。
JTextPane(あるいはJEditorPane)がprivateのメソッドで折り返しの処理をしているみたいなので、
オーバーライドして折り返し処理を無くすのも無理そうですし・・・
兎に角、ありがとうございました。
>>372 秀丸みたいに、カラーリングされたエディタを作っているのでそれはちょっと・・・
キャレットも含めてすべて自前で描画とか
つ Win32API
結構自前描画は楽だよな
凝ろうとすればするほど苦労するけどな かといって楽しすぎると車輪の再発明
たのしすぎると?
結論: 車輪の再発明は楽しい
じまえびょうがはたのだよな?
Swingはいつからこんなにキレイで速くなったんですか。 前はキモくてモッサリしてたのに。
>>389 1.4ぐらいから。1.5になってから更に良くなった。
1.6から更に良くなるんでしょ? パイプラインがどうとか書いてあったし
俺の感覚だと1.3.1からかな
JTableがまだまだ全然遅いの何とかならんかね 普通にデータ入れるだけならまだいいけど、セルレンダラでちょっと何かすると厳しい
>>393 自分の場合、セルレンダラ使って遅くなることなんて無いけど。
どんなレンダラ使ってんの?
>>393 普通のデータもセルレンダラで表示してるんだから、
動作が遅いのはセルレンダラの実装が悪いからだと思うけど。
>>394 どんなって、自分独自のだけど色々文字を装飾できるやつ。
でも、単純に文字をボールドさせるだけでもかなり遅くなるよ。
1000行5列くらいで、全部の文字にボールドかけてスクロールさせてみれば
すぐに遅さに気付くと思う。
>>395 いや、初期のままだとほとんど速度低下に繋がる処理無いよ。
レンダラにコンボボックスをセットしてみたがまったく遅くはないぞ 8000件だが そのセルの値を数値で、コンボボックスの各項目にはリストを持っていて get(0)がコード get(1)が表示名 で、その表示名を現在地にセットするというやつなんだが スクロールしてみてもCPU使用率1%程度だし もしかしてすべてのセルにレンダラを生成してるとか
>>397 うーん、おかしいな
何もしないと10000行でもなんともないんだけど
文字をボールドしただけで1000行程度でもスクロールが
カーソルの移動に追いつかなくなるんだよね
全てのセルにってどういう意味?
setDefaultRendererで自分の作成したレンダラを指定してるだけなので
それは無いと思うけど
JLabelにて、JTextAreaみたいなワードラップって出来ます? HTMLをワードラップして簡単に表示させたいんですが。
DefaultRendererでBoldでComboBoxの中身表示やってみたけどまったくかわらんかったぞ カラムでのレンダラでももちろん同じ 例によって8000件
メモリの少ないマシンでは差が出るのだろうて。
メモリ使用量そんなにかわらんだろ レンダラひとつ用意した程度じゃ
CPUはギガヘルツ級のものを使ってるけど、 メモリは128MB程度しか積んでなかったり…。
メモリのせいにし始めてきたか boldで1000件程度は128Mでも余裕だよ 1回目のVmのロードが遅いくらいで レンダラのコードさらしてみ?
レンダラオブジェクトを8000個生成しているとか・・・
レンダラ内でFont毎回生成してみたがこの程度じゃ 世代別GCが綺麗に動くんでさすがに影響度ゼロだった あとはJavaでは当たり前になった無料プロファイラで起動してみて欲しいな GCがネックなのかメモリがネックなのかどの箇所がネックなのかすぐにわかる
>>404 なぁ、あんたOS本体のメモリ占有量がどのくらいだか知ってて言ってんの?
サンのページにも、
「メモリが不十分なまま実行すると、ディスクスワップが起こり、
性能に重大な影響が出ることがあります。」
って書いてあんだろーが。ま、使用してるOSによるけどな。
>>407 今確認してきた
2000で128Mで余裕で動くぞ
OSの使わない部分はおいだされるが
アプリひとつだけなら余裕
他のアプリ起動しようといたり何かするとからからなるが
そもそもJavaは実行したときヒープ最大まで使わん
16MBくらいのアプリも動かない環境ならしらんけど
boldの5項目の1000件程度でスワップするとかありえん
自前のコードの悪いのをマシンのせいにする
>>407 はおかしいよ
>>397 から
・なにもしないと1万件余裕
・自前のレンダラ使うと1000件でも重い
これはメモリのせいじゃないな。
ここまで話題に出てないけどVMのバージョンが違うとかはないの?
>393
とりあえず解決したかったらコード晒した方が早いのでは。
>399
↓こういうこと?(「JLabel 折り返し」でググった)
ttp://terai.xrea.jp/Swing/GlyphVector.html ところでJLabelのテキスト内にHTMLタグ書くと解釈される件はご存知?
テキスト中の < 等のメタキャラクタを < などに置換して、
改行を <br> に置換して先頭に <html> を付加したらどんな感じでしょうか。
>>408 2000の128MとXPの256Mでは、2000の方が空きメモリが多い罠。
>>412 XPの256Mでもやってみたがいけたよ
OS起動状態でのフリーエリアはXPのほうが少ないけど、はるかに快適に動く
使わないOSの部分はおいだしてるからだね
なんでいまだにメモリのせいにするんだ?
自分のコードが悪いだけなのに
414 :
412 :2005/10/29(土) 00:32:30
>>413 いや、俺は
>>393 じゃないよ。
ただ、OS本体のメモリ占有量の話をしているのに、
メモリ占有量の少ない例を出すのはどうかと思ったまで。
まあ、実際2000よりXPの方がメモリ管理をしっかり行っているから、
メモリ関連の不都合はXPの方が発生しにくいんだけどね。
>>393 は文字が変更される毎に、
全文字のスタイルクリア→ボールド判定→ボールド
とかやっているんじゃないの?
>>414 すまんかった
俺の予想ではレンダラ内でなんか重いオブジェクト生成してるとかその辺だと思うが
Fontとか毎回newしてもかわらんかったからなぁ
よっぽどの中身だと思う
つうかキミらJVMのバージョンもちゃんと書けと。
JIT切ったりしてたりしてな〜。 今時classic-vmってのもありえないとは思うが。
超初心者な質問ですみません。 JTableをセルごと及び全体で編集不可にすることはできますか? JTextFieldのようにsetEditableがないのですが・・・
>>418 javax.swing.table.TableModel の isCellEditable() を実装しろ。
420 :
418 :2005/10/29(土) 14:14:10
421 :
デフォルトの名無しさん :2005/10/29(土) 16:10:20
データベースから取得したデータをテーブルに表示し、 とある項目の値によってセルの背景を変えるという テーブルを作成しようとしているのですが、 表示するカラム数や、データベースのヘッダーの名前などに できるだけ依存しないテーブルにしたいのです。 何かいい実装方法はあるでしょうか?
>>422 前半の部分と後半の部分が一致しないんだけど
セルの背景を帰るだけならセルレンダラ
>>422 普通に作ればいいじゃん
項目の値を判定してセルの背景かえるだけなのに、むしろ何が分からないのかが分からない
列は初期化時に決めておかないといけないと思ってるとか
426 :
デフォルトの名無しさん :2005/11/03(木) 06:50:46
Swingで画像処理をするプログラムを作っているのですが, repaint()の呼び出しのタイミングについて質問があります. 自分のプログラムではクラスが3つあり,それぞれmain用, フレーム用,パネル用となっています.main関数があるクラスから, フレームクラスをインスタンス化します. さらにそのフレームクラスのコンストラクタでパネルクラスを インスタンス化し,フレームにパネルを載せています. それで実際の処理はmain関数でフレームをインスタンス化した後に, パネルクラスの中にある自分で実装した関数を呼び出し, repaint()を使ってパネルクラスの中にあるpaintComponentを呼び出して描画しています. この処理はある基準に達するまでループさせ,repaint()するものなのですが, どうも最初の2〜4回のrepaint()呼び出しが失敗しているみたいなのです. 処理回数ごとに変数をカウントアップし,paintComponentの中で変数の値を出力させてみると, 1,2,3,4と出る場合と,いきなり3,4,5と始まる場合があります. このpaintComponentはどの段階から呼び出すことが出来るのでしょうか?
たしかrepaintは「描画しろ」というメッセージを投げるだけで 実際に描画するかどうかはOSだかJVMが決めるから 短時間に何度もrepaintが発生すると一つにまとめられちゃうことがあった ような気がする。
イベントはペイントに限らずまとめても問題ないようなのはまとめられるケースがあるよ まとめられてる場合どこだったかのフラグがたったりしてるし、説明が必ずあるけど パネルの描画スレッドでのrepaintしてる部分のコードぬきだしてごらん SwingUtilityのinvokeandwait使ってないような気がする
Swingでイベント投げるときはなんかのキューに投げるのが正しい礼儀なんじゃなかったかい?
431 :
デフォルトの名無しさん :2005/11/06(日) 04:41:01
Swing起動遅いね。マカーだと問題が出るらしいがマカーは氏んどけばいい。
432 :
デフォルトの名無しさん :2005/11/06(日) 05:56:45
いつも直接 main()内でnew Frame()とかしてるんだけど SwingのGUI生成は↓みたいにするのが作法? public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater( new Runnable() { public void run() { initializeUI(); } }); }
>>432 そうした方が色々考えなくていいから楽。
JSpinnerにKeyListenerをセットしても反応してくれないな。 JSpinner.getEditor()にセットしても同様。 betaだからバグか。
なんのはなしだ
>>432-433 今まで何も考えないでnew Frame()してました。
なんでこうするの?詳細きぼんぬ
別にAWTスレッド以外でnewしてもいいよ
イベントディスパッチスレッドで処理しなくちゃいけないのは、 画面に表示されてからじゃなかったっけ?
Javaアプリケーションをスクリーンリーダー(主にPC talker)で読み上げてもらうには、プログラムにどのような文を組み込めばいいのでしょうか? 例えばボタンがあるなら「これはボタンです」というようなことです。
>>439 英語じゃよめないじゃん。
ハ ( l ',____,、 (:::} l l l ,} / \
ハ ( .', ト───‐' l::l ̄ ̄l l │
ハ ( .', | l::|二二l | ハ こ .|
( /ィ h , '´ ̄ ̄ ̄`ヽ | ハ や │
⌒⌒⌒ヽ(⌒ヽ/ ', l.l ,' r──―‐tl. | ハ つ │
 ̄ ', fllJ. { r' ー-、ノ ,r‐l | ! め │
ヾ ル'ノ |ll ,-l l ´~~ ‐ l~`ト,. l |
〉vw'レハノ l.lll ヽl l ', ,_ ! ,'ノ ヽ ____/
l_,,, =====、_ !'lll .ハ. l r'"__゙,,`l| )ノ
_,,ノ※※※※※`ー,,, / lヽノ ´'ー'´ハ
しょうがないから児童翻訳の手助けを借りて俺が訳してみたぜ。
シングルスレッドルール『一旦Swingコンポーネントが実体化されたら、コンポーネントに関係するコードはイベントディスパッチスレッドで実行すべし』
実体化とは setVisible(true),show(),pack() の3つのいずれかを実行すること。
すなわち、これらを実行する前のnew Frame()は、別にmainにいきなり書いても良さそうな気がするんだけど・・・
そのとおりだよ
そしてshowはsetVisible(true)とイコールですでに使用は推奨されていない
って
>>437 で答えてるじゃん
そういうことか。無言でURLだけ差し出されたから、意図がつかみとれんかった。すまんね。
>>444 おおお、そんな罠があるのか。
ちょっと気になった。
はやくなおしてくれよ、Sun
始動はあったとしても 構築はないんじゃないかな ただ、packも構築というのならそれもはいってしまうわけだが
LinuxとWinで動くGUIアプリつくるのに、SwingにするかQtにするか迷ってるんですが、 やっぱSwingでつくるとGCでときどき止まったりとかするんでしょうか?
リアルに止まるのは JDK 1.2 まで。 1.3 以降の GC は他の処理を止めない。
現実問題、それほど気にならないと思われ。 それに、規模が大きければQt以前の問題でJavaで組んだ方が楽。 規模が小さければGCも気にならない。
昔、JBuilder使ってたけど、空白の3秒とかあったな・・・ VMの最大ヒープサイズ(-Xmx<size>)近くまでメモリを利用すると頻繁に GCがかかって極端に遅くなる(GCがかかっても解放する領域がないので 何度もGCがかかる)けど、それ以外のGCではそれほど気にならないと思う。 JDKをインストールしたディレクトリの demo\jfc\SwingSet2\SwingSet2.jar でSwingのデモを触ってみるといいかも。
それって、世代別GCじゃないころの話?
FullGCはしれば今でもひっかかる ただ、メモリ使用量やアプリによってこの辺は変わる レスポンスが欲しいのかスループットが欲しいのかその辺考慮してオプション設定が必要
>>452 それってVMのチューニングの話?
ユーザが特定できない場合はどうしようもないよね。
そりゃGCの実装に依存するようなプログラミングするなよっていうのがJavaのスタンスですから
>>453 実行時のチューニングの問題
GCの把握というより、どのメソッドでどれだけメモリを食うかなどは
チェックするのは当たり前
SwingはGUI部分なのでロジックの外で動くからFullGCが動きやすいのは事実
だからこそインクリメンタルGCとかで対応するわけだ
5.0からは並列GCがデフォのインクリメンタルGCになったから
今後のマルチコアで効果が大きいはず
今はアプリが出来上がったあとにプロファイラはしらせてGCが本当にネックになってるか
グラフィカルに簡単に調べれるんだから簡単なもんだろ
456 :
デフォルトの名無しさん :2005/11/26(土) 22:48:53
Swingに挑戦します。 手始めにアプリの基本である 左ツリーの右上リスト、右下エディタ(またはリーダ) な分割をしたいと思います。 適切なContainer?の組み合わせを教えてください。 ずうずうしくてごめんなさい、でも頑張ります。
まずNetBeansをいれてみよう それでぺたぺたはりつけて試行錯誤してみては? おそらくやりたいのはJSplitPaneでの区画とおもわれ これだけ使うのであればレイアウトはあまり意識しないかもしれないけどね その中のパネル等でレイアウトが必要になる
>>256 XAMLに対抗でき技術としてMozilla ProjectのXULというのがあるぞ。
ほかにAjaxやAjax、Macromedia Flex
JavaOneTokyo 2005によると
JavaStudio Creator,
Java Studio Enterprise
が無料になったらしい。
GUI開発するには
NetBeansとどっちつかうのがいいんだろう。
だれか使い心地れびゅーよろ
それからJava SE 6 Mustangでは
デスクトップ周りがかなり進化しているようだ。
櫻庭氏がjavaOneTokyo2005のセッションで紹介していた。
タスクトレイの追加、タブのスクロールが追加された。しかし、タブを閉じるボタンが
無いのが残念と桜橋がいっていた。そこがSWTやFirefox, Operaなど
のタブブラウザなどにまだ負けていると。
Java SE 5 Tiger 虎の穴をつくった桜橋が
Java SE 6 MustangのサイトをJavaOneTokyo2005で早速紹介していた
Java SE 6 Mustang じゃじゃ馬ならし
http://www.javainthebox.net/laboratory/JavaSE6/
そこはもう読んだけどTigerのときと比べると衝撃は少ないなぁ スクリプト対応くらいじゃね?
たしかに衝撃は1.4や5.0に比べてないね デスクトップのやつも今でも使えるライブラリが標準ではいるだけだし OpenGLアクセラレーションが本当にWindows環境でもちゃんと動くかどうかが気になる 現行使い物になってないからね
NBのプロパティペインみたいなのはどうやって作るんですか? JTableを貼り付けてみたけど、何か違う気がする・・・ 実際に作りたいのは*の行は新規でそうじゃないのは更新、 値入れるところは文字列だったり右隅に編集ボタンなど動的に切り替えられるAccessみたいな作りです。
それはJTableで作れる セルレンダラとセルエディタを勉強しよう
まずは自由自在にデータをいじれるように DefaultTableModelの勉強からだね JTableはセルに入るのはObjectならなんでもいい つまり、クラスが自由に入るのだよ そして セルレンダラは表示方法 セルエディタは入力方法 セルのオブジェクトはInteger型でも 表示はその値に応じたプログレスバーだったり 入力方法はコンボボックスだったりと非常に多機能すぎ、といいたくなるくらいの ものだから勉強すればするほど便利になっていくよ JTableとJTreeをまじめに書くとそれだけで本ができあがるくらい とっはよくいうが、実際にそこに踏み込んだ本が一冊もないのがすごいな おそらくこの辺は社外秘のドキュメントにまとめられてるとかなんだろうけど
>>466 > セルのオブジェクトはInteger型でも
> 表示はその値に応じたプログレスバーだったり
うわ、これはかっこいいな。
ちょうど進捗管理項目を用意しようと思ってました。
%表示より断然こっちですね。
468 :
デフォルトの名無しさん :2005/11/27(日) 01:38:20
>>460 リンクthanks
読んだところ、StAXが良い感じ。
巨大XMLを生成するのにDOMではやってられず、
文字列で直に出力するのも賢くない感じで、
どうしたもんかなぁと思っていたところだった。
Scriptは適用できる場面を思索中。色々ありそうなのだが、
現状では「Javaでやれば?」と言う思考が邪魔をする orz
>>468 > script
俺は設定ファイルの更新に使う予定。
下手なGUI作らずともBeanを直接書き換えられるのは魅力。
あとOSXのダッシュボードみたいなこともできるようになる。
タスクトレイと組み合わせれば強力なデスクトップ支援アプリに育つよ。
設定ファイルの更新か。 俺だったらAntやMavenとかでやってしまいそう
メニューコマンドとスクリプトを1:1で関連付けたXMLファイルとかあれば カスタマイズがしやすいエディタとか作れるね プラグインという考え方が変わってくるんじゃない?
>>466 JTableだけで一冊書いた本はあるだろう
>>472 JAVA GUIプログラミング SWING の3巻目がほとんどJTable。
今探してきたが結構古い本だ、光陰矢のごとし。
Windows XPでSwingのメニューやツールチップに影が付かないのがすごく気になる。
そんなに詳しかったっけ?あの本 ぱらぱらと見た感じではあまり詳しくはのってなかった様な気がしたが またあとでみてみよう
>>474 気になるどころか、そんな違いがある事に初めて気づいた・・・
自分でLAF作ればつけれるのでは
JTableは面白いけど、わざわざシングルラインな行幅を太くしちゃうようなGUIにはしちゃいけねーよ。
JSplitPaneを使って ├ のような仕切りを作ったんですが horizontalな仕切りが右へずらせません。verticalな仕切りが邪魔をしてると思うのですが どのように対処したらよいのでしょうか?
>>482 そんなの案件しだいだろ
スペースが足りなければ1行に複数行かくことはある
基本的に俺も横方向だがね
業務系だと結構あるよ
>>482 JSplitPaneのコンテナの中にJSpritPaneいれてるならふつうにうごくけど?
>>481 のサイト解説サイトのように見えて
よくわからないとかこれでたぶん大丈夫とか
やばい感じがぷんぷんとするよね
JSplitPane left:JPanel JTree right:JPanel JSplitPane top:JPanel JTable bottom:JPanel JEditorPane こんな感じの構造なんだけど、何故かできない・・・ JPanelは全てBorderLayoutで全部Centerに放り込んでます。
もしかしてJScrollPaneはってないきがする
JTree,JTable、JEditorPane等はJScrollPaneの上に貼り付けるのが必須だと思っていい
>>488-491 できました!ありがとうございます。
ただこれだとJTreeとJTableが相対的なリサイズを持たないのですが
これはJPanelをはさめということですか?
相対的なリサイズを持たないって具体的には?
>>493 最大化すると一緒に大きくなってくれないって意味です。
ごめんなさい。その部分だけLayoutがWestになってました。 改造中に余計なドラッグしちゃってたみたいです。
勝手に割合で増減はしなかったとおもう イベントに応じてやるしかないな ただ、ピクセル単位のほかに比率も使って設定、取得できるのでさほどむずかしくはないよ
拡大縮小時に割合でかえないのはOSの動きに合わせてるからでしょ Windowsだってそうだし
独自のLookAndFeelでメニューに影を付けたい人にヒントを置いておきますね。 つjava.awt.Robot
初歩的で申し訳ないんですが質問です。 昨日からVisualStudioを使ってアプリ作ってます。 ↓のような感じでJButton1押下時の処理を記述しております。 private JButton getJButton1() { if (jButton1 == null) { jButton1 = new JButton(); jButton1.setBounds(400, 30, 73, 24); jButton1.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { 〜ボタン押下時の処理〜 }); jButton1.setText("登録"); } return jButton1; これがeclipseの「実行」⇒「次を実行」⇒「Java Bean」で実行するとちゃんと動くのですが、 JavaWebStartを使ってTomcatから配布する形にすると addActionListenerの行で「java.lang.NoClassDefFoundError」が発生して起動できないという事象が発生します。 ボタン押下時の処理を全部消すと一応起動はするのですが・・・。 何か設定とか要るんでしょうか?
503 :
501 :2005/12/02(金) 21:22:34
>502 さん ご指摘のとおり、匿名クラスのファイルが配布ファイルに含まれていませんでした。 匿名クラス使ったこと無かったのでそんなものが作られていたとは、もっと勉強します。 どうもありがとうございました。大変助かりました。
_ _/ | / \ | __ / | | | __ _/ ____/ | _| _| / | |\ | / / | \/ | /  ̄ _| _| __/ /\___/ヽ (.`ヽ(`> 、 /'''''' '''''':::::\ `'<`ゝr'フ\ + |(●), 、(●)、.:| + ⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::| ⊂l二L7_ / -ゝ-')´ .+ | `-=ニ=- ' .::::::| + . \_ 、__,.イ\ + \ `ニニ´ .:::/ + (T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./| . ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ \l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、 ___________________________ __ │ │ │ │ │ │ │ │ │ │ │ │ │ │| | │東│東│南│南│西│西│北│北│ │ │發│發│中│|中| │ │ │ │ │ │ │ │ │ │ │ │ │ │| |
そんな安くていいんだ。ラッキー★
507 :
デフォルトの名無しさん :2005/12/08(木) 00:59:25
まだいるか〜? SwingがいつかまともなGUIになると希望持っているやつ・・
>>507 どのへんがマトモじゃないと思ってるのか詳細教えてくれ。
ワシが最後に触ったSwingはXPのL&F未対応だったんだけど、今みたらテーマまで対応してた。 ちとびっくり(しかも速い!) 実はSWTよりSwingの方が好きなにためらっていたが今その理由が消えた。
速くなったなSwing。SWT派だけど、正直今はSwingの時代だと思う。
>509 Swingもだいぶお洒落になったもんだな むかしは味気なかったのに
FreeMindやらJUDEやら使ってみて 結構普通なんでSwingもありだなあと 思い始めてきました。 ただ、ZendStudioもSwingだと思うんだけど すんごい重いんだよねぇ。再描画が間に合わない。 JBuilder4のころみたい。懐かしい。 どの程度の事やり始めると重くなるんだろう。 それか軽く作る作法みたいなTIPSをまとめた 本でも出てくれれば嬉しいなあ。
使ったこと無いけどGUIの設計がイケてないんじゃないの? 何かを表示するたびに裏でいろいろしないといけないような設計になってるとか。
JBuilderは5か6あたりが神だったな
8だっけ?なんか半年でバージョンアップしてたの。 あれがある意味神だった。
画面表示部のクラスの分割方法がわからん。。 1画面・1クラスにすると複雑な画面だとかなりの行数いくし。。 みんなどうやってんの?
8は1.4系に始めて対応したバージョンだったと思う でも7だったか8から価格を一気に跳ね上げ他結果 ユーザーにそっぽを向かれたという分かりやすい例 そのあたりからEclipseやNetBeansが業務で使われだしたというのもある
NetBeansを業務で使う!? いやNetBeansは個人的にはEclipse以上とは思うが 企業がNetBeansの魅力に気づいているケースなんて稀だろ
>>519 GUI絡みだったら使ってたのかも。俺は知らんが・・・
>>519 プラグインのセットアップの手間とか考えたら業務で普通に使うだろ
Sun純正なわけだし
Javac使うだけにJDKの制御がわかりやすい
GUIとWEBアプリなら割と使われてるよ
EJBもNetBeansで、というのはこれからかな
EJB3はNetBeansがかなりいいと思う。 そして、JSFも、パレットのD&Dが便利。 TSSのEclipseWTPのところのコメントにあったけど、EclipseはJavaSEのためのIDEで、JavaEEのためにはNetBeansがいいと思う。
ベテランSE40歳「でもSwingって遅いでしょ?EclipseはSWTじゃんw」
WEBアプリ開発は2年位前まではわりとあったけど うちのまわりでは最近は業務系はないからね。 使い勝手の悪さと開発効率の悪さが問題になって みんなリッチクライアントとかになっていった。 特に効率の悪さは純粋にコストに跳ね返るからね。 VEでGUI、JBuilder、JDev、NetBeansと評価したけどVEだけは論外 JDevはGUI部分はJBuilderの古いやつとほぼ同じだが重さが最強 JBuilderは1本限りではコストが高いのとGUI部分は多少劣る。 とNetBeansになった。 古いJBuilderもあるけど、1.3時代のものだから JDK差し替えるとGUI部分がうまく動かなくなるのがねぇ。 当時は重いと思っていたJBuilderも今のマシンだとEclipseとかNetBeansとかと 速度変わらん。むしろ軽い。 当時は最強だったがリファクタリングとか折り畳みがないとか今では機能不足過ぎて・・・。
>517 ある機能の呼び出しや結果表示に 画面のあらゆる部分が使用されうるなら 1クラスにしてしまった方が自然だと思う。 たとえ複雑な画面でも。
>>507 何のために俺が
>>5 を書いたのかああぁぁ!!!!
SwingのLaFが気に入らなければ自作もできるのだああああああぁぁ!!!!!
>>517 画面構築用のコードなんか、ツールに任せとけばいいんだから問題ない。
528 :
デフォルトの名無しさん :2005/12/09(金) 20:03:22
俺、今Visual EditorでSwingやってるんだけど、面倒に感じてる。 なんというか、MVCのうちのViewしか自動でできないじゃないか。 イベントリスナの生成と追加まではマウス操作でできるけど、 その中身のControllの部分は自分で延々と書かざるを得ない・・・。 Cとか、欲を言えばMまで面倒見てくれるソリューションは無いものか・・・。
MVCのMとVとCを自動生成してくれれば、やることなくてウハウハだな、兄弟。
MとVとCを自動生成してくれればおれたちゃクビだな兄弟。
>>517 1クラスに何もかも突っ込まなくてもデータはデータストアクラスつくっときゃいいじゃん。
Modelでデータストアから表示したデータを引っ張り出せばいいじゃん。
何かあったらオブザーバパターンで同期とりゃいいじゃん。
という感じでやればパネル毎とかに分割しても大丈夫。
コンポーネントの初期化が邪魔ならファクトリパターンを使えばよい。
ファクトリパターンじゃなくても単に初期化する関数を作ってやればいい希ガス。
>>528 そんなGUIツールあるか馬鹿。
何もしないで自動でアプリケーションが完成するなら、俺たち全部失職だよ。
モデルまで自動生成ワラタ でも、配置以外にもうちょっとつっこんだところをやってほしいというのは多少あるけどね
>>534 Swing版Struts作ったら使ってくれるか?
Strutsってビューの遷移とデータの管理がメインだから GUIアプリで必要には見えんな オープンソースのSwingのDB連携コンポーネントが あると喜ばれると思われ
>>536 O/Rマッパー系のライブラリをクライアントでつかえばいいやん。
別にサーバー専用じゃないっしょ。
要するに、JTableを何とかしろってことか?
>>537 ORマップとGUIコンポーネントの連携は?
用はぽとぺたでAccessみたいなのが創れれば業務系でヒットするのでは、ということなんだが
RowSetを管理するコンポーネントと 各種コンポーネントはフィールド名がマッチングされていて データのロード、セーブができてればそれでいい
>>541 ObjectBrowserのテーブルビューワだけでいいのかな?
それなら何とかいけるかも。JDBC差し替えればどのDBでも使えるか・・・
> ORマップとGUIコンポーネントの連携は? 普通にDIコンテナかませばいい。 Struts + Spring + ORM が Swing + Spring + ORM になる。 JSP や taglib で長時間かけてショボいビュー作ってたのが Swing で短時間にリッチなビュー作れる。 マジおすすめ。 データをJTable に流し込む処理くらい手で書きゃいい。
>データをJTable に流し込む処理くらい手で書きゃいい。 たったこれだけのことができない馬鹿がこぞってHTML書いてるってことか。 悲しいね。
JTableにながすのは手で書いてる、というかライブラリ化はしてるけど、 外部からちょっかい出すんじゃなくてやはりJTableを継承したものにそれなりの 実装したほうが綺麗かな、と思ってね RowSetはPostgresとかMysqlが未実装なままなので使いにくいけどな 結局自分でRowSetもどきをインプリメントする必要がある RowSetそのもののを実装すればいいという話もあるが、 あれはひどいAPIですね
JTableだけでもかなり需要はありそうだな データを検索して一覧表示、選択して詳細表示とか普通の処理だからな ただ、セルエディタでなんかやろうとすると結局アプリ単位で挙動が必要になるのがつらいところ マスタメンテ程度なら一元化できるだろうけど
>>509 これOSなんなのだろう。WinやMacとは違うと思うけど。
GNOME on Unixかな。
Vistaでしょ
メイリオ使ったスクリーンショットも見たいっす。
550 :
デフォルトの名無しさん :2005/12/10(土) 00:46:05
JTableの1行データにアクセスするときどうしてる? 例えば、Book クラス class Book { String title; String author; int price; } をテーブルに追加・更新する場合 DefaultTableModelのsetValueAt(Object value, int row, int col)や addRow(Object[] rowdata)で値をいれるか それとも、Bookオブジェクトを追加するメソッド(addBook(Book book)等)をTableModelを 継承したクラス(BookTableModel等)で実装するか セル編集のときはsetValueAtで行い、集計処理やDB格納などはList getBooks()みたいに オブジェクトを取り出して処理してるけど、クラスごとにTableModelを継承した クラスをつくらないといけないのがちょっとだけ面倒。かといってsetValutAtだと 属性だけが追加・更新されBookオブジェクトがなくなってしまうし。
DefaultTableModelを継承して ユーザーオブジェクトの更新のところをオーバーライドするとか まぁ前者が理想だな
553 :
デフォルトの名無しさん :2005/12/10(土) 02:19:35
>>534 いや、Mに関しては自動生成ナンセンスなのは分かってんだけど、
なんていうかな・・・。
コレクション以上に抽象化してくれるような・・・。まぁここらへんは
すでにGUIツールの範疇じゃないんだろうけど。
MacOSXでいえばCocoa BindingとかCore Dataとか、色々と便利な
モノがあると聞いたことがある。
グリッドが高機能で特にデータ連携部の抽象度が高いと 初期段階の作業効率はいいんだが あとからお客さんの追加要望なんかがすんごい細かいと、 融通が利かなくて泣く。 散々VC++で経験した。
>>554 kwsk
俺もなんかinvokeLaterするしかない状況があったけど何だったか忘れたなあ。
ところで、VisualEditor の吐くコードってどうよ。 全部のコンポーネントに getメソッド作って、 リスナとかは登録時に無名クラスで直書きってのは。
setSizeするよおうなのは信用できない
遅延生成をやる以上getterは必要だろうな。
>>553 ORMと連携しやすいIFもっていて、「一般的な」用途を満たすTableModel
の実装をフレームワークとして提供してくれってことやな。
「一般的な」TableModelなんてあるかなあ。ユーザはリッチGUIになった
とたんに好き勝手なことをいうもんだと思ってるんだが。
・・・というか、ココ最近のWebアプリって、HTML製のViewが持つ操作性の制約
を悪用して、大手ベンダが手抜きしているだけなんだよなあ… orz
だからまともなところは2年ほど前からどんどんリッチクライアントに行ってる 一方いまごろWEBアプリ最強といいつつ、入力系なのに社内システムに採用させようと がんばってるおっさんもいる
>一方いまごろWEBアプリ最強といいつつ、入力系なのに社内システムに >採用させようとがんばってるおっさんもいる まあ、フットワークの重い腐れSIerなら、蓄積したノウハウをすっぱり 捨てるなんてできないだろうからなあ。あーあ。
>>553 ObjectWebのCayenneというO/Rマッパーは、Cayenneを経由してDBの
データを表示するための、Swing用クラスも提供してるよ。ポトペタでDBデータをリストに表示できる(らしい)。
Cayenne自体、Core Dataの前身であるEnterprise Object Frameworkのコピーみたいなもんだし。
残念ながらCocoa BindingはOS X + Objective-C限定だなあ。
手が空いたら、BeanのプロパティをそれぞれJTextFieldとかのコンポーネントに割り当てるフレームワークと、その設定をするNetBeansのプラグインを作る。 きっと作る。
Beansというかそのへん簡単にやってくれるのがRowSetの役割なんだけどな・・・
JTextFieldとかJTextAreaとかJComboBoxとか、それぞれ値の取り出し方が違うから、そこを平滑化してくれるものが欲しい。
566 :
デフォルトの名無しさん :2005/12/10(土) 17:16:28
ComboBoxは統一的に扱うのは多少難しいね データの値と表示項目は大概違うから
>>555 いや大した話じゃないのよ
ここの一覧はやっぱりこういう条件の場合はこう出してとか
集計行もブレイクして出してとか
こういう条件の時は更新に別のテーブルに更新に行ってとか
要望があると、サードパーティ製品にありがちなんだけど
グリッドとレコードセットががっつり組んでて
Updateメソッド一発で編集内容を更新とか楽な事やってると
変更が大変なんですよ・・・・。
569 :
デフォルトの名無しさん :2005/12/10(土) 18:34:06
>>513 FreeMindって
あのMindMapの?
おれが知ってるJava製FreeMindはMindMapを書くツールだ。
>>569 そうそう。起動にちょっとかかるけど
起動しちゃえばわりと軽かった。
Swing見直そうと思ったきっかけ。
572 :
547 :2005/12/11(日) 03:37:15
>>548 ありがとう。Vistaか、Windows最新のやつ、興味なかったので、全然わからなかった。
573 :
デフォルトの名無しさん :2005/12/11(日) 13:57:01
Swingは素のAPIなんで、DBとかとの連携とか細かいのはサードパーティでどうぞってことでは? JBuilderが業務系で使われてたのはそういうことだと思うし Win32APIとおなじくあくまでも素
なにか構想描くときみなMindMapを描いているのか。 新しい仕様を考えるとき 新しいものを発明、発見するとき、 新しいプロジェクトを立ち上げるとき みなMindMapか
>>567 SwingのMVCはGUIコンポーネント単位(JTable(VC), TableModel(M))であるけど
ぱっと見てCocoaは画面単位でMVCのフレームワークがあるみたい
質問です。 JavaWebStart使ってSwingのアプリケーション配布する場合に <j2se version="1.4"/> と書いてJREのバージョン指定すると、 クライアントの端末にJREの1.4.X以外のJRE(1.5等)が入っていた場合に、 JRE1.4の自動ダウンロードが始まってくれますが、 JREが全くインストールされていないクライアントの場合、jnlpファイルへのダウンロードダイアログが開くだけで、 JRE自動インストールが出来なくて困っています。 何とかJREなしの環境でも自動インストールさせる方法って無いのでしょうか。
580 :
578 :2005/12/13(火) 11:02:13
>579さん ありがとうございます。うまくいきました。 要ActiveXなんですね。
Swingの本はどれがオススメですか? リファレンス的なのがいいのですが
582 :
デフォルトの名無しさん :2005/12/13(火) 16:26:39
3本セットの奴しかない気がする・・・ 高いんと思うんだったら変な表紙の奴のほうで・・・
比較的まじめに書かれてるのはオプショナルパッケージの時代の SwingによるJavaGUIプログラミングだが さすがに古過ぎて一部おかしいところも見受けられる
584 :
581 :2005/12/13(火) 16:41:19
3本セットのやつとは「Java GUIプログラミング さらにパワーアップしたSwing」の1〜3ですか。 まずはVol.1をマケプレで買ってみようと思います。
JavaのTutorialはやったの? あれ一通りやればわかった気になれるよ。
実際のところおかしいと思ったらその場で調べればすぐに分かるからな たぶんSwingで今のところおかしいと思うのはセルエディタとフォーカスの問題あたりくらい
>>583 1.4ぐらいから新しく書き直されたでしょ
>>587 その表紙が変なほうのSwing本、実は評判は良かったりするんだよな。
Swing系でこれだけまとまって、きちんと紹介した本はないと言われてるくらいで。
ブラウザサンプルを起動するとエロゲメーカーのページに飛ぶのは如何なものか。
俺イズムをぐっとこらえればベストセラーだったろうに・・・ Kitty on your lapの人みたいな微妙なダメダメさがw
俺も持ってるなあ、その本。いい本だよね。 会社の机の上に放置するのが、ちょっと恥ずかしいのが難点。
594 :
592 :2005/12/14(水) 00:54:03
調べてみたら同じ人だったΣ(´д`)
しかし絶版。 表紙変えて出しなおしてくれればいいのに。
lainたん…ハァハァ…。 って男かよ!
597 :
デフォルトの名無しさん :2005/12/15(木) 03:08:18
大村忠史のJava GUIプログラミング さらにパワーアップしたSwing」全3巻持ってます。 とても役に立ってますよ。特にJTableについては、ほしい情報がほとんど書かれていました。 初級から上級まで、満足させられる内容で、まさしく戦うSwingプログラマのバイブルといえます。 柏原正三の「Java GUI コンポーネント完全制覇」もいいですよ。テキストコンポーネントに ついてはこの本が一番詳しいんではないでしょうか。「さらにパワーアップしたSwing」と 「完全制覇」はだぶっている部分があまりなく、結果的に補完しあうような関係になっていると 思います。 それから、あまり話題にのぼらない本ですが、David Flanaganの 「Javaプログラム クイックリファレンス」も大好きな本です。この本はSwing専門ではないの ですが、Swingに関する内容もかなり含まれています。JEditorPaneを使って、Webブラウザが 簡単に作れることが書かれていて、驚かされました。また、ドラッグ&ドロップによるデータ転送 のやり方も非常に詳しく書かれていて、とても助かりました。 他にも「さらにパワーアップしたSwing」と「完全制覇」には書かれていない、興味深いテーマが 非常に多く網羅されています。また、本格的に大きなプログラムを作るときの設計の仕方についても 参考になると思います。これは中級者以上でないととても読みこなせない内容ですが、末永く つきあえる良書だと思っています。
あの本絶版になってたんか。 表紙と文字色の読みにくさはともかく 内容はかなり良かった。 文字色がどうしてもダメで買わなかったけど。
>>599 少し覗いてみた限りでは、目次で見て必要なことはちゃんとあるって感じ。完全に同等かどうかはわかりません。
本とは色使いが違ってる。本のほうが読みやすいかな?
質問させてください swingは以前に比べたらとても軽快に動くようになったと聞きましたが、 例えばCPU1G、メモリ128MB程度のPCでJTableを表示させようとすると、 表示までに10秒とかユーザーがストレスを感じるくらいのレスポンスになってしまうのでしょうか?もちろん個人差の問題でもあるとは思いますが。 java web startを使う形で運用したいと思っているのですが、うちの社内だとまだCPU1G未満だったりOSがNTだったりのPCが多いので。
メモリが128Mときついことはきついが OSがNT4ならサクサク動くよ まず遅いかどうかやってみたらどうかね すぐ作れるんだから
>>602 128Mでも動くことは動きますか
安心しました
とりあえず簡単なものを作って、SWTのtableとどちらが早くて使いやすいか確かめてみます
あと
>>473 の本ですが、やはり1巻2巻と買わないと内容は理解できない内容になっているのでしょうか
JTableに重点を置いて勉強したいので、なるべくJTableについて多くページを割いている本を探しているのですが
まずどういったテーブルを出したいかだね Swingのテーブルはテーブル載せる一つ一つにComponentのせれる つまり、JPanelのせてその中自由に配置することが可能 やり方わからん買ったらまた書き込んでくれ NetBeansで初期のカラム名、行数指定で配置きるから それでまずは2000行くらいつくってみては? たぶん、思ってるより重くはない
「セル」一つ一つの書きミス
>>604 netbeansですか。
ありがとうございます
早速やってみます
607 :
デフォルトの名無しさん :2005/12/19(月) 23:57:20
>599-600 本のほうが解説は豊富に載ってるよ。 サイトに載ってないこともいくつかある。 俺が知ってる限りではJTreeの使い方など。 +αくらいじゃないかな? とりあえずかなり読みやすい。
608 :
デフォルトの名無しさん :2005/12/20(火) 02:13:04
JTableだったら大村忠史の「Java GUIプログラミング さらにパワーアップしたSwing」 で決まりですね。各セルにいろんな種類のコンポーネントを貼付ける方法も書かれています。 自分はこの本でいろいろ実験しましたが、普通に使っている限り、JTableは結構軽いですね。 しかし各セルにコンポーネントを貼付けると、ものすごく重くなります。まあマシンの処理 速度にもよるでしょうからご自分で確かめるしかないと思いますが。
セルにコンポーネント貼り付けてもNT4なら1万行くらい合っても普通にサクサク動きそうだが むしろ1万件のデータを格納するモデルを作るほうで時間がかかるとか
JTableってパフォーマンスの話題になると、 「重い」「重くない」の両方出るなあ。 組んだやつによるのか、それとも実行環境によるのか……
611 :
デフォルトの名無しさん :2005/12/20(火) 12:14:27
両方
>>610 JTableの内容次第。
複雑なことやろうと思えばいくらでも複雑に出来るから、
重い時もあれば軽い時もある。
JTableの重い軽いを、口にする時のルール 「重い!」というヤツは、「この程度で、こんなに重くなる」というソースをさらせ 「いや軽い!」というヤツは、「これだけのことをしても、こんなに軽い」というソースをさらせ
軽いという根拠のほうはきついんじゃないだろうか
普通に書いてどこがおもくなるかわからん なかでsleepいれてるとかか?
Imageとか使うとちょっと重くなったことがあったような
昔セル連打ら書いて、中でnewしまくりのString結合しまくりしだったら重かった 先輩に見せたら殴られた
大村さんOS/2デベロッパーの最後の砦だったなぁ。
環境にも寄るかもよ。 P4 3GHz超でJava動かしてる香具師も居れば、Celeron 500MHzで動かしてる香具師も居るだろう。 メモリだって4GBと64MBだと全然違うだろうし。
JTableとJTreeを極めたらSwingも楽しくなるんだろうな れんだらーが全ての決め手ってことだね
厄介なのはエディタのほうだけどな
で、極めた結果重すぎて誰も使えない物が出来上がると。
だから重いのはお前のコードが悪いからだろ
重くなる理由は何?GDI?newしまくり?
628 :
デフォルトの名無しさん :2005/12/21(水) 10:27:14
JButtonのテキストなんかに日本語使いたいんですけど、どうすればいいですか? jdk: 1.4.2
? 普通に指定すれば?
new JButton("にほんご");
631 :
628 :2005/12/21(水) 10:38:03
普通に指定しても□□□となってしまいます。 GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames() が日本語フォントを返さないのと関係あるんでしょうか?
Linuxでfont.propertiesの設定をしていないに一票
>>631 fallbackディレクトリにフォントのシンボリックリンクをつくりまくれ。
servletから動的に生成した文字列を引数に、JTableを起動させることは可能なのでしょうか
可能
質問の意味がわからん。 もっと詳しく書いてくれ。
>>637 サーバ側のservletの段階で開くデータベースを決定し、
そのデータベース名を引数にしてjwsを使いクライアントにJTableを使って内容を表示させようと思うのですが、
JTableの中からデータベースを読み込むことができるのはわかったのですが、
データベース名をJTableに渡すやり方がみつかりませんでした
jws起動できてるならそれでパラメータ渡せば? つーか普通はjws使えるならクライアント起動した後に選択とか いろいろとやるほうがらくだけど
>>638 servletからjwsへパラメータでデータベース名を渡す。
jws内(というかJavaApplication内)でデータベース名を受け取るTableModelを作成。
そのTableModelを使用してTable表示。
で、いいんじゃないか?
ただ、639氏の意見がもっともだと思うけどね。
>>639-640 確かにクライアント起動後にデータベースを選択できないと不便でしょうがないですね。
データベースを選択するごとにいちいちwebページからやりなおすというのは。
レスありがとうございました
TableModel、Tableをもっと勉強してきます
642 :
デフォルトの名無しさん :2005/12/22(木) 04:21:26
おはようございます。 SwingでSWTのGroupに相当するものはありますか?
>>642 JPanelにTitledBorderを指定ってことかな?
644 :
デフォルトの名無しさん :2005/12/24(土) 01:17:12
賢者の皆さん、毎度お世話になってます。長いので2回に分けます。JEditorPaneでhtmlを 表示するとき、<font size=5>などとサイズをタグで指定しない場合、基本フォントサイズの font size=3で表示されますが、これがちょっと小さすぎるので、基本フォントサイズを size=5くらいに設定したいのです。そこで、以下のコードを実行しましたが、abcdだけ 依然としてsize=3で表示されてしまいます。efghはもちろんsize=5で表示されてくれます。 こんな簡単なことはすぐに実現できると思っていたのに、世界中のサイトを調べても 解決方法が見つかりませんでした。というか、ほとんど話題にすらなっていませんですた。 StyleSheet#addRule("body{basefont-size:large}")みたいな感じで、設定できるのでは ないかとも考えましたが、そもそもbasefont-sizeなどという属性はないですよね。また、 editorPane.setText("<html>abcd<font size=5>efgh</font>");の部分を editorPane.setText("<html><basefont size=5>abcd<font size=5>efgh</font></basefont>"); としてみても結果は同じでした。結局現在のところ基本フォントサイズを変更する方法は存在 しないのでしょうか。StyleSheetのjavadocにも実装が不完全と明言されていますが、これが まさに不完全な部分なのでしょうか。
645 :
644 :2005/12/24(土) 01:18:25
続き import java.awt.*; import javax.swing.*; import javax.swing.text.html.*; public class StyleSheetTest extends JFrame{ JEditorPane editorPane; public static void main(String[] args){ StyleSheetTest f=new StyleSheetTest(); f.setBounds(0,0,400,400); f.setVisible(true); } public StyleSheetTest(){ editorPane=new JEditorPane(); editorPane.setEditable(false); editorPane.setContentType("text/html"); StyleSheet ss=new StyleSheet(); ss.setBaseFontSize(5);//ベースフォントサイズを設定しているつもり。 editorPane.setDocument(new HTMLDocument(ss)); editorPane.setText("<html>abcd<font size=5>efgh</font>"); getContentPane().add(new JScrollPane(editorPane),BorderLayout.CENTER); } }
646 :
644 :2005/12/24(土) 18:07:38
私の環境はJ2SE 1.4.2ですが、どなたかJava SE 5.0で試していただけないでしょうか。 自分のマシンにはJava SE 5.0はインストールできませんので。 よろしくお願いします。m(_ _)m
内蔵レンダリングエンジンってHTML3.2時代のものでしょ? スタイルシートにしても保障できるようなものじゃないし 最も内蔵ブラウザはイベントの問題で5.0以外使い物にならないんだけどね
>>646 > 自分のマシンにはJava SE 5.0はインストールできませんので。
なんで?
それと、Java2 SE 5.0ね。
バックアップ取って試せよって話だなあ。 開発環境ぐらい整えろよ。
SDKなんて普通に複数入れても問題でないし
651 :
644 :2005/12/24(土) 23:34:06
Java SE 5.0です。 basefontのことについては、他のことをやりながら時が解決してくれるまで 待つことにしました。ありがとうございますた。
Java SE 5.0ってなにさ
これは解決せんだろうな CSSサポートなんて追加でやるとはおもえん
間違い指摘してやっても認めないやつっているんだな
Java SE になるのは6.0からだけど Java SE 5 と呼んでもいいんじゃね? 5と6で呼び分けるのめんどくさいし
656 :
デフォルトの名無しさん :2005/12/25(日) 12:49:24
その後藤タンの記事間違ってるから
>>655 Java SEになるのは、6.0ではなくて6
6が出るころならかまわんと思うが、いまはまだJava2SE5.0だろ。
そのへんは個人差あるかもしれんが、少なくとも指摘をうけてからいいはるもんじゃない。
>>657 その間違いひどいね。
JavaOneでなに聞いてたんだか。
Java SE 1.4とか書いてるし、わかってないみたい。
以前一部でうわさになった記事もわりとすごいよ
http://pcweb.mycom.co.jp/articles/2005/10/25/beaworld1/ 要約すると
・SunのVMは遅い、それにくらべてIBMやBEAの早いこと。
理由は
・並列GCがある
・世代別GCがある
・JITがある
比較してるのは1.0あたりかな・・・
1.3時代ならBEAやIBMは確かにそれなりに利点もあったけど
結局1.3.1とか1.4とか5.0とかどんどん高速化してるのと
ユーザー数が多いために比較的安定化しやすい、
チューニングのノウハウがたまりやすいってことで以前ほど利点はないんだよね
まあそれは発表まんまってことで。
BEAが比べてるのは1.1時代ってカワイソス
>>652-659 そんな大方の人間にとってどうでもいいことを
スレ違いでつづけるクリスマスってどうよ。
間違ってると恥ずかしいぞ。
665 :
デフォルトの名無しさん :2005/12/25(日) 18:20:12
私がまちがってました。Java SE 5.0ではなくJava2 SE 5.0でした。 大変な過ちですた。
悪いのはごとーたん
ライトニングJavaのほうは間違ってないと思うのでがんがれ コンカレント周りや新コレクションはネット上でも日本語情報が少ないので あげると注目記事になるかもよ
>>644 フォントの件だが、JEditorPane#HONOR_DISPLAY_PROPERTIES見た?
669 :
デフォルトの名無しさん :2005/12/26(月) 09:18:30
HONOR_DISPLAY_PROPERTIESとはJava 2 SE 5,0から導入されたフィールドですね。 componentA.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); のように使うらしいですが、これで何が起こるのかはわかりません。 いずれ、5.0が利用できるようになったら、試したいと思います。 ありがとうございました。
670 :
669 :2005/12/26(月) 09:23:17
訂正 editorPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); でした。
mycomは信じてないなあ。ググッてもキャッシュ拒否してるから読まないし。
基本的過ぎる質問で恐縮なのですが。 表示するデータがコレクションを含んでて、その要素がさらにコレクションを含んで、 要素には最上位と同じクラスが再帰的に入ってます。 そのようなデータを複数のJTableやJTreeで表示/操作する場合、どのようにするのが 一般的でしょうか。 (1) 操作でデータに変更し、Observerや独自のリスナを使ってデータの変化を表示してるModelに反映させる。 (2) そもそもデータ構造をTableModelなどで表現しておく。複数表示はリスナ使って同期取る。 (3) その他
>>672 1.やりたいことをよく考える。
2.やりたいことにあっているUIを考える。
実装を考えるのはそれからではないか。
Swingでいろいろ作成し始めたのですが、 何かこうバイブル的な本とかってないですか? それともクラスライブラリのソースを読む方がいいのでしょうか?
ちょっと前のレスすら読めない
>>674 に本が読めるか心配だよ
ちょっとと言うほど前でもない気がするが。 まあ>674はページ内検索を覚えてから半年ROMるんだな
677 :
デフォルトの名無しさん :2006/01/01(日) 02:40:02
Swingのクラスライブラリのソースはいきなり読むのは難しいし、どこがどう役に立つのか 分からないと思います。必ず必要になるときが来るはずなのでそのときに読めばいいんじゃ ないでしょうか。日本語で書かれたリファレンス的なものはごく限られたいるので、 このスレで大体出尽くしているんじゃないでしょうか。 最近うっかり「Definitive Guide to Java Swing」という本を買ってしまいました。 おそらく日本語で書かれているどんなSwing解説書よりも詳しいと思いますが、 英語なので、まだ全然読んでいませんw でもこの本、魅力的なスクリーンショットがいっぱい載っていて、絵本感覚で 楽しんでいます。
皆さんjava暦何年ですか? あと年齢も
Java暦13年、年齢16歳です。 3歳のときからやってます。
>>679 スッゲ━━━━━━(゚∀゚)━━━━━━ !!!!!
Java暦3年、年齢80歳です。 喜寿のときからやってます。
普通だろ。 俺のクラスの香具師なんか先天性Javaプログラマーだぞ。
やっぱ小学校入る前に始めとかないと、世界は狙えんからな。
で、二十歳過ぎたらコーチに転職だな
685 :
デフォルトの名無しさん :2006/01/05(木) 06:11:30
>>679 Javaが発表されたのは11年前だよ〜だ。や〜いや〜い。
3歳のころは予知能力がありました。
俺、前世はゴスリンだったよ。
奇遇だな。 おれもゴスリンの生まれ変わり。 お前とは気が合いそうだ。
ゴスロリン
690 :
デフォルトの名無しさん :2006/01/05(木) 21:13:07
ゴスリン今も生きてるんだけど。 あ、マルチスレッドか。さすがゴスリン
たまにオレ、動作が重くなるんだよね。 ゴスリンにCPU食われてるって実感する。
692 :
デフォルトの名無しさん :2006/01/05(木) 22:55:47
,、 -‐ ''"" " " '' ‐- 、、 ,、‐' ´ 、、 ` ‐ 、 ,、 ' i ! ヽ、 \ / , .,. /', ', ヽ,. ヽ. ヽ, . ,.'.,.' / ,/ ,ri / ', lヽ'ヽ, ', .ヽ. ヽ . ,' / ,' /.i / .!./ ヽ,.! ヽ \ 'ヽ,、 ゙、', ヽ . !,'! ! ,' ', ,t',,、!i- ‐ ''''ヽ、,'_''' ' `‐ 、-.ヽ',‐ ', . ' ',iヽ, r ''"',レr<t' ',,r''うlli;`,` ,'.,' ',. ', . i. l ヽ''´,r''',_,)lli r:';iiiii}.゙i i i ', , ', i. .l ' ヽ,,;!:ir'''). ゞ,,,,,rう. l l i .i. i !. ! ', ゝ,'"ニ´-‐,. '' "" " " " '' ' ‐t- i ! .l .! ', ゝr''、´ ゝ- '´! .,' li,' . ',', ',‐ヽ, , -っ ./,., .l / ,!! . ',ヽ. ', `‐、,/ ノ ,、 '_,,、ノ!r‐'"l/从‐' '、\`ヽ‐-/ ,,/‐'''、--‐ ' "l ̄ ' r' -.‐'‐,. '、, ,' ``ヽ,. ‐ ''./`''‐ 、 . ,、‐''l. r_,' ,' ', . / ', ノ. i. ' r' ヽ、 .ィ'、. l , ', ', ``''''´./ ', ', '
「\ __ __ │ト、l、 /´, '`⌒'´ `ヽ: : . ヾヽ!lV/ / ,/ / ,' ハ、: . ,ィニ≧ゝレ' / / ,./ / , ハ : : . く<-‐7´ _」] l l/_,∠/ / / / い : : .  ̄ノ/: :f r'l l /レ'/、_/‐ト'、/l| li l : : : : . . : {ハ : :|{(l|y==ミ _ノ、/ソリ ll | : : : : : : : : :ヽヽ: :|、lハl、゙ ⌒ヾlノリ ll l : : : : : : : : : : : : : : V\ヽ、 `ー ゛ノルんイリノ : : : : : : Javaやってると頭悪くなるの? : : : : : : : : : ,.--、_ハ`−r=ニ--、′ノ. : : : : : : : : : : : : : : : / /-ョロ'ヲ´ i l : : : : : : : : : : : : : : : : : 〈 ,ハフ'兀「 ! } : : : : : : : : : : : : : : : : : ヽ, ト{‐lハ. ヽ ' ノ : : : : : : : : : : : : : : : 〈 , !{ソ ヽl/|、: : : : : : : : ,r-、 : : : : : : `ヽ V j _ノ ,スヘ_ノ7--−イ∧〈 : : : : : : : { / ,ハ、 _//く 〈 ___ r'九〈ハ.} : : : : : : :レ' ' ,ハヘニイヽ_厂 、ノソト}〈V´ : :_ノ−- 、' {∧ トヘ_「 {Y: :仔 之_ 〈l ̄>-、_ 丶レ^ヽ厂` 上l_:/Z/ソ‐′ r个y'⌒ll_,/‐、;_,、ト、__ト、 ` ー/「>,、 └トf‐′ {_Y^lヽ、,ど , , 〈__j,ハ、) 、_イソ´`ヽヘ、ノ、lフ ヽ>ゝハ 〈ノ{ l! ハ_j人lJ /ソ: : : . ノフく_.イ 〉 〈、ソ´ UU 、ノ入 : :__rクー<__〉 ∠__, 〈_⊥、′ i _,rくソヽ√ヽフ j__ルく_/T'┬_ヒス⊥イ \ノ ヽ√ \丿 ヽ/
694 :
デフォルトの名無しさん :2006/01/06(金) 02:10:59
Javaをやってると頭がゴスリンになります。
695 :
java :2006/01/06(金) 02:27:27
すみません、聞きたいことがあります。 MouseEventでjavaアプレットを起動しているのですが そのアプレット内にあるActionEventが実行されません。 何が原因なのでしょうか? ActionEventのみで作ったプログラムは動きます。 よろしくおねがいします。
ActionEventのみで作ったプログラム? 原因は、なにか誤解かプログラムミス。
マウスイベントでアプレットを起動ってなんだろ
698 :
デフォルトの名無しさん :2006/01/06(金) 15:45:06
文字通りに解釈するなら、一つのアプレットが起動していて、そのアプレットでMouseEvent が発生したら、他のアプレットを起動するという意味だね。なかなか複雑な技を使う達人と見た。
699 :
デフォルトの名無しさん :2006/01/06(金) 16:02:52
>>695 Java歴約4年の俺だけど、意味がさっぱりわかりません。
推測できることはいっぱい有るけど。たとえばリスナーをaddしていないとか。
意味が分かれば、多分すごく簡単に解決できるんだろうけど、さすがにこの質問内容じゃあ
答えたくても答えられない。質問するにも技量が必要なんだよな。
「起動」とか「実行」とか言う言葉をプログラマがむやみに使っていると思っているかも
しれないけど、だとしたら大変な誤解ですよ。
アッパレット氏を思い出したよ...
695のアプレット = extends JApplet
702 :
デフォルトの名無しさん :2006/01/07(土) 16:58:12
695はたぶん匿名クラスでリスナーをaddしてるとみた APPLETタグでclassではなくjarを指定すればいいかも 匿名クラスがロードされていないのでは?
703 :
デフォルトの名無しさん :2006/01/07(土) 17:26:20
JTreeで、最初はルートノードのみのツリーモデルをコンストラクタに渡してから その後そのツリーモデルにデータを追加する処理をしています。 それで、どうもJTreeのサイズがルートノードだけしか表示できないサイズに なってしまうようなのですが、ノード追加後に、すべてのノードを表示できるように JTreeのサイズを変更する方法がないでしょうか?
>>703 コード出してごらん
たぶんノードの変更通知してない
ただいじった場合文字列が長くなるだけでもだめだよ
705 :
703 :2006/01/08(日) 00:58:36
DefaultTreeModelを継承したクラスで、コンストラクタとかはこんな感じです。 で、後ほどaddStoreというメソッドで、insertNodeIntoを使い DefaultMutableTreeNodeの挿入をしています。 private Vector scanned; public FolderTreeModel(){ super(new DefaultMutableTreeNode("root")); scanned = new Vector(); scanned.add(getRoot()); } public FolderTreeModel(Store store) throws MessagingException{ this(); addStore(store); } public void addStore(Store store) throws MessagingException{ if(store == null){ return; } Folder folder = store.getDefaultFolder(); DefaultMutableTreeNode defaultFolderNode = new DefaultMutableTreeNode(store.getDefaultFolder()); insertNodeInto(defaultFolderNode, (MutableTreeNode)getRoot(), getChildCount(defaultFolderNode)); scanNode(defaultFolderNode); }
706 :
703 :2006/01/08(日) 01:00:43
scanNodeメソッドは、Folderオブジェクトから子を探し 再帰的にモデルに追加する処理を行っています。 要はJavaMailのFolderオブジェクトのツリーを作っています。
たぶんツリーの変更のイベント送ってないね
insertNodeInto使えば変更通知イベントは自動的にとんでるはずだ 最小限のコードでためしてごらん たぶん、継承先でにぎりつぶしてるとか
709 :
601 :2006/01/12(木) 00:22:48
質問お願いします サーバからjwsを使ってクライアントにJTableを表示させ、そこからサーバのmysqlのデータを照会させるプログラムを作っているのですが、 サーバ単体でのテストでは、データ照会まで順調に行くのですが、クライアントから照会させようとするとエラーが起きてしまいます java.lang.NullPointerException at PersistenceManager.executeSQL(JDBCSwingApplet.java:59) at JDBCSwingQuery.<init>(JDBCSwingQuery.java:27) at JDBCSwingQuery.main(JDBCSwingQuery.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.continueLaunch(Unknown Source) at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source) at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
710 :
601 :2006/01/12(木) 00:24:26
すいません、エラーをそのままコピーしたら変に改行が入ってしまいました・・・ あと、クライアント用にプログラムを少し変更しているのですが、箇所はconnect.jar(JTableのプログラム)の (サーバテスト用) Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample", "jsp", "jsp"); (クライアント用) Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection("jdbc:mysql://サーバのローカルアドレス:3306/sample", "jsp", "jsp"); のところです。 長々と書き込んでしまって申し訳ありませんが、どうにも資料が少なくてほとほと困り果ててます よろしくお願いします
Swingと何の関係もないようなきがするんだが まずMySQL単体ではサーバーまでつながるのね? それと、jws配備した鯖とMYSQLの鯖は同じだよね?
>>709 はまずスタックトレースの読み方から勉強しよう、な!
しかし久しぶりのレスだと思ったらSwingと関係ない質問だもんな
なにか、スレが賑わうホットな事件は起きないものか
>>709 質問をお願いされてもなあ…
普通、回答が欲しくてレス書くと思うんだが、↓君はどう思う?
些細な前文の間違いならさほどきにせん さて、Swingの話題だが JTableでのセルエディット中のフォーカスの問題はまだなおってないよな? フォーカスがセルエディタから外れた場合セルエディットを終了させたくても セルエディットを終了させるとフォーカスはテーブル以外にうつるので フォーカスの移動先を見てstop処理ってのができない これNetBeansのテーブルモデルの初期設定画面とかでも簡単に問題発覚できるんだよね 結局めんどうなところを作りこんでいくことになり手軽なカプセル化ができん
>>714 お馬鹿な私にももうちょっと分かりやすく…
要するに、JTableでの入力中にEnterで確定させずに他のコンポーネントにフォーカス移してしまったら確定処理ができないってことでしょ。
ああ、俺もそれはまったわ。
そういうこと たとえばNetBeansでテーブルモデルのカラム名の編集中に行削除ボタン押してごらん
Swingの話題といえば、ここではSwingXの話題は出てないんじゃないか。
業務系だとJTable使いまくるから各プロジェクトごとに独自ライブラリ作るか 生臭いコードを書くかというのでみんな回避してるだろうね。
721 :
715 :2006/01/12(木) 14:54:33
ポイントは ・セルエディット中はフォーカスはテーブルではなく、セルエディタにいっている ・次の行をクリックするとフォーカスは一旦JTableの次のコンポーネントにいって セルエディタがその次にフォーカスを得る ・ひとつのセルの中に複数のコンポーネントがある場合生臭いコードになる 3つめは業務系ならよくある話でJTable継承で済む話でもないな 継承させたところで外部からセルエディタやらいじれることはいじれるし 回避できないことではないが面倒な処理を書く羽目になるという例
それってそもそもバグなの?
バグというか触れば自然と問題になる点で 開発者はSwing触る場合必ず覚えておかなければならないもの そしてNetBeansではその対処してないからバグ確定 もう何年も前からだけどね
バグ確定を主張したいならバグパレ検索して出直せ。
>>725 netbeansの中の人?
触ってみればバグなのすぐ分かるだろうに。
ライブラリが自分の期待した通りに動かなければ全てバグのせいかと。
安易に 「OS のバグです」 とか抜かす アフォ 派遣か?
Synopsis: JTable cell value lost when focus is changed from the JTable
Status: Closed, not a bug
> By default, JTable does not commit changes when it loses focus.
> To change this behavior, use:
> table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6242668
おめでとう。 君が徹夜して書いた自作ライブラリや生臭いコードは全て無駄でした。 こんな分かりやすい挙動が何年も放置されてる時点で修正対象のバグ ではなさそうと思わなかった君がプロジェクトのバグ確定。
口は悪いが久々の俺的ヒットネタ だが、そんなの常識だと騒ぎ始める人たちも光臨予定
バグではなくて互換性維持のために従来の方法から意図的に変えてこなかったというところか? 割と重要なポイントだなこれ
・NetBeansではこの対処してないからバグ ・Swing自体はバグではない ってところだろうか。NetBeansの中の人みてるかな。 ってSwingのこういった隠しのようなパラメータはどこで公開してるの? Java2Dまわりのオプション系は日本語ドキュメントにちゃんとはいってるけど、 こういった非常に有用かつ必須な情報が検索かけてもドキュメントにひっかからないな。
早速いじってみた。 terminateEditOnFocusLostってフォーカスはずれたらエディット終了ってコードと同じ動きする。 つまり使い物にならねぇ。 この方法だと次の行をクリックするとセルエディットが開始しないんだよね。 これは自作しても同じ原理。 つまり未解決のままか・・・。 楽できるとおもったんだけどなぁ。 Swingもまだまだだね。
説明書だけでわかんなかったら、結局ソース読んだ方がはやいと思うよ
どのみちこの問題は未解決か ふりだしにもどる
>>732 何がしたいのか知らんがそりゃまた別の話だろ。
少なくとも編集中に JTable 以外のコンポーネントにフォーカスが移った時の、
入力値の TableModel への反映は行われるようになる。
と思ったが…
>>714 =
>>722 と
>>716 で問題にしてる点が微妙に違うな。
>>716 の問題は terminateEditOnFocusLost で回避できるが (多分皆それかと
思ってたが)、
>>714 は 「セルの中に複数のコンポーネントを入れた時、それらの
コンポーネントのエディット処理が?フォーカスを失った時??」 何をしたいのか良く分からん。
HTML でよくやるように JTable をレイアウト用に使ってるってこと?
まとめ
1・まずどっかのセルをクリックしてセルエディットしています
2・何も考えなくても他のセルをクリックしたとき現在のセルエディットは終了して
新しくクリックした先のセルエディットが始まる
(実はこの際にフォーカス移動がすさまじいことになってる)
3・セル間の移動ではなくて他のコンポーネントへのフォーカス移動だと
セルエディットはストップしません
4・仕方がないのでフォーカスが離れたときにstop発行を自作、もしくは
>>727 のコードを使うと
他のコンポーネントにいったときセルエディットは終了するが、
セル間移動(正確には新しいセルでのエディット)が出来なくなる
おそらく原因は2でのフォーカスの不思議な動き
結局、解決方法は生臭いコードしかなし
カプセル化が多少厄介
>>736 4.の後半の意味が良くわかんないんだけど、他のコンポーネントにフォーカス
行ってるんだから新しいセル (新しいって何か知らんが) の編集ができなくて
当然じゃないか?
動きが分かるような最小コード出せない?
>>737 セル間での移動は通常2の動作が正しいとする
それがセルエディットが始まらない
他のセルをクリックしてもそれがstopと判断して新しい先でstopしてる感じ
イベントの発生順の問題かなぁ
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
をいれたテーブルと1クリックでエディットが始まるようなセルエディタを作ればすぐに分かる
>>738 JTable と JButton だけのアプリケーション作ってみたが:
セル1を編集中にセル2をクリックする → セル2で編集ができる
セル1を編集中にボタンをクリックし、セル2をクリックする → セル2で編集ができる
で問題なさそうだが (terminateEditOnFocusLost にかかわらず)。
問題が出るのは1つのセルの中に複数のコンポーネントを入れたときね
複数のコンポーネント入れても大丈夫になりました。
フォーカストラバーサルサイクルをいじるといいようです。
これは1.4からの新機能なので1.3以前のSwingではうごきません。むぅ。
ということで解決方法は
>>727 やフォーカスロストのタイミングでいいっぽいです。
たぶん。
もうちっと詳しく調べてみます。
742 :
SWT :2006/01/12(木) 19:56:52
すみません質問したいのですが。 javaアプレットでJFrameからJFrameを実行することが出来るのですが、 JLabelで画像を載せると実行できなくなります。 JFrameから新たなJFrameをたちあげそこに画像を載せるには どうすればよろしいでしょうか?
>733 ですね。 継承使う以上、派生元の実装に深く左右されるのは当然だから 不自然な挙動に気づいたらさっさとソース読んだ方が早い。 もっともその振舞が環境・バージョンに依存していないか、 ドキュメントもきちんと読まないといけないけど。
JFrameからJFrameを実行というのはどういうこと?
>>742 表示する画像ファイルはどこに置いてあるの?
747 :
SWT :2006/01/12(木) 20:57:33
説明不足で申し訳ないです。 ActionEventでJFrameが立ち上がるようにしているのですが、 JLabel img = new JLabel(new ImageIcon("ファイル名")); の一文を加えるだけで立ち上がらなくなってしまいます。 なぜでしょうか? 画像は同じフォルダに置いてます。
どう考えてもその行で例外出てんだろ。 スタックトレースくらいよく見ろ。
ワロタ
jar ファイルダブルクリックすると起動する Swing アプリケーションがあるんだけど、 SHIFT キー押しながらダブルクリックされたらデバッグモードで起動、みたいなことをしたい んだが、JFrame も何も出ていない main() の一番最初で、キーボードが押され てるかなんて判定できないよな?
JTableのセルって統合できる?
というか、セルの中になんでもいれれる 複雑具合によっては1カラムのテーブルにしておいて 中身はでっかいJPanelという手がある Accessのサブフォーム感覚で作れる
>>747 AppletクラスのgetImageメソッド使ってこうすればいいかも。
new JLabel(new ImageIcon(getImage(getCodeBase(), "ファイル名")))
>>751 HTMLテーブルでいうところの、rowspan=2 とか colspan=3 とかがやりたいわけ?
>>755 カスタムのUI クラスを作れば可能かも。
javax.swing.plaf.basic.BasicTableUI のソースコードを参考に作ってみるとか。
カスタムのUI クラスを作らなくても、JTable の
public Rectangle getCellRect(int row, int column, boolean includeSpacing) あたりを
オーバーライドすればうまくいくかもしれない。
いずれにせよ、javax.swing.plaf.basic.BasicTableUI のソースコードを
参考にしないと作れないと思われる。
757 :
デフォルトの名無しさん :2006/01/13(金) 23:03:41
セルのマージについては『Java GUI プログラミング -さらにパワーアップしたSwing』に 詳しく書かれていますね。
BasicTableUIを継承するのが普通なんだろうけど、 セルエディタやら細かいこといじろうとした場合1つのセルに 複数のコンポーネントを入れれるようにしておくほうが融通がきくと思われ。
入れる 入れられる
うほっ
ほ 自
どなたか詳しい方にお願いします。 ファイルを選択するにはJFileChooserを使用すると思いますが、 フォルダーを選択するにはどうしたらよいでしょうか?
JFileChooserのマニュアル読んだ?
setFileSelectionMode public void setFileSelectionMode(int mode)JFileChooser を設定して、ユーザが、ファイルのみ、ディレクトリのみ、 またはファイルとディレクトリの両方を選択できるようにします。デフォルトは JFilesChooser.FILES_ONLY です。 パラメータ: mode - 表示されるダイアログの種類 JFileChooser.FILES_ONLY JFileChooser.DIRECTORIES_ONLY JFileChooser.FILES_AND_DIRECTORI ES
>>764 大変ありがとうございました。助かりました。
勉強不足な自分にこんなにも丁寧な解説をしていただき感激しております。
これからも頑張って自分も勉強していきたいと思います。
JavaDocをコピペするだけでそんなに感謝されるなんて、なんてお得なんだ。
卒論の季節だからねぇー
768 :
デフォルトの名無しさん :2006/01/21(土) 23:11:24
プログラムに興味のないやつがプログラムを勉強できるはずないね。
APIを読む読まないはプログラムに興味があるかどうかとは無関係
能力があるかどうかだね。
ゲーム買ってもマニュアル読まない派
772 :
デフォルトの名無しさん :2006/01/22(日) 15:12:27
>>769 おまえのレベルがよくわかるよ。
APIごときを読まんやつはプログラムに興味が無いやつだ。
今の自分を超えようと思ったら、APIを読みまくらなければならん。
多くのソースコードも読みまくらなければならん。
本で紹介されている程度のしょぼいプログラムだけで満足できるなら別だが。
>>769 カワイソス
マニュアルは読まないけど、プログラムを好きでしてるやつとかたっくさんいるぞ・・・
ようはちゃんと機能で欲しいものをマニュアルでさがせてないやつらばかりなんだが
好き嫌いに関係なくその人個人の特性だと思うぞ
仕事でもある方法が分からないときにマニュアルやネットで積極的に探して
解決しようとするやつと、わかりませんと上に言うやつと大きく分かれる
>>773 >仕事でもある方法が分からないときにマニュアルやネットで積極的に探して
>解決しようとするやつと、わかりませんと上に言うやつと大きく分かれる
探し方下手な人って多いよね。
あんまり探さないで自分の知ってる範囲で無理やり解決する人も多い。
それなりに力があるからできるんだけど、それ以上成長がない。
>>774 補足さんきゅ
そういう人は業務でずっとプログラマやってきてる人でも多いね
主にオープン系やってきてなくてオフコンやメインフレームのチームにずっといた人に多い
言語を知っていればそれでおわり、ハード面やソフト面の環境設定やチューニングは
別チームが担当とかが普通だから仕方ないけどね
「パソコンでの開発ってどんどん新しいのが出て調べる時間ばかり
かかって大変ではないですか?」
といわれたことがあるが、まさにその通りではあると思う
元々趣味でパソコン触ってきた人なら比較的調べる癖がついているので
俺は採用するときの目安のひとつにしてる>パソコン所有や何に使ってるか
プログラマ歴が10年以上あってもパソコンもってないとか結構普通なんだよね
仕事は仕事と割り切れる人が多いというか
>>775 新しいものを苦と思わずに楽しめる人は強いね。
調べる時間はかかるけど、そこで得たもので仕事の効率は上がっていくと。
プログラマなんて、”楽する為の苦労は厭わない”ってタイプじゃないとつらいだろ(笑
マ板的な話で盛り上がってるのはどういうことだ?
779 :
デフォルトの名無しさん :2006/01/23(月) 01:03:18
淡々と教えるなり無視するなりすれば良いものを、 何故か見知らぬ他人に説教したがる人がスレッドに いついてしまった模様。
>淡々と教えるなり無視するなりすれば良いものを、 それは味も素っ気も無い2ちゃんねるですね。 >何故か見知らぬ他人に説教したがる人がスレッドに >いついてしまった模様。 はっきり言って根拠無いでしょw
雑談始める馬鹿がウザイ件について
ここが雑談できない場所だと思ってる馬鹿がいますね。
スレ違い マ板逝け
統一したUIを持った画面開発やることになったんだが カスタムなUIでplafを用意する形ではなく、 専用のComponent用意したから、 それ使ってねって方向だった。 しかも色とかは各自がsetする。 現実逃避にsynthいじってたら納期が迫ってきた。
特定用途ならUI定義するより 専用Component作るのは道理にかなってる
俺様Componentが業務共通の素敵仕事を 透過的にこなしてくれるなら文句ない。
今から思えばJComponentはinterfaceにすべきだったな。
> interfaceにすべき 確かに。 あとテーブル周りはもう少しスッキリ出来そうな気がする。
もう8年位前の技術だしねぇ JComponentはComponentを継承している以上 ベースはすでに10年以上前からあったと
>>788 その場合、JComponentで実装してるメソッドとかはどうすんの?
AWT あっての Swing なんだが。インターフェースにするメリットが全く分からん。 Swing on SWT とか本末転倒なことやりたいのか?
インターフェースだけにすると実装する手間があほみたいに増えて 結局DeafultComponentとかいう実装クラスがあってそれを継承する というだけになりそうだな
JEditorPane、JTextPaneよりも本格的なエディタ用入力ペインクラスってある? JBuilderのエディタみたいな。
>>794 アンドゥあるしワードみたいなWYSIWYG(もどき?)な編集もできるし
Swingでも十分本格的だと思う。
行番号表示とかできる?
>>796 自作で行番号表示するコンポーネントを作って
JScrollPaneのsetRowHeaderView
単純に質問に答えるとこうなりそうだけど、
>>794 の求めてるエディタは自作するしかないんだろうな
JTextPane内にアイコンやコンポーネントを表示させることができる訳だが、 このような書類をどのように保存すべきか。これは大問題だと思う。 ちなみに自分が調べたところでは、ObjectOutputStreamを使って、シリアライズ できることは分かったのだが、この方法だと、将来JTextPaneやそれが含むコンポーネント 等がバージョンアップして、内部構造がわずかにでも変化したら、もう読み込みができなく なってしまうのではないだろうか。という不安が有る。
799 :
デフォルトの名無しさん :2006/01/25(水) 02:35:06
TableModel(DefaultTableModelなど)はJTableにデータを表示するときに 利用しますが、複数のJTableに同じデータ(Entity)の異なる属性を 同時に表示したいとき、アプリケーション内ではどのようにデータを保持しますか? 前提条件 ・データ数や属性に変更があったら両方のJTableとも同期が取れていること ・非GUIクラスでこれらのデータの集合を扱いたい 1.アプリケーション内でデータをList等で管理し、それぞれのJTable用の TableModelを作成し、setValueAt()を利用して、データのコピー(String等)を TableModelに設定して表示する -> ListとTableModelとデータ間の共有がないので同期を取るには面倒 2. アプリケーション内でデータをList等で管理し、それぞれのJTable用の TableModelを作成し、データを設定して表示する -> データはJTable間で共有するが、ListとTableModelは共有されない ので追加、削除が面倒 3. アプリケーション内で1つのTableModelでデータ管理し、それぞれのJTableに 同じTableModelを設定(TableModelを共有する)して表示する -> データもTableModelも共有するので同期は楽 実装上は3が最も適しているように思えるけど、TableModelはjavax.swing.table パッケージなので、ロジック制御クラスのような非GUIのクラスで扱うにはどうか と思うのですが、あんまりこだわらないほうがいいかな?
>>799 自分も同じようなことで悩んだことが有ります。プリケーション内で1つの
TableModelでデータ管理するということは、そのアプリケーションで利用する
データがテーブルに表示するデータだけ、ということを意味すると思いますが、
私の場合、表示するデータ以外にも、隠れたデータを各行に持つ必要があったため、
あなたの3番目の方法は真っ先に消えました。JTableの各行に対応する、rowData
というようなオブジェクトを作り、そこにテーブル表示用の1行分のデータや、その行と
関わるそれ以外のデータも入れました。そしてrowDataたちを要素として持つ
Vectorをフィールドとして持つクラスをアプリケーションのデータとしました。
そして、行を削除するときは対応するrowDataをVectorから削除してから、
すべての行を一たん削除して、DefaultTableModelのaddRow()で設定し直して
います(本当は必要な行だけで言い訳ですが)。一見非効率的な方法にも見えますが、
行の削除も追加も、行の入れ替えもこのrowDataを中心に考えると非常に楽になりました。
>>799 作成というのが、インスタンスの作成なのか、クラスの作成なのかよくわからない。
データ構造がどうなっていようと、JTableが求める形でデータを応答すればいいわけだから、
・データは好きな形で保持(Listとか)
・好きにデータを返すカスタムTableModelを作成
・そのTableModelのインスタンスを2つ用意して、それぞれの状態によって返すデータを変える
table1→MyTableModelインスタンス1→
MyData
table2→MyTableModelインスタンス2→
って感じかな
>>799 >>801 の方法に賛成。
>>800 のようにDefaultTableModelを使う方法は、データがObject[][]型に固定されるので不便です。
ある意味javax.swing.tableパッケージに依存します。
そうではなく、任意のクラスを扱えるTableModelを、AbstractTableModelを継承して作るのがお薦め。
任意のクラスをMyData型とすると、MyDataを持つArrayListをアプリケーション全体で1つ持ち、
これを複数のTableModelで共有すればいいんじゃないでしょうか。(801と一緒か)
TableModel間の値の変更の通知は、イベントモデルを使うと解決できるでしょう。
AbstractTableModelを使うと既存のイベントモデルの枠組みが使えるので簡単ですが、
この場合swing依存になります(それでも問題なければよいですが)。
私がやったときは、グローバルなアプリケーションオブジェクトを用意して、
これにArrayListインスタンスの管理と、インスタンス変更の通知を任せました。
変更があったときの流れはこうです。
TableModel 1で変更があった
↓
アプリケーションオブジェクトに変更を通知
↓
TableModel 2に変更を通知
TableModelとアプリケーションオブジェクト間に関連ができますが、
ここはインタフェースを経由することで依存しないようにしています。
いいけど、今更Vector使うなよ、という気はする。
もう8年以上前のものだし・・・ おかげで同期化しなくても動いてるというのは多いだろうね VectorだからSwingが重いって場面はもうほとんどないだろうしね
そういうこったからいつまでたってもVectorがなくならない・・・
やっぱりsynchronizedとか使って、ArrayListに置き換えた方がええんかのう。
実害無いなら、なくすためにバグが出るより Vector のままのほうが良い。
>>806 つうかSynchronizedListつかえよ。
一点ご教授いただけないでしょうか。 今、JEditPaneやJTextArea辺りを使ってエディタを作成しています。 要件としては「カーソル位置の行に下線を表示する」というものです。 文字列の一部に下線を引くのではなく、 カーソルが存在する行全体に引きたいのですが、 何かよい方法が用意されていますでしょうか?
>>806 うほっ、そんなクラス知らんぞ、と思ったら、メソッドだったのか。
勉強になるなこのスレは
しまった。アンカーミス
>>806 じゃなくて
>>808 だった。orz
え、メソッドしか見つからんけど。
あとで暇になったらまた調べるわ。
>>809 改行多いといわれたので
ttp://terai.xrea.jp/swing/linecursor/sample.jnlp class LineCursorTextArea extends JTextArea {
public LineCursorTextArea() {super();
Caret caret = new DefaultCaret() {
protected synchronized void damage(Rectangle r) {
if(r!=null) {JTextComponent c = getComponent();
x = 0;y = r.y;width = c.getSize().width;
height = r.height;repaint();}}};
caret.setBlinkRate(getCaret().getBlinkRate());setCaret(caret);
}protected void paintComponent(Graphics g) {
super.paintComponent(g);Graphics2D g2 = (Graphics2D)g;
Insets i = getInsets();
int y = getRowHeight()*getLineAtCaret(this)+i.top;
g2.setPaint(SystemColor.activeCaption);
g2.drawLine(i.left, y-1, getSize().width-i.left-i.right, y-1);
}public static int getLineAtCaret(JTextComponent component) {
int caretPosition = component.getCaretPosition();
Element root = component.getDocument().getDefaultRootElement();
return root.getElementIndex(caretPosition)+1;
}}
814 :
デフォルトの名無しさん :2006/01/26(木) 19:57:12
↑ ブラクラ
815 :
デフォルトの名無しさん :2006/01/27(金) 01:28:46
ラベルの編集できるノードと出来ないノードが混ざった JTree があるんだけど、 setEditable(true) すると全部編集できてしまう。編集不可なノードの時は キャンセルするようにしたいんだけどどうすれば良い?
ん? DataTreeCellEditor の actionPerformed() をオーバーライドしてやれば良いのかな?
isCellEditable() をオーバーライドした DefaultTreeCellEditor を仕掛けたらうまく動いた。 このやり方であってるのかな? public boolean isCellEditable(EventObject event) { TreePath path = tree.getSelectionPath(); if(path != null){ Object node = path.getLastPathComponent(); if(ラベル編集不可){ return false; } } return super.isCellEditable(event); }
818 :
809 :2006/01/27(金) 10:26:43
>>813 ありがとうございます、文句の付けようのない完璧な仕上がりになりました。
一点蛇足とは思いますが、最終的にJEditPaneを使用することにしたため、
getRowHeight()メソッドが存在しなかったのですが、
g2.getFontMetrics().getHeight()を用いて動作させてみました。
重ね重ね本当にありがとうございました。
819 :
デフォルトの名無しさん :2006/01/27(金) 12:00:34
Swingを使ってゲームを作成している者ですが ちょっとお聞きしたいことが・・・ マウスの画像を、自分で作った画像に変更したいのですが、どうすればできますか? 分かる方教えてください><
821 :
デフォルトの名無しさん :2006/01/28(土) 02:36:39
JInternalFrame のタイトルバーや境界を消したいんだけど出来る?
>>821 できる
JInternalFrame frame = new JInternalFrame();
((BasicInternalFrameUI)frame.getUI()).setNorthPane(null);
frame.setBorder(BorderFactory.createEmptyBorder());
frame.setSize(200,200);
frame.setVisible(true);
frame.setLocation(10,10);
frame.add(new JLabel("メモ"));
desktop.add(frame);
823 :
デフォルトの名無しさん :2006/01/28(土) 22:05:57
JTree のノードに JTable って入れられますか? JTable を返す TreeCelRenderer を作ってみたら一応表示はされるみたいだけど 行とか触れないな。
触りたい場合はエディタでは
了解
>>826 幸せになってみようかと組み込んでみましたがちょっと挙動不審でした。
828 :
806 :2006/01/30(月) 02:36:22
VectorをすべてArrayListに置き換えますた。 ああすっきりした。これでVector使うやつが一人減ったよ。
Swing使う部分はどうしようもないけどな
830 :
デフォルトの名無しさん :2006/01/31(火) 00:12:58
JTable の選択行が変わったときのイベントを拾うにはどこに何のリスナしかければ良いの? JTable にも TableModel にもそれっぽいメソッドが無いんだけど。
ごめん、JTable から ListSelectionModel 取ってそれに仕掛けるのか。
832 :
806 :2006/01/31(火) 00:37:44
JTable#valueChanged()じゃダメなのかな。
834 :
832 :2006/01/31(火) 01:09:35
ふ〜ん。大村さんの本では普通にオーバーライドして、利用してるけどね。 ちゃんと先頭の行でsuper.valueChanged()呼んでやれば大丈夫だと思われ。 自分もこのメソッドよく利用してるけど、今のところ何の支障もないよ。
そのsuperとか使ってる時点で動き方を意識しなければならないのが問題 継承して使いたい場合はそれでいいとおもうけどね 単純にテーブルを配置、その選択イベント取得したいという目的ならしないほうがいい
モデルやリスナ、レンダラなんかはしょっちゅうサブクラス化するけど テーブルそのもののサブクラス化はあまりやんないなぁ。
基本的にbeans部品だから配置した後でプロパティセットって感じだよね モデルもテーブルに限らずDefaultなんちゃらモデルで大概事足りるしねぇ
>>835 仕様書がダメだといってるんだからダメだろ。
Javaの将来のバージョンとかで動かなくなる危険性がある。
839 :
832 :2006/01/31(火) 14:56:05
おまいら、そんなに俺にvalueChanged()をやめさせたいのかよ。
この前VectorをArrayListに置き換えたばっかりなのによw
>>838 仕様書ってJava Docのことですか?だとしたらダメだとは書いてないと思うけど。日本語のサイトの
> アプリケーションコードはこれらのメソッドを明示的には使用しません。
> これらのメソッドは JTable が内部的に使用します。
というとんちんかんな和訳じゃニュアンスが伝わってこないけど、もとは
>Application code will not use these methods explicitly, they are used internally by JTable.
となっているのだ。"should not"でも"cannot"でも"must not"でもなく、"will not"なので、
「使うことは無いだろう。」と訳すべきだと思うよ。それに将来的に使えなく
なるなら非推奨になっているはずでしょ。まあ俺は気にせず使うよ。何か問題が発生したら、
そのとき対処するわ。10年経っても問題なく使えてたら、おまいらに胸を張って報告するよ。
普段ギャンブルをしない俺だが、たまにはやってみるわ。
SwingでArryListの置き換えは無駄だろ JTableが自分でインプリメントしてるイベントは 自分で使うからその動作を妨げてはならない だからsuper使ってる というだけの話だろ? JTableを拡張して作りたいのならJTableの動作について詳しいわけだし問題なし アプリでJTableを使いたいだけならJTableに実装されているイベントを使わないほうがエレガント だろ?
やっぱ interface 多用した作りに直して欲しいな。。
JTable#valueChanged() 使いたければ使えばいいと思うけどねぇ
俺は
>>838 と同じで仕様原理主義者なので使わない方を推奨するけど
どっちかっつーと、
>>839 はAPI Specの原文読んでも好ましくない事が一目瞭然なのに固執してる事
それも技術的な理由でなく自己満足のために、って部分のがヤバいよーな気がするね
使われたくなければ valueChanged() をパッケージプライベートに するなりせいよと思うが、先の Vector じゃないけど過去のしがらみで いまさらできないんだろうね。
>>843 インターフェース実装してるやつなのでそれはJava言語として無理だろ
でもそんなSwingもSWTのソースおったりAPI見てると
非常に綺麗に見える不思議
Swingは今後フラグ以外の定数はEnum化するようにしてほしいね
ListやMapインターフェースの追加と
845 :
デフォルトの名無しさん :2006/02/01(水) 01:10:32
JTableで行(セル)の値が修正されていたらその行の背景色を変えて ほしいってよくユーザに言われるけど、どう解決すべきでしょうか? 元 |abc|1|あ| 後 |xyz|1|あ| にしたとき背景色を変えるが、元に戻したとき(xyz -> abc)は 修正されていないので背景色も元に戻さなければいけない。 TableModelに元の値と修正後の値とフラグを設けて、 stopCellEditing()時にチェックしてTableCellRendererでフラグ を見て背景色表示って感じかな。
値の監視タイミングはセルエディットのstopではなくてモデルのイベントを使え
test
OO的にはいけてない方法だが、変更されたらセル1個or1レコードに対するデータに変更フラグを立てておいて モデルではそのままそのオブジェクトを返して、レンダラでそのフラグを見て色を変える。 変更の有無がそのセル1個or1レコードのクラスに閉じこめられるので楽といえば楽、きれいといえばきれい。 OO的にいけてないと俺が思う理由はビュー側の要件に対してモデル側で対処しようとしてるから。
これは状態を表すからモデルでいいと思う よくDB使ったアプリとかでも変更があったときに閉じようとしたとき 変更が保存されていません、とかダイアログを出すとかそういうのとおなじ
>>848 >OO的にいけてないと俺が思う理由はビュー側の要件に対してモデル側で対処
それはモデル側で正しいんじゃないかな。
ビュー側の要件は、変更されていたら色を変えるところまでで、
値が変わったかどうかを判断or保持するのは、モデルだと思う。
モデルが色を保持したら、間違っていると思うが、上記は別に「いけてない」とは思わないけど。
851 :
デフォルトの名無しさん :2006/02/01(水) 19:10:09
JTextFieldにおいて、 IMEの未確定な状態の文字列を、 ロジックで、確定するには、どのようにしたらよいでしょうか? とあるイベントが発生したときに、未確定な文字列を強制的に確定したいのです。
>>851 メソッド一個だけあげろってんなら InputContext#endComposition() なんだけど、
これだと削除される場合もあるらしいね。
InputMethodListener 仕掛けておいて、常に未確定文字列保持しておき、
endComposition() で確定したらよし、削除されちゃったら
JTextField に未確定文字列を こっそり挿入するとかすれば。
>>852 endCompositionだと、確かに取り消される場合があります。。。
後半の方法を、参考に、未確定文字列の保持ではなく、
全文字列を保持して、後からsetTextするという方法はできました。
でも、できれば単純に確定する方法があると一番よいのですが。
jniでWindowsならIMMなんとかかんとかとか呼ぶ。 Robotとか使って無理矢理エンター押させたらどうなるん? といいながらちょとテキストフィールド出して入力してみたんだけど、フォーカスアウトすると勝手に確定しちゃうのね @1.5.0_06+ATOK ちゅか標準的な方法としてはendCompositionしかないんだからそれ以上のことは「Javaの仕様です」でFAでいい希ガス。 仕事でしょ?なら尚更、標準以上の対処をするとサポートしきれない。 眠いので散文スマン。
InputMethodListenerで、確定時に発生するイベントを参考にして、
自分でInputMethodの生成、dispatchEventとしたら、確定させることができました。
>>854 わざわざ、試していただいてありがとうございます。
「Javaの仕様です」では、とても納得させられないです。
ユーザは、Javaの標準を押し付けられても、困ると思うので、
そんなことは、仕事だからこそ言えないです。
>>855 じゃあ、他の世界の標準では、そういうことができると明記されてるの?
だれもが「できる」という共通認識でもあるの?
> InputMethodListenerで、確定時に発生するイベントを参考にして、 > 自分でInputMethodの生成、dispatchEventとしたら、確定させることができました。 このやり方は推奨しない。 自分で Event 生成して dispatch しても InputMethod の状態を ちゃんと制御できてないとその Event を受け取ったコンポーネントと、 そんな事知らない InputMethod の間で齟齬が起きる危険性があるし。 確定時に どのイベントがどんな順番で発生するかは仕様で全く規定されてないしね。
860 :
デフォルトの名無しさん :2006/02/04(土) 01:25:30
GroupLayout。Dolphinから採用されるらしい。
*BSDだとどれ落とせばいいの? UNIX同士は互換無かったと思うし、Linux版をエミュレート?
864 :
デフォルトの名無しさん :2006/02/04(土) 17:40:40
>>861 Dolphinって、大分先じゃん・・・。Visual Editorで使えるようになるのは何時になるんだろ。
単体ライブラリとしては、今でも使えるしね。
866 :
デフォルトの名無しさん :2006/02/05(日) 12:28:08
>>865 じゃあ、Dolphinまで待たずとも、Visual Editorが対応してくれる可能性もあるってわけだね。
NetBeansのGUIビルダは魅力だけど、それだけで乗り換えるのもつらいしなぁ・・・。
VEって対応したところでいまのままではきついような
>>866 VEが対応する可能性はかぎりなくゼロに近いと思う。
現状でもVEのSwingサポートレベルは1.3だし、公開されている今後の計画でも
1.4以降のサポートは予定しないと明文化されている。というかSwing系の
機能増強自体ほとんど予定がない。
大体、eclipse.orgのVE projectって基本的にGUI開発環境を作るための
フレームワークを提供するプロジェクト。GUI開発環境を提供する
プロジェクトじゃないのよ。だから下回りのフレームワークのAPIの
開発は進んでもその上のリファレンス実装までは手がまわらないんじゃないかな。
SWT系はIBMがWorkplace構想打ち出してるからいいとしても。
869 :
868 :2006/02/05(日) 12:58:59
>手がまわらない→手をまわさない のほうが正確かも。
870 :
デフォルトの名無しさん :2006/02/05(日) 15:27:36
>>868 それは(´・ω・`)ショボーンだなぁ。
確かに、SpringLayoutとかにもまだ対応してないし。
普段はEclipse&GUIだけNetBeans5.0 という使い分けができれば良いんだけど・・・。
NetBeans5.0って4.1と大分操作感覚が違うから戸惑うな 4.2としなかったのは正しい
サーバーサイドはEclipse、GUIアプリを作るときはNetbeansとしても、 それほど混乱しないと思うけど。
サーバーサイドもNetBeansつかえば、混乱ないよ。
問題はこのスレとサーバーサイドが関係ないことだ
-serverオプションってSwingに効果ある?
起動を遅く実行を速くだからね。効果あるかもしれない。
早くはなるけど、レスポンスは悪化するのでおすすめできない
このスレで何か作ってる人はやはりNetBeansが多いんですか?
コンポーネントの数が多いとさすがにコードのみで貼り付けは無謀だし 位置の調整も絶望的になってくるしな 次点としてJBuilderやOracleJDev(JBuilderベース)かな
俺はがんばってEclipse+VEでやってるよ。 慣れれば何とかなるが、もどかしい思いをすることもしばしば。
Eclipse + VE でやってる。 NetBeans は試してみたことないんだけど そんなに素敵なら使ってみたいなぁとは思う。 思うんだが、VE でも特に困らないので 評価の時間を作るほどには至らず。
どうでも良い作り捨てや他の人に引き継ぐ GUI は VE で。 本気モードの日曜プログラムは GridBagLayout で。
GridBagLayoutならNetBeansだな。
>>881 5.0を試してみることをお勧めする
違いを実感できるよ
NetBeansでGridBagやったけどわけわからんかった SplitPaneが神
GridBagLayoutは仕組みがわかってないとWYSIWYGなエディタがあってもわけわからんと思われ。
887 :
デフォルトの名無しさん :2006/02/06(月) 21:16:45
もしかして、GridBagLayoutの編集画面(?)までいってないとか…
くだらない書き込みでageてしまったorz
VEはサイズ指定するのがクソ
Eclipse+VEは辛いな
というか、まちすがリリースされたこの時期にGridBagLayoutとか言ってないで Netbeans 5をダウンロードしてためしなよ。
用語としてはフリーデザインという表示してるからそっちで統一したほうがいいと思うけど レイアウトとしてはグループレイアウト これはこれで慣れが必要だけどね コンポーネントが細かく配置してある場所にある程度の大きさのあるJPanelを 追加とか結構難しいな 相対座標を変に記憶していて調整が難しいという場面も多く見られる
>>886-887 仕組みを理解して編集画面があることに気が付いたら、GridBagLayoutは使えると思った。
でもグループレイアウトはもっといい。簡単だし、文字のベースラインが揃うのがとてもいい。
>>893 GroupLayoutでコード手書きは悪夢。
h(c1, c2, ...) と書いたら c1, c2... を横に並べた Panel を作るメソッド作っとけ。
>>881 レイアウト自体は GridBagLayout で別に問題ないというか。
速度面以外の有利さってどの辺りです?
あとは Subversion / Maven / etc との連携とか。
画面だけ作って終わりってわけにいかないし。
>>896 オレ画面だけ作ってeclipseにコピーしてるwwwwwwwwww
それだと修正はいるときついな
899 :
デフォルトの名無しさん :2006/02/07(火) 15:47:18
あほな質問でごめん。 昨日から5.0をおとしていろいろいじってますが、 jLabel1のBackgroundのプロパティで色を設定しても変わらないのですが、 そういうものなのでしょうか?jTexfieldとかは設定すると変わるんですが。
その質問つい最近もあったな 透過指定いれてるからというのに納得してなかったな
902 :
デフォルトの名無しさん :2006/02/07(火) 15:55:52
>>900 おお、できました。ありがとうございます。
プロパティいっぱいあって複雑でちと、ナーバス状態です(TT
>>897 org.jdesktop.layout.GroupLayout毎Eclipseに持っていくの?
swing-layout.jarがクラスパスにあればいいだけとみた
905 :
デフォルトの名無しさん :2006/02/08(水) 21:57:19
GridBagLayoutかGroupLayoutかって構図になってるな。 1.4で追加されたSpringLayoutはどうよ?
>>904 できました。
ただソースをフォーマットするととんでもなく見づらくなる。。。
レイアウトは組み合わせて使うもの 単体でそれなりに使えるのはGroupLayoutくらい nullやAbsoluteLayoutでもいいけど あとは組み合わせだけ 組み合わせに慣れてくるとBOXとFlow、Borderの3つだけ使うようになってくる。 NetBeansは階層構造もったコンポーネントのコピーもいいかげんできるようになってくれぇ
>>907 自作するのはいいけど、GUIエディタがないと頭痛くなるから
結局プラグインも自作しなければならなくなるというオチがまってる
テーブルレイアウトはシンプルでいいけど、後から修正が入ると非常に厳しいレイアウトだよね
こーゆーふーに済ましたらあかんの? for ( int i = 0; i < 部品リスト.length; ++i ) { 部品 部品 = 部品リスト.get(i); if ( i > 0 ) { 部品 部品2 = new 部品() 部品2.setX( 部品1.getX() ); 部品2.setY( 部品1.getY() + 部品1.getHeight() + マージン ); } コンテナ.add( 部品 ); }
>>910 クラス名とインスタンスがごっちゃになる書き方はわけわからん
そもそもコードベースで配置する時代はとっくに終わってる
でもレイアウトマネジャーに任せるとメチャメチャな 配置にしかならんような気がするけど。
それはレイアウトマネージャをしらないやつだけ むしろ絶対座標で配置後に修正とか楽になるだろ
つ適材適所
俺も最初、JavaのGUIでレイアウトマネージャ使ったときは、 なんてめんどくせーんだ。 と、思っていたが、コアJAVAのレイアウトマネージャの項目を読んで、 説教くらって、改心しますた。 絶対座標使ったら、後からボタン名を微妙に変える必要が出てきたときとか大変じゃないか。
もとから大きめなボタンにしとけば解決じゃね?
917 :
デフォルトの名無しさん :2006/02/11(土) 06:09:33
+5文字分くらいの余裕なら大したことないよ
ボタンのサイズは合わせることはあるから別に不思議ではないが 1画面にコンポーネントが数百載るってのはふしぎなことではないから レイアウトマネージャ使わないと不便
920 :
デフォルトの名無しさん :2006/02/11(土) 12:48:23
パネル切り替えて使うとして、描画されるのは精々数十では?w
業務系は数百なんては割りと普通では?
923 :
デフォルトの名無しさん :2006/02/11(土) 13:02:46
おれはやったことないが、なんか昔のオンラインシステムをそのまま移行した ような予約システムとかだとすごい量のコンポーネントが画面に並ぶらしい。
925 :
デフォルトの名無しさん :2006/02/11(土) 13:08:20
>>924 すごい量って、、、画面いっぱいってことかw
全画面表示前提で1000を超えるコンポーネント貼り付けられたソースなら見たことあるな
927 :
デフォルトの名無しさん :2006/02/11(土) 13:25:27
>>926 見たことあるってのと実際に動いてるのはちゃう。
1000コンポーネントって、縦30 x 横30ぐらい コンポーネントが貼り付けてあるのか。 画面サイズが 1280 x 1024 だとして、一コンポーネントあたり 42 x 34 ぐらいしか取れないけど。
昔のオンラインシステムからそのまま移行したタイプのシステムは、全画面表示が 標準で、全画面にボタンとフィールドがびっしり並んでいるのも割と普通。 横30行くかどうかはわからんが(フィールドが幅を取るので)、たて30くらいは行く。
あと昔のシステムは次へと前への画面切り替えだったのが、 GUIだとタブ使うようになってる 1つのウインドウで2,300ならめずらしくもないべ 販売管理方面のシステムならよくある
画面切り替えで200〜300っていうのは、レイアウトの問題とかんけいないんじゃねぇの?
タブ1つの中に100個ははいるんじゃないの? ウインドウで見たら数百はいくかと
分かりやすく Excel に例えてやろう。 1024x768 画面で Excel 新規ドキュメント (初期状態) をフルスクリーンで開くと 画面に収まるのは 13列×32行 = 416セル Excel でスクロール無しの 1 シートなんてたいしたことないだろ? つまり 100 や 200 程度のコンポーネントなんて余裕で 1 画面に並ぶし、 入力する人間のキャパシティオーバーをまねくほどでもない。 それが業務画面。
JRの窓口とかでおねぇさんが操作してるやたら入力項目の並んだ画面を想像すればいいかと。
そしてそういう業務系の入力系をWEBアプリに移行して 死んだ会社を知っている Swing+NetBeansでさくっと作り直して喜んでもらってるが
画面を別々に分ければいいのに、 ユーザが紙一枚に書いて窓口に渡すのを、そのまま窓口が紙と同じように入力する画面を求めたり、 一つの項目に合わせて他の項目がTextBox/Check/Radioとかひょいひょい切り替わるのを使って何枚もの紙を一つの画面に納めようとしたり。 項目数とか考えずに 入力/表示/結果 でそれぞれ画面一つで要求したり。 あ、スクロール出てくると画面一つっていえないのかな。
そんなのは単なる提案にすぎん。 決めるのはユーザ。
>>935 一時期によくあった話らしい。
おれの友人の消費者金融の窓口で働いてた女の子がいうには、
もとの(DOSみたいな)オンラインシステムだったら、一画面に必要項目を
入力してやれば一瞬で結果が返ってきたらしい。もちろんフィールドは
タブで順番に移動。
新しいWebシステムではいちいちマウスを使わない上に何画面も入力させ
られてうざいと言ってた。
まあ設計ミスもあるんだろうけど...
つTABINDEX属性
>>938 >新しいWebシステムではいちいちマウスを使わない上に何画面も入力させ
>られてうざいと言ってた。
いまいち、よくわからんのだが、
新しいWebシステムではいちいちマウスを使わないといけない上に
ではないのか?
どっちがどうなのか混乱してきたw
>>940 業務の現場では、1画面で全部済んじゃうUIが好まれるってことだろ
その辺のコントロール含めてWEBアプリでは作りにくい イコールコストアップや納期、品質にかかわってくる とにかくリターンキー押したら次のコンポーネントへ移動ってのが重要だといつも言われてたよ マウス使うシステムはスピード低下するのでおかしいと 入力チェックとかもjavascriptで実装しなければならず、これがまたデバッグが 最悪な環境になる 俺が直してやったシステムは時間がなかったのもあるけどクライアント数とかみて 普通にクライアントサーバ方式で作った ローカルの資源を必要としてたが、WebStartの毎回出るダイアログがウザイらしいので URLClassLoaderで最新のjarをダイナミックにロードするようにしといた JREはPrivateJREにしてSystemLAF、NetBeansプロファイラでGCとかヒープの チューニングもできたから、WebStartではなくアプリケーションで作ってよかったかな ここ2年ほどはWEBアプリからの作り直しの案件もらうことも割と多い 不特定多数がユーザでないかぎり入力系でWEBアプリ提案するSI氏ねや
いままで入力系でWebアプリの仕事(しかも改造)ばっかりだよ…… JavaとEJBとXMLとHTMLとCSSとJavascriptとXSLTが渾然一体となってて死ねる…… 愚痴でごめん。
ぶっちゃけ入力系で採用するとコストは3倍くらいになるよな>WEBアプリ
Swingの話題として、Webアプリの成否はどうなんだろう。 ひとつのWindowにコンポーネントをどれくらい含むかって話から派生したわけだから、 まぁ仕方ないかの。
いや、いまの話の流れとしては Webアプリってどうよ?Swing+WebStartでいいんじゃねぇの? って感じだから、むしろSwingの話題としていいのではないかと。
Swingで独自形式のウィンドウ作りたいんですが、 やり方がさっぱり・・。 資料などあれば教えていただきたいです。 付箋みたいなタイトルとかがないウィンドウを表示させたいのです。
ありがとおお
950 :
デフォルトの名無しさん :2006/02/12(日) 12:13:48
結論:クライアントはC#で。
>>940 すまん。
いちいちマウスを使わない上に -> いちいちマウスを使わないといけない上に
だった....orz
なあ、JLabel とかに設定するテキストで静的じゃないものってちゃんと HTML でエスケープしてる?
JLabelに動的のものおいたことないからなぁ 通常そういうのはテキスト系に配置して変更不可能とかにしておくんじゃない?
いや JLabel だけじゃなくてさ。DefaultTableCellRender 使ってる JTable もそうだし。
イカス MetalTheme ってどっかに転がってない?
Winamp触ってて思ったけど、もういっそのことスキンを全部統合して欲しいな 実際は無理があるんだろうが質の良いスキン見るとそんなわがままを言いたくなる
>>957 tDiaryとWinampとFirefoxの統合とかあったら素敵過ぎて笑えるかも。
Javaに限ればSkinLFの利用を強制するとかかな…
JavaのL&Fはどれもこれも中途半端で、良いのないね。
SubstanceLAFはよくできてる
Synth専用のスレが欲しいね でもJava用スキンに理解のある人の集まる板ってどこにある?
ここ
でもセンスが・・・いやなんでもない
おっしゃー自作するぜー でもセンスが・・・いやなんでもない
巷に溢れるスキンがそれほど素敵センスなわけでもないし。 そんなに気にすることないんじゃないの?
ガキの頃隠れて読んでたエロ雑誌でスキンスキン出てたの思い出すので あまりこの言葉は好きではない。
だからこそ俺は好きんだ。
それセクハラ
LaF LaF言ってると裸婦を思い出すので あまりこの言葉は好きではない。
971 :
デフォルトの名無しさん :2006/02/20(月) 23:03:47
流れをぶった切ってすみません。 チェックボックスやラジオボタンの表示文字列を二段にすることはできますか?
文字列をhtmlで書けば大抵のことはできるよ
おお、そうなんですか。 ラベルの文字列は一行にしかできないもんだと、ちょっと諦めてました。 文字列をhtm化というのをやったことないのですが、早速調べてみます。 ありがとうございましいた。
Swingでボタンを配置した後にそのボタンを押すと画面が終了する書きかたってどうすればいいのでしょうか?
disposeってことかな。 「画面が終了」ってのがプロセスを終わらせる事をだとしたら、 DefaultCloseOperationをEXIT_ON_CLOSEにして、disposeとか。 もしくは単にSystem.exit()
>>976 どうもありがとうございました。
disposeはよくわからないのでSystem.exit(1)で通りました。
すいません詳しくjavax.swingについて説明されているサイトとかありましたら教えてください
disposeも理解できなくて大丈夫か? 親画面→子ダイアログと開いた状態で、 子ダイアログを終了させるつもりで、System.exitしたら、 全部の画面が終了してしまうからな。
>>980 えっと・・・親画面しか使わないので今のところは大丈夫です。
ちなみにdisposeってどう使うんですか?
ウインドウを使わなくなったときに呼ぶ 後始末に必須なのだ
>>982 親から子を呼んだときに親を表示しなくするってコトですか?
ナニモカモガチガウ!!
つ はじめてのJava
>>981 親画面から子ダイアログを出したとする。
子ダイアログで、「閉じる」ボタンを押したら、子のダイアログは終了して、親画面に戻るワケだ。
このとき、子ダイアログの「閉じる」ボタンの処理でやるのが、子ダイアログのdispose()。
ここでSystem.exitしてしまうと、プロセスが終了して親画面もろとも終了する
hide()というのもあるが、これは見えなくするだけで、
画面が終了して、ウィンドウが開放されているのではない。
#ちなみにsetVisible(false)ってやると、どっちになるんだろう。。。
987 :
986 :2006/02/21(火) 20:47:32
>>986 >#ちなみにsetVisible(false)ってやると、どっちになるんだろう。。。
JDK1.5のjavadoc見てなかった。
show()とhide()は、deprecatedになったのか。ということは、setVisible(false)はhide()だったのだな。
そういうこと 終了して破棄するなら setVisible(false) したあとに dispose() を呼ぶ あくまでも破棄するのはシステムリソースであってクラスは破棄してないのに注意な 再構築すれば以前の状態に戻る
みんな優しいね。
>>988 クラスを破壊するのはどうすればいいんですか?deleteって無いし。
echo > foobar.class
>>990 スコープ出ればいいんだけど、明示的にやるなら
anInstance = null;
で、後はGCまかせ。
スコープ抜け直前でnull代入しまくる予感。
nullの代入は意味があるところ以外ではやるなよ あとから追えなくなる それが必要なときは大抵スコープの設定が悪いだけ
♥
まだ低速か
1000 :
デフォルトの名無しさん :2006/02/22(水) 00:46:53
1000なら掘る
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。