- 1 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:13:39 ]
- ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 Java低速GUI Swing 8 pc12.2ch.net/test/read.cgi/tech/1227234261/ Java低速GUI Swing 7 pc11.2ch.net/test/read.cgi/tech/1204155623/ Java低速GUI Swing 6 pc11.2ch.net/test/read.cgi/tech/1190807478/ Java低速GUI Swing 5 pc11.2ch.net/test/read.cgi/tech/1161139809/ Java低速GUI Swing 4 pc8.2ch.net/test/read.cgi/tech/1140533866/ Java低速GUI Swing 3 pc8.2ch.net/test/read.cgi/tech/1121700954/ Java低速GUI Swing 2 pc8.2ch.net/test/read.cgi/tech/1095398949/ Java低速GUI Swing pc5.2ch.net/test/read.cgi/tech/1062271447/l50
- 2 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:14:24 ]
- VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans www.netbeans.org/index_ja.html Eclipse+VisualEditorPlugin www.eclipse.org/ www.eclipse.org/vep/ Jigloo cloudgarden.com/jigloo/index.html
- 3 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:15:08 ]
- AWTもターゲットに入ってていいんだよね?
Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど 混ぜちゃ駄目なんですか・・・・? A. 今まででは、「駄目」というのが正解です。 が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。 正式リリースがされるまで、情報の錯綜があって混乱すると思いますが 普通の人にとっては「まだ駄目」という状況だと思ってください。 Q. Nimbusって何よ。 A. 次期Swingの標準となるとされているLAFです。 元々は、SUNのGnome環境のテーマに使われていた見た目を移植したものになります。 実装にはXMLベースでLAFを定義できるSynthLookAndFeel を利用しています。 jdk6の開発版で試す事ができます。 Q. こんなプログラムを作れって言われたんですが・・・ A. 宿題スレへどうぞ。 Q. なんでスレタイに低速って入ってるの? A. まだまだ速くなるってことさ。
- 4 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 00:19:25 ]
- スレ立て乙
Nimbus って、今でも JDK でしか使えないの? うちの環境では JRE でも Nimbus が使えるけど。 JDK もインストールしてあるから、 JRE が JDK 付属の Nimbus を読み込んでる?
- 5 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 00:40:25 ]
- Nimbusサポートは6u10以降だから、
前スレ開始とほぼ同じ時期の登場だったかな。 次スレで直せばOKじゃない?
- 6 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 01:33:10 ]
- XAML使えるようにならないかなあ
- 7 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:23:00 ]
- >>6
はあ?
- 8 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 13:27:31 ]
- このスレpart10だからな。
前1がSwing/AWTスレ8をディスったからテンプレにないだけで。
- 9 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 13:36:32 ]
- >>8
Swing/AWTスレ8のアドレス希望
- 10 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 14:00:26 ]
- 断る
- 11 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:00:39 ]
- >>8
Disられてるのは、↓のスレタイじゃないの? > Java低速GUI Swing 6 > pc11.2ch.net/test/read.cgi/tech/1190807478/
- 12 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 10:52:10 ]
- jtableでソート出きるように変更したら、うまく背景色が表示できなくなりました
どなたか、教えてください //2列目以外はすべて、数字でソートする。 model = new DefaultTableModel(columnName, 0) { @Override public Class getColumnClass(int columnIndex) { if(columnIndex == 1) return String.class; else return Integer.class; } } //奇数行は白、偶数行は水色で背景を塗りつぶす。 private static class TestTableCellRenderer extends DefaultTableCellRenderer { private static final Color BGCOLOR = new Color(135, 206, 250); @Override public Component getTableCellRendererComponent(JTable tb, Object val,boolean isSelected, boolean hasFocus,int r,int c){ setBackground(r % 2 == 0 ? Color.white : BGCOLOR); return super.getTableCellRendererComponent(tb,val, isSelected,hasFocus,r,c); } }
- 13 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 12:48:48 ]
- 今は無理
- 14 名前:12 mailto:sage [2009/12/21(月) 14:38:45 ]
- >>13
どうしようもないってこと?
- 15 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 20:07:01 ]
- >12
エスパーすると、レンダラーの設定をString.classのカラムに対してやってない? table.setDefaultRenderer(Integer.class, new TestTableCellRenderer()); にしないとダメだよ
- 16 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:17:54 ]
- swingについて質問
コンポーネントAをコンポーネントBにadd()し、コンポーネントCにもコンポーネントAをadd()します。 その後にBとCを表示してみると、Bがうまく表示されません。 どのようにしたら、B、CどちらにもAを表示させる事ができますか? JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); panel1.add(label); panel2.add(label); frame.add(panel1, BorderLayout.NORTH); ←表示されない frame.add(panel2, BorderLayout.SOUTH);
- 17 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:30:15 ]
- そもそも一つのコンポーネントを複数のコンテナに含めることができるのか?
- 18 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:40:20 ]
- >>16
コンポーネントAがBに表示されずCにしか表示されないということであれば、 コンポーネントAを2つ生成(内容は同じだが別のオブジェクト)して、 一方をコンポーネントBに、もう一方をコンポーネントCにadd()するしかないかと。 JLabel label1 = new JLabel(); JLabel label2 = new JLabel(); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); panel1.add(label1); panel2.add(label2); frame.add(panel1, BorderLayout.NORTH); frame.add(panel2, BorderLayout.SOUTH);
- 19 名前:16 mailto:sage [2009/12/21(月) 23:57:13 ]
- 画面のレイアウトが2種類あるのですが、ユーザに画面レイアウトを選ばせたいと考えています
ちなみに、レイアウトが替わっても表示するものは同じです JPanel panel1 = new JPanel(); ← レイアウトA JPanel panel2 = new JPanel(); ← レイアウトB panel1.add(label); ←表示するもの panel2.add(label); >>18 表示する物が同じだから1つのインスタンスでどうにかしたい と思いました
- 20 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 02:58:29 ]
- >>19
CardLayout
- 21 名前:20 mailto:sage [2009/12/22(火) 03:00:07 ]
- ごめん勘違い。
同じものを配置替えするという方法を取るところだろうね。
- 22 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 04:01:20 ]
- ユーザーがレイアウトを選ぶたびに
BかCに add し直すしかないのでは
- 23 名前:デフォルトの名無しさん [2009/12/22(火) 04:21:44 ]
- 同意
- 24 名前:16 mailto:sage [2009/12/22(火) 10:14:08 ]
- やっぱり、add()し直すしかないですよね
実装する時に手を抜きたかったのですが、無理ですね ありがとうございました
- 25 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:19:57 ]
- ある画面実行中に、各Componentの登録済み全イベント処理クラスを知りたいのですが、
Component#getListeners(Class<T> listenerType)の中にあるリスナー群がすべてのイベントになるでしょうか? つまりgetListeners(各イベントクラス)を10イベントリスナークラス分実行してとれたものを、 これ以外のイベント処理クラスは使用していません、と言いきれるものになるでしょうか?
- 26 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:26:13 ]
- 何をしたいかよくわからないんだが、とりあえず、10ってどこから出てきた数?
- 27 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 15:52:07 ]
- >>26
Component#getListeners(Class<T> listenerType)の中で使われてゐたリスナークラスの種類です。
- 28 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 15:59:48 ]
- 事実上、リスナーってインタフェースだからな。
ActionListenerとMouseListenerどっちも実装してるクラスとかあっても、 ちっとも珍しい話ではない。 getListenersで得られたアクションリスナが、 実はマウスリスナでもありました、 というのは自前でinstanceof演算子で判定するしかないのでは。 とエスパー回答。何がしたいかわからんが、java.util.EventListenerProxyも 読んどいた方がいいような。
- 29 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:07:29 ]
- >>27
あぁ、10の意味がわかった その中に Button とかでよく見る ActionListener が無いのが不思議ではなかったか? 残念ながら Component#getListeners はサブクラスでオーバーライドされている 全部の一覧を得るのは無理じゃない?
- 30 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:14:03 ]
- >>29
うーん。でもJButtonのgetListenersはオーバライドされていないんだよね…
- 31 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:19:48 ]
- JComponentのオーバーライドが効いてる
JComponent以下はEventListenerListを使っててどんなリスナでも入る
- 32 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:24:55 ]
- >>31
おお、すみません。見落としてました。 対象部品のgetListeners呼んでおけば各部品の全イベントが取れそうですね。
- 33 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 19:52:37 ]
- 教えて下さい
今SourceForgeでJavaMIDIMixer作ってるモノですが MDIウィンドウを画面の下や右にピタッっと張り付ける そんな事を実現するスタンダードな手順はありますでしょうか?
- 34 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:10:19 ]
- >>33
MDIってことはJDesktopPaneとJInternalFrameか。 ドラッグして外周に近づいたら吸い付くってやつなら ttp://terai.xrea.jp/Swing/MagneticFrame.html こんなの?
- 35 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:50:44 ]
- ありがとうございます^^
これはすばらしいですね
- 36 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 23:51:54 ]
- ドッカブルでドラッガブルなGUIならDnDAPI使って自前で作ったがjava.netの何処かでみたぞ。
- 37 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 22:55:08 ]
- JScrollPaneにJTable、JTextPaneなどを追加すると、最小限(現在選択している場所)の描写しかしませんが
どうやって、実装してるんですか?ヒントをください
- 38 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 22:57:33 ]
- InvalidateRectのこと?
- 39 名前:37 mailto:sage [2009/12/23(水) 23:05:40 ]
- JPanelあたりを継承して、それをJScrollPaneに追加したいな〜と思ったので
- 40 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 23:14:23 ]
- Graphics#getClipBounds
- 41 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 23:20:25 ]
- >>40
JTableのソースを読むと、そんな低レベルのメソッド使ってませんよ
- 42 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 23:23:44 ]
- そりゃ描くのはJTable自身じゃないからな
BasicTableUIみてみろ
- 43 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 23:26:39 ]
- JTableのソースなんて読まなくていいの
ためしに、JPanelにボタンとかリストボックス配置して、 JScrollPaneでそのJPanelかこってみなさいよ Graphics2Dとかが自動的に処理してくれるから、ボタンもちゃんと押せるし、ほかの部分の描写かからないし 画像を張りたいなら、スクロール関係なしで、グラフィックを描写するPanelを設計して、 JScrollPane -> JPanel -> Layout -> グラフィックPanelクラス の順番でつなげればいいだけ グラフィックパネルの中ではそういうの必要ですけどね、 JTableはJTableUIのソースを見る必要がありそうですね がんばってね!
- 44 名前:37 mailto:sage [2009/12/23(水) 23:32:06 ]
- >>42-43
ひとまず、調べてみる ありがとう
- 45 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:01:46 ]
- まてまて。ここは JViewport の setScrollMode() の賢さを讃えるところじゃないのか?
- 46 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 00:33:36 ]
- JViewPortのJDKドキュメントの「高速スクロールアルゴリズム」解説とやらに
知りたいことは全部書かれてる気もするが
- 47 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 13:22:51 ]
- セルの話かと思ったらテーブル全体の話か
- 48 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 13:53:54 ]
- D&Dで部品の配置を変えるGUIツール的なものを作りました。
自由に配置移動やボタンの追加等行って、それを保存呼び出ししたいと考えてますが、 その場合余計なことをせず、TOPのフレームをシリアライズANDデシリアライズで実現できそうでしょうか? ComponentがSerializableなので、シリアライズ保存は想定されているんですよね?
- 49 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 14:47:00 ]
- 一応想定されてるんですが、バージョン間の互換性は保証されていません
XMLEncoder/XMLDecoderの方がいいかもしれません
- 50 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 15:36:00 ]
- 互換性って、JDKのバージョンでなく対象クラスのバージョンですかね?
- 51 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 16:00:07 ]
- Swing各クラスのJavadocに下記の文がいちいち書いてある
> 警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。
- 52 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 20:16:59 ]
- JButtonでボタンをクリックすると、あらかじめ登録しておいた内容を実行しますが
だれが、あらかじめ登録していた内容を呼び出すのですか?
- 53 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 20:41:17 ]
- >>52
どういう内容が知りたいのか図りかねるが 取り敢えずEDTと答えておこう。
- 54 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 20:41:56 ]
- >>52
JButtonの中の人 厳密にいえばAbstractButton#fireActionPerformed その呼び元はDefaultButtonModel#setPressed ButtonUIの中の人がマウスリスナかなんかを使ってマウスの動きを見てsetPressedを呼ぶ
- 55 名前:52 mailto:sage [2009/12/24(木) 20:46:07 ]
- >>53
単純に誰が呼び出しているか知りたいだけで、 とくに意味はありません thx
- 56 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 21:43:01 ]
- IDEでプロファイラ動かすと、Swingアプリの見えないとこでうごめいている
小人さんスレッドがたくさん観察できるよ ※ コンソールからスレッドダンプでもおk
- 57 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:41:34 ]
- イベントとかコールバックとか、
たしかに初めのうちは分かりにくい仕組みではあるよな
- 58 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 11:53:30 ]
- 各画面間の変数アクセスの最良の方法は何でしょう?
画面作成時のコンストラクタで親画面や操作したい画面を渡す? 画面をグローバル(public static)にする。 なんかstritsみたいにこれで行こうフレームワークはないですかね?
- 59 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:00:35 ]
- MVCで設計を見直せばOKでは。
ControllerにViewとModelぶらさげて、 Viewから親画面と子画面をたどり Modelから親データと子データをたどれば 画面間で変数アクセスできなくても無問題。 Webアプリとやらの「自称MVC」とはたぶん違うので注意。
- 60 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:27:00 ]
- 今のところこれで行こう的なフレームワークとかってないんですかね?
もしくはそんな動向の噂とか… なるべく先をにらんだ設計にしたいもので
- 61 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:42:32 ]
- ラベル、ボタン、チェックボックスなどをD&Dして表示位置を変更したいのですが、
JRE、サーとパーティのライブラリ問わずに、適した便利なクラス(マウスリスナー?)知っていたら教えてください。
- 62 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 14:41:03 ]
- >>61
こんなん作ったけど、いまいちうまく動かん。 int x ; int y; boolean init = false; public void mouseMoved(MouseEvent e) { Component c = (Component)e.getSource(); if (!init) { init = true; x = e.getX(); y = e.getY(); return; } c.setLocation(c.getX() +(e.getX() - x), c.getY() +(e.getY() - y)); x = e.getX(); y = e.getY(); }
- 63 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:39:53 ]
- アプレットでブラウザの×ボタンを押して終了したときに、そのイベントを拾うことっててきますでしょうか?
- 64 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 19:01:25 ]
- │A.. B
─┼─── .a │ .b │ Jtableの質問です 上記のような縦列表を作りたいのですがどうすれば良いのでしょうか 表の空欄には数値データを入れて計算等が出来るようにしたいと思っています
- 65 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 19:16:09 ]
- >>63
destroy()メソッドが呼ばれたときに中でメッセージを表示したりは できるけど、閉じるのを防ぐことは出来ないと思う。
- 66 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 10:49:36 ]
- >>64
new JTable(3,3)
- 67 名前:64 mailto:sage [2009/12/26(土) 12:04:16 ]
- 説明不足で申し訳ありません
列ABにString[]、行abにString[][]を使って JTable table = new JTable(String[][],String[])としたのですが、 String[][]を使ったために空セルにInt型のデータを入れられません どうすれば列AB行abを残したまま空セルに数値データを入れられるのでしょうか
- 68 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:08:11 ]
- String.valueOfで文字列化するというのは?
- 69 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:54:57 ]
- 表計算ソフトのようなテーブルを作るなら、
セルレンダラーやセルエディタを駆使しないと難しいよ。
- 70 名前:64 mailto:sage [2009/12/26(土) 13:33:55 ]
- >>68
>>69 ひとまずチャレンジしてみます ありがとうございます
- 71 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 14:07:03 ]
- さがせばスプレッドシートのライブラリあるけど?
- 72 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 12:39:08 ]
- JScrollPaneの中でJViewportがどの様に動いているか研究しているのですが、
スクロールバーをクリックした後に、JScrollPaneのどのメソッドが呼び出されているのかわかりません どなたか教えてください
- 73 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 15:56:07 ]
- スクロールバーをクリックすると、JScrollBarが持ってるBoundedRangeModelのsetValueが呼ばれる
それによってそのBoundedRangeModelに登録されたChangeListenerが起動する BasicScrollPaneUIがここにChangeListenerを登録していて、その中でJViewport#setViewPositionを呼んで表示範囲を調節している JScrollPaneはJViewportとJScrollBarとScrollPaneUIを管理しているだけ
- 74 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 10:08:01 ]
- 一般的なダイアログみたいに右下にボタン配置したいんだけど、どういった風にレイアウト組むのが自然?
- 75 名前:72 mailto:sage [2009/12/29(火) 11:39:40 ]
- >>73
ありがとうございます
- 76 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:48:24 ]
- tes
- 77 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 16:12:26 ]
- BorderLayoutのPAGE_ENDに置いたBorderLayoutのLINE_ENDに置いたGridLayoutにボタンを置くのが俺流
- 78 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 16:35:53 ]
- GridBagConstraints.SOUTHEAST でええやん
- 79 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 00:03:27 ]
- JSliderでツマミのマウスドラッグにより変更された際、ChangeListenerのの中で
((JSlider)e.getSource()).setValue(0); とかやっても、内部的な値は0にされるのですが、ツマミの位置がドラッグされた場所になってしまい 整合性がなくなってしまいます。これを防いでツマミも0の位置に合わせるにはどうすればいいでしょうか?
- 80 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 00:08:36 ]
- SwingUtilities.invokeLater
- 81 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 00:09:19 ]
- あと、e.getSource()とかやめた方がいい
- 82 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 01:22:26 ]
- SwingUtilitiesよりEventQueueを使ったほうがいい
- 83 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 01:22:52 ]
- ありがとうございます。
>>80 なんか振動?みたいな動きをしましたが、結局何も解決しませんでした。 >>81 なんでです?調べるキーワードも分からなかったんですが
- 84 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 02:10:06 ]
- >83
たぶん振動するのは 1.スライダーが動く 2.スライダーの値が0になる 3.マウスがスライダーの上にあるのでスライダーが動く これが繰り返されてるんだと思う。 スライダーをドラッグしたときどうしたいかがよくわからない、もう少し詳しく話してほしい
- 85 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 06:06:09 ]
- なんでそんな不便なUIをおつくりなのか、状況が把握できていないので、確実に悪とはいえませんが、、
Swingは、スレッドセーフではないので、操作するときは、invokeLaterは、ほぼ必須です。 ちなみに、invokeLaterは、SwingUtilitiesでもEventQueueでも一緒ですね。 スライダーがかたかたいうのは、 スライダーに値をセットする前に、 マウスをはなした事にするイベントを、 擬似的に発生させれば回避できるかと思います。
- 86 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 06:07:13 ]
- こんな感じで、スレッドが値と表示値を破壊しないようにできます。
if (EventQueue.isDispatchThread()) { SwingUtilities.invokeAndWait(runnable); }else { SwingUtilities.invokeLater(runnable); }
- 87 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 06:09:48 ]
- e.getSource()は、ソースを見てもどのスライダーなのか、把握できないので、お勧めしません。
JSlider jSliderXXXXXなどと、パネル(フレームでも)のメンバー変数として、準備し、 そちらへアクセスしましょう。
- 88 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 06:14:15 ]
- せめて、e.getSource()の使い道はこれくらいですかね。
if(e.getSource() == jSliderValueA) { jSliderValueA.hoge(); }eles if(e.getSource() == jButtonX) { jButtonX.setXXX(); }
- 89 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 10:06:54 ]
- JSlider#getValueIsAdjusting()の説明は読んだか?
- 90 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 13:36:15 ]
- JSliderの値を反映させないようにってことなら、MouseListener.mouseReleased()でsetValueすればいいんじゃない?
- 91 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:13:53 ]
- >>87
でももし、明らかな場合はいいよね?ローカル変数にコンポーネントのインスタンス作っては 無名リスナークラスを設定しまくってるから、数十行の間に全ておさまってるんだけど・・・
- 92 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 20:19:26 ]
- コンストラクタで渡すのが理想だけど、無名クラスならこういう風にすれば?
final JSlider target = slider; slider.add○○Listener(new ○○Listener(){ public void ○○(○○Event e){ target.・・・; }}); >85 SwingUtilitiesはEventQueueのカバーメソッドなのでなるべくEventQueueを使うように、とどっかに書いてあった
- 93 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 20:50:18 ]
- >>85
やっぱり不便ですね。皆さんありがとうございました。
- 94 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 22:43:21 ]
- >なるべくEventQueueを使うように
これswingの実装を知ってる必要があるんじゃね?
- 95 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 00:13:30 ]
- staticメソッド呼ぶだけだって。
EventQueueのカスタム化も大した労力ではないが。
- 96 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 10:51:30 ]
- TimerQueueがpublicなら・・・
- 97 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 11:57:09 ]
- 現在JTextAreaで入力を行っていて、入力時のイベントをDocumentListenerで受け取っているんですが、
漢字などの変換決定時に同じ文字のRemoveイベントとInsertイベントが飛んできてしまいます。 例えば"ねこ"を"猫"に変換するときに INSERT ねこ [変換する] REMOVE ねこ INSERT 猫 [変換決定] REMOVE 猫 INSERT 猫 まぁ、動作としては正しいのでしょうが、こちらのプログラムの仕様上どうしても最後の重複した猫が 大きな無駄になってしまうので、なんとか変換決定イベントを知りたいのです。 もちろんRemoveイベントも受け取らなくてはならないのでRemoveを無視すれば?というわけにはいきません・・・。 キーイベントかなんかで頑張るしかないのでしょうか?(バグが出そうですが)
- 98 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:12:59 ]
- InputMethodListener使ってInputMethodEventを見張る。
イベントのgetText()やgetCommittedCharacterCount()の長さを デバッグ文で観察しつつ、いろいろなかな漢字変換操作を試してみよう。 確定した瞬間をとらえる判定式が、おのずと導けると思う。 細かいことは忘れた。
- 99 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:31:52 ]
- 普通にprocessEvent辺りだと思うんだが何でそんな面倒に考えるの?
- 100 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 00:43:13 ]
- なんかややこしそうなので妥協します・・・
ありがとうございました
|

|