Java標準低速GUI 6 AWT/Swing

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2008/02/09(土) 11:06:14
どうしてもバグければ JPopupMenu#setLightWeightPopupEnabled を false にしてみる手も
953デフォルトの名無しさん:2008/02/09(土) 11:47:18
バグ-ける
954デフォルトの名無しさん:2008/02/09(土) 11:59:19
その活用形はおかしい
バグ-かろう
バグ-かった
バグ-くない
バグ-い
バグ-ければ
955948:2008/02/09(土) 13:01:03
昨日、速攻、JLayeredPane 組み入れました。

気がついたのは、

より上位の Layer のコンポーネントが、より下位のコンポーネントを
完全に覆い隠すと(感覚的にいうと lower.getBounds() < upper.getBounds())
のとき下位のコンポーネントが描画されない(消える)

つーことがありました。
理屈としては、そのほうが、高速化が図れるのかもしれないけど、
上位の矩形のイメージが透明化されてるときちょっと困るんだけどなぁ。
956デフォルトの名無しさん:2008/02/09(土) 13:38:19
>>955
上位レイヤのコンポーネントでsetOpaque(false)でどう?
957デフォルトの名無しさん:2008/02/09(土) 13:41:41
setOpaque(false) してる?
958948:2008/02/09(土) 15:38:21
>>956,957
レス、どうもです。
setOpaque() してると思うんですが、今日は、職場でないので
確認できないっす。火曜日にチェックします!
みなさんは休出っすか?
959デフォルトの名無しさん:2008/02/09(土) 15:41:04
>>958 は 3 回くらい死んでも良いと思う
960デフォルトの名無しさん:2008/02/09(土) 18:30:57
つーか自宅にPCないんか
961945:2008/02/10(日) 03:09:13
おいおい、会社で趣味プログラミングかよw

それはともかく、>>952さんありがとうございます。
ポップアップでまくりですよ。

そして、実験の報告。

>・JLabelに文字を表示させた場合

結果:×
レイヤードペインに文字ばっかりのJLabelを乗せてみた。
文字の後ろにメニューがでた。文字の隙間からメニューが見えてるw
マウス動かすと文字の前に来るあたりの挙動は一緒。

>・普通にコンテンツペインにJLabelを置いた場合

結果:○

当たり前か。
962デフォルトの名無しさん:2008/02/13(水) 19:28:37
現在TransferHandlerを用いてJTreeにコピーアンドペーストの機能を付加しています。
同様のアクションをJPopupMenuにも加えたいのですが、どのようにすればよいでしょうか?
CTRL C, CTRL Vではうまくいくのですが、JPopupMenuからアクションを行うと、ソースが変わってしまいだめなようなのです。
TransferHandlerのcopyのアクションのコードを見てみると、アクションソースがJComponentのインスタンスでなければ弾いているのが原因のようです。
そこで
// a:TransferHandlerのアクション
private Action createAnotherSourceAction(final Action a,final Object src){
 return new AbstractAction(){
  public void actionPerformed(ActionEvent e) {
   e.setSource(src);
    a.actionPerformed(e);
   }
  };
}
こんな感じで新たに生成してやるとうまくいくのですが、わざわざ作り直すのは抵抗があって・・・
何か打開策がありましたらご教授ください。
963デフォルトの名無しさん:2008/02/13(水) 20:16:03
>>962
アクションが操作対象となるJTreeのインスタンスを持てばいいだけじゃないのか?
964962:2008/02/15(金) 09:33:09
聞いておきながら遅くなってしまってすみません。
JComponentのインスタンスでなければ弾いているので、そもそもアクションまで起こっていないんです。
CopyActionくらい自分で実装して、>>963さんのおっしゃるように対応したコンポーネントのインスタンスを持たせていた方がいいかもしれないですね。
ありがとうございました。
965デフォルトの名無しさん:2008/02/23(土) 11:27:45
例えばリストにTransferHandlerを設定するとき、COPYなのかMOVEなのかCUTなのか判定させたいときどのようにすればよいのでしょうか?
それを実装するコンポーネントでどのようなアクションを取ったかを調べられれば問題ないのですが、それがMouse系のリスナーではスマートに調べられなくて困っています。
教えください。
966デフォルトの名無しさん:2008/02/23(土) 11:36:04
勘違いしていました。
何十回か氏んできます。
967デフォルトの名無しさん:2008/02/24(日) 11:38:09
GUIのデザイナはなかなか決定的なものがないようなのですが、
メジャーどころだとNetbeans付属のものやVisual Editorがありますよね。
ほかにもJformDesignerや、jvilderなどがあるようです。

みなさん、GUI開発にはどんなツールをお使いですか?
968デフォルトの名無しさん:2008/02/24(日) 11:48:00
テキストエディタで手書きしてまつ・・・
969デフォルトの名無しさん:2008/02/24(日) 11:51:42
jiglooがなかなかおすすめ。
慣れないうちは思うようにデザインできないけど慣れたらかなり使いやすいかも
970デフォルトの名無しさん:2008/02/24(日) 11:54:49
私はVisual Editor。でも、ちょっとコンポーネント置いただけですぐ
1000行ぐらいいっちゃうのがちょっとアレですが。

jiglooは冗長にならないように書けます?
971デフォルトの名無しさん:2008/02/24(日) 12:28:06
Visual EditorってGroupLayoutサポートしてましたっけ?
あれ使えばそんなに冗長にはならないですよ
個人的に一つ一つのコンポーネントのプロパティ設定で勝手にブロックで囲んでくれてるのが見やすくて好きです。
972デフォルトの名無しさん:2008/02/24(日) 12:50:00
残念、Visual EditorにはGroupLayoutのサポートはまだないみたいです。
他のデザイナを試してみることにしましょう。Jiglooか、もうNetbeansかな。

EclipseのプラグインでWindowBuilderというのもこれに対応しているようですが、
日本で使ってる人があまりいなさそう・・・
973デフォルトの名無しさん:2008/02/24(日) 14:39:26
ソースコード生成するんじゃなくてXAML式に
書けるGUIデザイナが欲しすぎる。
974デフォルトの名無しさん:2008/02/24(日) 15:14:14
リファクタリングとかソースとの動機が取れなくなりそうだ
975デフォルトの名無しさん:2008/02/24(日) 15:54:12
一般ブラウザ並みに JTextPane 強化して HTML ベースで GUI 組めるようにしたほうが
何かと合理的。
976デフォルトの名無しさん:2008/02/24(日) 16:02:31
それはねーよ
細かいイベント等制御するためのSwingなんじゃねーか
HTMLベースでいいのならWEBアプリにするだろ
977デフォルトの名無しさん:2008/02/24(日) 16:11:07
onmouseover などからイベントリスナ呼びゃいい話でしょ。必要なら追加すりゃいいし。
Web 開発の資産やスキル転用できるし、単純にブラウザコンポーネントとしても転用も可能。
まじめに考えてるわけではないのでカスタムコンポーネントの追加方法なんか考慮する
必要はあるが、そんな頭から否定されるほど悪い話ではないと思うが。
978デフォルトの名無しさん:2008/02/24(日) 16:27:11
そんなの全く考えたことなかったから結構新鮮だわw
まぁ今の環境で満足だし、そこまで外部化してしまわなくてもいい気もするなぁー
979デフォルトの名無しさん:2008/02/24(日) 17:43:06
GUIコンポーネントは宣言的に置くようにしてロジックは別にしたいってことでしょ
JavaFXがやろうとしてるんじゃないかな

ただXMLベースじゃないみたいだけど
980デフォルトの名無しさん:2008/02/24(日) 17:49:05
そこまでWeb開発の資産やスキルを転用したいのなら、
スタンドアロンアプリでTomcat動して、UIはブラウザ、ってすればいいんじゃね?
981デフォルトの名無しさん:2008/02/24(日) 18:09:12
アプレットや Web Start とかで使えねんじゃ。
982デフォルトの名無しさん:2008/02/24(日) 18:14:29
XULを再発明したいのか
983デフォルトの名無しさん:2008/02/24(日) 18:37:25
JSP や JDBC を再発明と言う?
別に XUL の Java 実装でも良いけど。
984デフォルトの名無しさん:2008/02/24(日) 18:46:16
あ、いやこの話はそろそろやめる。
985デフォルトの名無しさん:2008/02/24(日) 19:19:48
>>977
scriptのIDEサポートとかJavaのほかに別言語を覚えないといけないとか
そもそもブラウザによって違いがあるというのに・・・

ボタンクリック等のイベント程度でいいのなら別にかまわんとおもうけど
986デフォルトの名無しさん:2008/02/24(日) 21:36:38
XMLは長ったらしすぎるので
すっきりとロジックと融合したGUIが宣言ベースでかけるというのが
売りなのでしょう。
ただ、いまいち方向性が分からないというのは・・・。
987デフォルトの名無しさん:2008/02/24(日) 21:57:42
SWTスレとマルチで失礼します。

クライアント側のJavaで、RTF文章を何らかの形で表示(編集できなくてもOKです)させたいのですが、
JEditorPaneはあまりにも古すぎてJREに同梱されているLICENSE_ja.rtfすらマトモに読めない、という
情けないことになっています。他に何らかの代替/回避方法はないのでしょうか?
988デフォルトの名無しさん:2008/02/25(月) 11:01:37
RTFをパースして使えるコンポーネントに流し込むところを自作する
989デフォルトの名無しさん:2008/02/25(月) 11:06:57
うふふw鬼ww
990987:2008/02/26(火) 10:29:05
>>988
>>989
いや、マジメな話、(ライブラリ等を使うかは別にして)今のところ、ググって引っかかるのはそのアプローチしかないみたい。
もう少し簡単な方法がないかと思って質問してみたのですがね(笑
991デフォルトの名無しさん:2008/02/26(火) 10:43:02
SWT なら OLE でハメ込めるんじゃなかったっけ?
992デフォルトの名無しさん:2008/02/26(火) 10:48:04
いまどきそれだけのためにSWT使うってのもなぁ
993デフォルトの名無しさん:2008/02/28(木) 01:57:15
非常に抽象的な質問で申し訳ないのですが、スクロール可能なコンポーネントを作る際、Scrollableを実装するだけではだめなのでしょうか?
単純に実装してJScrollPaneにのっけてやるだけでは、実装したメソッドのうち、
getScrollableTracksViewportHeight()
getScrollableTracksViewportWidth()
の二つは呼び出されるのですが、肝心の
getPreferredScrollableViewportSize()
が呼び出されないのです。
どうしてでしょうか?
994デフォルトの名無しさん:2008/02/28(木) 03:04:21
みんなBoxLayoutはつかってないのか?
ほとんどこれ1本でやってるんだけど。
995デフォルトの名無しさん:2008/02/28(木) 03:21:59
> 993
getPreferredSize()はどう実装している?
996デフォルトの名無しさん:2008/02/28(木) 08:45:59
>>995
すみません。寝ぼけてたようで、
getScrollableTracksViewportHeight()
getScrollableTracksViewportWidth()
の判定で必ずtrueがかえってしまうようになってしまってました。

というわけでスレ汚してしまったのでお詫びに次スレ建ててきました・・・が、タイトル間違えてしまいました。
本当にすみません。板まで汚してしまったみたいです。

http://pc11.2ch.net/test/read.cgi/tech/1204155623/
997デフォルトの名無しさん:2008/03/01(土) 17:48:07
1レス埋めて去る。
998デフォルトの名無しさん:2008/03/01(土) 18:54:53
ところで次スレは上の見すったやつ使うの?
せっかくスレタイ変えたのに
999デフォルトの名無しさん:2008/03/01(土) 19:24:19
っと、気づいたらもう999かよ
1000デフォルトの名無しさん:2008/03/01(土) 19:25:58
上野でいいじゃん
細かいこと気にするなよ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。