[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 14:05 / Filesize : 117 KB / Number-of Response : 486
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java低速GUI Swing 9



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

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 ]
なんかややこしそうなので妥協します・・・
ありがとうございました

101 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 02:57:20 ]
上限4文字Maxの都道府県入力フィールドで
「わかやまけん」とか読みを入力するときだけリミッターを外すとか
みんなしてないのかな?

102 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 03:02:32 ]
都道府県入力フィールドに入力制限なんてつけないもの・・・
表記ゆれが怖いからコンボボックスじゃない?普通

103 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 03:47:10 ]
ある程度出来てから調整したほうがいいよ。
たぶん一から作り直しになるだろうけど、frameworkとかlibrary化するってのはそういうものだと諦めたほうがいいだろう。
その変換で無駄な感じとは思っていても、たいていは思ってたほどコストでもないからそのまま逝っちゃうってのがおおいけど。

104 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 04:24:47 ]
文字一つごとに膨大な計算をするのでフォントが複雑だと体感できるほどに遅くなることがあるんですよね。
入力中もリアルタイムで見た目を更新するので、うひゃ〜なんですけど、時間があればやります。ありがとうございました

105 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:20:12 ]
同じデータを用いて2つのテーブルを作りたいのですが、
1つのフレームに複数のテーブルを設置する事は出来るのでしょうか?
また、フレームを2つ作った場合、片方のテーブルのデータを変更した時に
もう片方のデータも同時に自動で変更するという事は出来るのでしょうか?

106 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 14:01:37 ]
>105
同じデータを使ってTableModelを作ればいいだろう
JTable自体は二つ、TableModelを共通のものとかにすれば自然とそうなるんじゃないか?

107 名前:ウォシュレットのアームめがけて排便する俺 ◆06NY4sFIG. mailto:sage [2010/01/04(月) 20:33:06 ]
>>105
JavaAPIのJavadocからもリンク張られてるけど、
java.sun.com/docs/books/tutorial/uiswing/components/table.html#data
あたりも読んでみては。

106の方も言ってるけど、
この図のうち、
(TableModelやAbstractTableModelを継承した)Table Model Objectを1インスタンス、(JTableを継承した)Table Objectを2インスタンス作る。
んで、2つのTableのイベントリスナを同じModelに登録(addTableModelListenerメソッド)しとけば、
Model変更時にfireTableDataChangedみたいなメソッドで双方のTableに通知できる。


入力に使った方のTableも、入力イベントじゃなくて、
もう一方の方と同じようにfireイベントで更新しないといけないんじゃないかな。
(入力イベントで行うのはModelの更新だけ。もちろんModelの先にあるTable Dataも更新されるだろうけど。)



108 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:34:19 ]
ID、パスワード用のテキストボックスがメインのログイン画面があり、
htmlみたいにデザインを変更したいとの要求が上がっています。
Swingのhtml的デザインってどこまでできるのでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 11:33:11 ]
>>108
HTMLを使ったSwingコンポーネントのレイアウトは無理。

Swingの各種LayoutManagerのレイアウト機能はHTMLやCSSよりはるかに優秀。
リキッドデザインとかお手の物。CSSハックとかバカバカしくなって、戻れなくなるよ。

110 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 11:44:16 ]
htmlはcellも少ないしテーブルでいいのかなって思うけど何がダメなの?

111 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 12:36:16 ]
だめなとこなんかどこもないよー
でもswingのhtmlがレイアウトできるのはjavax.swing.text.Viewであって
swingコンポーネント(JComponent)ではないんだ
レイアウト周りのAPIは結構似てるけど。

112 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 12:54:59 ]
108です。
アドバイスありがとうございます。
cgiからアプレットに移行したシステムで、cgiがログイン画面をhtmlで変更できますよ、としていたので、
そのままの要求がアプレットにも上がってきた形になってます。

イメージとしては、表示したいhtmlの内容を設定ファイルに書いておき、
それをロードして、そのレイアウトでアプレットの画面を表示することをしたいです。

つまり、アプリ改修なしで好きなタイミングで好き勝手にデザイン変更することが求められ、
htmlに慣れているので、html以外のデザイン変更方法は受け付けない、というのが要求です。

凝ったことはしない+入力部品はID、パスワードだけで、増減はなしです。

Swingに取り込むときの設計イメージがわきません。アドバイスいただければと思います。


113 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 12:56:51 ]
>>112
文がおかしかったので、

cgiがログイン画面をhtmlで変更できますよ

htmlでできているのでログイン画面を自由にで変更できますよ

114 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:07:47 ]
それでいくらくれるんですか?

115 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:11:30 ]
DQNはweb何とかだけやってればいいのかなって思うよ。やっぱり改めてそう思った。

116 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:14:25 ]
そういえばJWebPaneってJava7に入るのかな。
>>112
もしその機能が本当に重要なのであれば、
ログイン画面はApplet化しないでウェブブラウザに任せる、つまり
htmlのままおいておくべきだとおもうけど。

117 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 14:58:19 ]
↓こういう取り組みもあるけどね。

ikemen.googlepages.com/htmltablepanel

でもなー、客のレベルも相当アレそうで先が思いやられるので、
難癖付けて断るのがベストだと思う。



118 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 15:33:54 ]
>>117
うおおお、これはすごいですね。
イメージが付いてきました。

119 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 19:32:01 ]
こういうDQNってさ、なにげなく白い奴のしゃぶりをやっちゃって、もうフィックスしちゃってんだろうなと思った。

120 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 19:39:10 ]
狂牛病に取り付かれたスポンジ脳と同じで、脳味噌スカスカって感じはするよね。

121 名前:デフォルトの名無しさん [2010/01/08(金) 19:45:08 ]
うおおお、

122 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:01:21 ]
仕事で飯喰うなら、こんな所に丸投げするなよと思う。
そのうちhtmlをswingになんてアフォフレームワークを売り物にしてくる業者が出て来たら(ry

123 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 11:59:50 ]
>>122
仕事増えるならいいじゃん。
仕事ください

124 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:52:11 ]
JTextComponentのサブクラスは文字を表示することができますが、
文字列の座標情報?などはどうやって管理しているのでしょうか?

JTextComponentはDocumentインターフェイスに依存しているところまではわかるのですが、
そのあとがイマイチわかりません



125 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:44:57 ]
何をしたいの?
解析したいだけならデバックすれば?

126 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:26:39 ]
座標はViewが管理してます
ViewFactoryにDocumentのElementを渡して作ってもらいます

127 名前:124 mailto:sage [2010/01/13(水) 21:09:05 ]
>>126
確かに、viewで管理しているみたいですね(さっき、軽く読みました)

ところで、どうやって文字を表示しているんですか?
java.awt.graphicsは使っていないみたいなんですが



128 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:32:08 ]
なんかデジャヴが・・・ 前にJTableについて訊いてた人と一緒? まぁどっちでもいいけど
JButtonとかJTableとかJTextComponentとかSwingにあらかじめ用意されてるコンポーネントはみんな、
自分では描かずにButtonUIとかTableUIとかTextUIとかに処理を委譲している
だからJButtonとかJTableとかJTextComponentとかの方には表示関係のコードやマウス・キー処理のコードはない
ButtonUIとかTableUIとかTextUIとかの方にはルック&フィールごとに異なったサブクラスがあって(MetalButtonUI,等)、
それらがルック&フィールごとに異なった内容を表示し、ルック&フィールごとに異なったマウス・キー処理をしている
見るならそっち側

129 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:39:38 ]
>127
View#paint(Graphics g,Shape allocation)ってあるよな?

ちなみにTextUIってのは単なるViewFactoryだ。

130 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:41:49 ]
すまん。「BasicTextUIはTextUIを継承したViewFactory」の間違いだ。

131 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:30:28 ]
>>128-129
ありがとうございます

132 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:29:12 ]
JPanelで、paintComponent(Graphics g) をオーバーライドして描画を行う際
描画範囲がJPanelのサイズを超えた場合、自動でJPanelのサイズを拡大するには
どうすればよいですか?

133 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:33:46 ]
getPreferredSizeもオーバーライドして、描画範囲が超えないようなサイズを計算して返す

134 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 08:00:54 ]
getPreferredSizeに頼るとほとんどsetSizeが無効になりますよね?
setSizeでセットしたサイズ内で収まるようにするプログラムしたいときはnullレイアウトしかないのでしょうか。

135 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 08:36:51 ]
getPreferredSizeがsetSizeしたものより大きな値を返さないようにするとか。


136 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 09:59:25 ]
1.誰かがgetPreferredSize()呼んできたので100x100を返した。
2.そしたら誰かがsetSize()に80x80を渡してきたので不本意ながら従った。
3.そしたら誰かがクリップ領域10x10+20+20にしてpaintComponent()を呼んできた。

こんな状況?

クリップ領域は気にせず半径500の円弧だろうがなんだろうがガンガン描いたらよろしい。
どうしてもクリップ領域大きくしたいならrepaint(x,y,w,h)だけ呼んで
paintComponent()を終わらせればまたいつか新クリップでpaintComponent()が呼ばれる。

paintComponent()中にどうしてもコンポーネントサイズを大きくしたくなったなら
revalidate()だけ呼んでpaintComponent()を終わらせる。
そのうちgetMinimumSize()が呼ばれるので希望サイズを返す。
getPreferreSize()やgetMaximumSize()が呼ばれてもInteger.MAX_VALUEを
返しておけばいい。
やがてsetSize()が呼ばれるだろう。もし希望が叶わなくてもここは絶対服従。

137 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:34:24 ]
いや違うんです。
なんか誤解してるようですが、newしたときとかでその初期セットサイズ setSize(a,b)のまま固定しておきたくて、
基本的にサイズのは変更を許さず、resizeとかのレイアウト変更によって初期セットサイズを変更されたくないって意味です。
場合によっては縮小のときだけは許すが、拡大はmax sizeはsetSize(a,b)まで。
そういうときはnullレイアウトしかないのでしょうか。
レイアウトマネージャ使うとsetSizeの設定は実質意味をなしませんよね。



138 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:43:42 ]
paintComponentでやるしょりか?

139 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:52:20 ]
getPreferreSize()だろうがsetSize()だろうが実際はフレームと配下のコンポーネントのバランスをLMが勝手にとるから
AWTならnullレイアウトでいいけどSwingだと修飾がJava2Dだからなぁ。
ゲームだとGUI自前だしCanvasのサイズを強制したいからnullレイアウト使うがね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<117KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef