1 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 11:50:09 ] ハードウェアの高スペック化、JavaVMのホットスポットの高速化に伴い、 パフォーマンスの問題は徐々にですが改善されつつあります。 しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 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
181 名前:デフォルトの名無しさん [2006/12/04(月) 00:49:10 ] paintComponentとかpaintとかで、 いくつも矩形を描いて中に文字をいれたいんだけど、文字の長さや幅に応じて 自動的に矩形のサイズを調節したり、矩形の表示位置がウィンドウをはみだしたり 他の矩形と重なったりしないように表示位置を自動で調節してくれるようにしたい。 こういうのって相当むずかしいですか?
182 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 00:52:17 ] 推奨サイズとかってわかる?
183 名前:181 [2006/12/04(月) 18:17:08 ] 単語をいくつかならべてそれを矩形でかこみたいんですよ。 矩形の大きさは単語が矩形からはみださないように自動的に適切な大きさ計算して 描かれるようにしたい。 そういう単語が入っている矩形がこれまた何個も出したい。 矩形同士もお互い重ならないように自分で適切な位置を計算してそこに表示されてほしい。 そういうのって簡単にはできないのかな?
184 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 19:10:02 ] JLabelにボーダーつければ?
185 名前:181 [2006/12/04(月) 20:09:25 ] 全部自分で描きたいんですよ。
186 名前:六尺兄貴 mailto:sage [2006/12/04(月) 20:27:23 ] TextLayoutとかLineBreakMeasurerとかで調べるとよろし。 結構めんどいよ。.NETは楽なんだけど。
187 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 21:26:44 ] そこまでして自分でやりたい意図が不明だ。非標準のライブラリを排除したいわけでもないし。
188 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 22:51:21 ] やりたいことが良く分からないけど、 SwingUtilities#computeStringWidth()とか、layoutCompoundLabel()とか使って 自分で描画するかな
189 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 23:53:35 ] >>181 >>185 自動でやってくれと言ったり、全部自分で描きたいとか 訳が分かりません。 俺なら、Border設定したJPanelの中にJLabelを埋めていくかな?
190 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 01:35:18 ] デモのアプレットの中にそういうのあったね。>>181
191 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:50:38 ] 文字を四角で囲みたいだけなら、Font#getStringBoundsで領域取得して計算すりゃいいんじゃないだろうか・・・
192 名前:181 [2006/12/05(火) 19:37:37 ] >>191 表示する場所を計算すればいいってのは分かるんだけど、 複数の矩形を表示するってことを考えると、計算が複雑になりそうで できそうもないです。 ちなみに185は私ではありません。
193 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 21:45:16 ] ひょっとしたら、>>94 や>>100 で挙がってるような グラフ描画用ライブラリを使った方が簡単かもしれない。 ノードのみ並べて、ノードのサイズをライブラリ任せにすれば(その辺はライブラリ依存だが) だいたいいけそうな気がする。
194 名前:デフォルトの名無しさん [2006/12/05(火) 23:19:14 ] >>193 チョチョイとサンプルかいてみてよ
195 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 02:57:57 ] ちょいちょい だがあぷろーだに拒否された
196 名前:デフォルトの名無しさん [2006/12/06(水) 10:37:34 ] JGraphいれようとしてるんだが Ant必要なの?これ。 インストールできませんdふぁd;sfじゃs
197 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 15:13:55 ] んなばかな
198 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 20:23:17 ] つかantの動かない開発環境ってどうよ
199 名前:デフォルトの名無しさん [2006/12/06(水) 20:45:26 ] JGraphでほんとうにできるのかよ
200 名前:デフォルトの名無しさん [2006/12/06(水) 20:48:44 ] ほんとうに出来るかどうか、は、何をやろうとしているかに拠る。
201 名前:デフォルトの名無しさん [2006/12/06(水) 20:52:53 ] たくさんのキーワードをいくつかの分類して 分類ごとに矩形を描いて キーワードを矩形の中にならべていきたいわけ。 矩形の大きさはキーワードの長さと種類にあわせて決めたいし、 矩形の表示位置はほかの矩形とかさならないように決めたいのよ。
202 名前:デフォルトの名無しさん [2006/12/06(水) 21:36:49 ] できないでファイナルアンサー?
203 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:40:14 ] コンポーネントのサイズなんていくらでも自由にかえれるだろ
204 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:47:15 ] >>202 オマエには出来ないでファイナルアンサー ってか、既に答を書いてる人がいっぱいいるじゃん。
205 名前:デフォルトの名無しさん [2006/12/06(水) 22:48:16 ] 口だけでは納得いかん 動くコードなら納得がいく
206 名前:デフォルトの名無しさん [2006/12/06(水) 23:02:57 ] コードくれ厨がJavaにまで…
207 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 00:12:43 ] >>201 なにがいいたいのか、俺にはさっぱりわからん。 図かなんか描いてどっかに貼ってみせてみろ。
208 名前:デフォルトの名無しさん [2006/12/07(木) 00:24:40 ] _________________________________ | keyword 11111111111 | | keyword 222222222222222222222 | _______ | aaaa | | | _________________ | うお | ________ | ぎゃああ | | | _______ |あああああああ | | | __________
209 名前:デフォルトの名無しさん [2006/12/07(木) 00:27:06 ] こんな風にできんのか ______________ | keyword 11111111111 | | keyword 222222222222222222222| _______ | aaaa | | | _________________ | うお | ________ | ぎゃああ | | | _______ |あああああああ | | | __________
210 名前:デフォルトの名無しさん [2006/12/07(木) 00:35:22 ] ネトゲの吹き出しみたいなもんか?
211 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 00:52:16 ] Graphicsに描画するんだろ? どうでもできるだろ。
212 名前:207 mailto:sage [2006/12/07(木) 00:52:55 ] >>208 GlyphVector 作って、getOutline() で Shape とかとってくれば 簡単な気がする。
213 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 10:22:21 ] ここまで答えが書かれてるのにできないってのは無いな。 やってないだけ。
214 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 10:53:11 ] 結局アルゴリズムの問題だよな。 やることはJavaだろうがWin32だろうがGTKだろうが変わらない。
215 名前:181 [2006/12/07(木) 12:28:54 ] 文字をいれる枠の大きさぐらいはなんとかなるかもしれんが、 文字が入ってる枠をほかの枠とかさならない位置を計算して 表示するアルゴリズムがわからんじゃないか
216 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 13:31:24 ] なに、Swingと関係ないことで苦労してるの? アルゴリズムの初心者スレいったほうがいいよ。
217 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 14:24:59 ] 複数個のJPanelが存在し, ボタンを押された祭にそれらのJPanelを切り替える事は可能でしょうか? public class SwingTest extends JFrame implements ActionListener{ JLabel label = new JLabel("change"); JButton btn = new JButton("push"); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); public static void main(String[] args){ SwingTest test = new SwingTest("SwingTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } SwingTest(String title){ setTitle(title); setBounds(10, 10, 300, 200); p1.add(btn); p2.add(label); btn.addActionListener(this); getContentPane().add(p1); } public void actionPerformed(ActionEvent e){ getContentPane().remove(p1); getContentPane().add(p2); } } こんな感じで今やっているのですが,ボタンを押しても反応しなくて困っています. どなたかご教授お願いします.
218 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:08:27 ] 一応そのやり方でもできるけど、ちゃんとイベント把握してないとやめたほうがいい たぶんやりたいことはJPanelを切り替えることではなく、レイアウトマネージャにあるやつで足りると思うが
219 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:37:48 ] >>217 解答。ボタンを押すとボタンが消えて、ラベルが現れるなんて、変なGUIだな。 元の状態にに戻れないじゃん。あくまでもテストだよね。 本ちゃんでこんな変なGUI使ったら笑われるよ。 public void actionPerformed(ActionEvent e){ getContentPane().remove(p1); getContentPane().add(p2); validate();//←ここ、ここ }
220 名前:217 mailto:sage [2006/12/07(木) 16:06:49 ] 返信ありがとうございます. validate() を加える事で表示は代わるようになったのですが,また新たな問題が・・・. 今3つのパネルを用意してそれら3つを行き来できるようにしているのですが, この方法を用いた場合何故か3つのパネルを1回ずつ表示させることはできるのですが, 2回目以降即ち違うパネルから再度戻ってきた場合に表示が反映されません. 何度も質問してしまい,お手数だと思いますが,どなたかよろしくお願いします.
221 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:12:04 ] コードも見ないでどうやって解答しろと?
222 名前:217 mailto:sage [2006/12/07(木) 16:22:57 ] すいません. コードを張ろうとしたら大きくなりすぎて,張る事ができなかったので・・・. 表示を切り替えている部分はこんな感じです.public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); if (cmd.equals("1to2")){ getContentPane().remove(パネル1); getContentPane().add(パネル2); } else if (cmd.equals("1to3")){ getContentPane().remove(パネル1); getContentPane().add(パネル3); } else if (cmd.equals("2to1")){ getContentPane().remove(パネル2); getContentPane().add(パネル1); } else if (cmd.equals("2to3")){ getContentPane().remove(パネル2); getContentPane().add(パネル3); } else if (cmd.equals("3to1")){ getContentPane().remove(パネル3); getContentPane().add(パネル1); } else if (cmd.equals("3to2")){ getContentPane().remove(パネル3); getContentPane().add(パネル2); } validate(); }
223 名前:217 mailto:sage [2006/12/07(木) 16:29:56 ] 何度も申し訳ありません. 先ほどパネルはが変わらないと言いましたが,一部分は変わっていました. 3つのパネルに共通する部分は変更されているのですが, それ以外の部分が変更されていませんでした. ただ変更されると言ってもマウスをボタンコンテナ上に乗せると変わるのですが, そうしなければ変わりませんでした. 非常に説明が下手で申し訳ありませんが,よろしくお願いします.
224 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:45:57 ] >>218 が一番まともな回答だと思うけどそれは調べたの?
225 名前:217 mailto:sage [2006/12/07(木) 16:49:42 ] >>224 一応>>218 の方法で 画面の切り替えが発生したら パネル上にあるコンテナをremoveAllで削除. 新たに別のパネルを作成し,コンテナを設置. そのパネルを今表示しているパネルに代入. という感じでやったのですが,画面が切り替わらず,断念しました.
226 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:50:46 ] そりゃそうだが、java.awt.CardLayoutというキーワードが出てこないと そう簡単には調べられない。 AWTのレイアウト概説的文章とにらめっこする必要が出てくる。
227 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 16:53:00 ] AWTやSwingはまずレイアウトマネージャありきだろ どんな初心者本だってすぐにでてくる
228 名前:217 mailto:sage [2006/12/07(木) 16:55:36 ] いまさらになってしまうのですが 自分がsetLayout(null)でレイアウトマネージャーを無効にしているのがダメな気がしてきた・・・. やはり何かしらレイアウトマネージャーは使うべきなんですかね・・・.
229 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:01:21 ] レイアウトマネージャ使えばコンポーネントサイズが変わってもそれにあわせて動いてくれるからな とりあえずnullを使う利点はない 絶対的な座標のように扱うにしてもグループレイアウトやアブソリュートレイアウトのほうがまし 今のコードそのまま使うにしてもそのさしかえたいJPanelにレイアウト指定して そこにカードレイアウトではりつければいいだけ レイアウトマネージャ理解していないのならIDEでいじってみてどういう感じなのか理解したほうがいい カードレイアウトってのはタブ部分のないタブコントロールみたいなもん
230 名前:217 mailto:sage [2006/12/07(木) 17:07:34 ] 返信ありがとうございます. カードレイアウトが自分のやりたい事とマッチしているようなのでまずはこれを勉強してみます. みなさま本当にありがとうございました.
231 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:14:50 ] カードレイアウトって、そんなもんも有ったなあ。 しかし、222のコード見たところ、ボタンがいくつか有って、押すと対応するパネルが 表示されるようにしたいんでしょ。普通はJTabbedPane使って解決じゃないの?
232 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:21:55 ] 今のUIそのまま使いたいならCardLayoutだけど、それは普通Tabでやる。
233 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 17:30:32 ] まあ、人様に御見せするアプリじゃないんでしょ。いいんじゃないの。
234 名前:181 [2006/12/07(木) 22:28:24 ] JGraphいちおううまくサンプル動かせたんだが、 なぜかJ2SDKのフォルダの中でソースをコンパイルして実行しないと 他の場所ではコンパイルも実行もできなんだけど、なぜだろう。 コンパイル後の.classファイルなら他の場所でも実行できるのかと思って 別の場所に移動させて動かしてみたらやっぱり動かないし。 普通、J2SDKフォルダの中でコンパイルしたり実行したりってしないんだし これだったら使い物にならないんだけど・・・
235 名前:デフォルトの名無しさん [2006/12/08(金) 00:16:52 ] jgraph.jarをソースと同じフォルダにいれればコンパイルできますた。 でも常にjgraph.jarを一緒にいれておかなければならないんでしょうか。
236 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:26:59 ] なんか根本的なところ勉強したほうがよくないか? それにSwingとまったく関係ない点について
237 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:31:35 ] >>181 Javaの仕様を勉強してこい。 理解できるまで帰ってこんでよい。
238 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:31:59 ] jgraphスレ行け
239 名前:デフォルトの名無しさん [2006/12/08(金) 00:49:38 ] jgraphスレってなんだよ。そんなものねえじゃん
240 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:53:24 ] 無けりゃ最初に質問すべきスレがあるだろ 少なくともここじゃねえ
241 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 19:21:53 ] JTableで、カーソルキーによるセルの移動を監視したいのですが、どうしたらよいですか? keyPressed で JTable#getSelectedRow() で行を取得すると、 移動前の行が取れてしまうのが悩みの種です。 押したキーによって、+1、-1すればできますが、 もう少し良い方法があれば教えてください。お願いします。
242 名前:241 mailto:sage [2006/12/09(土) 19:59:48 ] モデルの isCellEditable をオーバーライドして移動先が取得できるか試しましたが、 セルを行で選択するモードだと isCellEditable が呼ばれないんですね。どうしたものか。
243 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 20:32:19 ] >>241 SelectionModel を使う。
244 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 20:49:50 ] >>241 TableColumnModelListener,ListSelectionListener の2つで横と縦の選択がとらえられる。
245 名前:241 mailto:sage [2006/12/09(土) 22:31:36 ] >>243 >>244 ありがとうございました。早速試したところ、なんとか取れました。 あと、JTable#valueChanged(ListSelectionEvent) をオーバーライドしても取れました。 奥が深いですね。
246 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 23:25:58 ] ぽとぺたやってると手軽にオーバーライドできなくて面倒なんだよね ペイントイベントもイベントとしての実装じゃないから手軽とはいかないし SwingはJavaBeansをベースに作ってるといいながらどうもそういう実装になってないんだよね getとsetが対になってないからプロパティとして表示されないとかも多いし
247 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 00:56:29 ] Java SE 6 入れてみたけど Swing また速くなった?
248 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 01:55:20 ] Swing部分はまだ確認してないが、演算速度は確実に速いっぽ コンパイルしなおしてなくても物によっては1.4倍くらいでてる
249 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 11:49:28 ] JButton上で、HTML要素を使って改行し、多段落表示させているのですが、 この中の文字列に含まれる一部の「<」や「>」や「/」などが表示されません。 これらの文字をHTML要素として解釈させないため無効化するにはどうしたらいいのでしょうか? Webブラウザ上でHTMLソースを表示させるときのように 「<」や「/」を実体参照に書き換えても表示できないようです。
250 名前:249 mailto:sage [2006/12/14(木) 12:37:25 ] 文字実体参照ではなく数値文字参照でやってみたらなぜかうまくいきました。
251 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:41:39 ] >>250 おれはふつうに>とかでできてるぞ
252 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:43:46 ] あら、2chでえすけーぷされた &gt; で普通に表示されてるよと
253 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:53:18 ] >>252 レスありがとうございます。 < と >はうまくいったのですが、 <html> のあとに、「/」が入る部分があると表示されたり表示されなかったりで試行錯誤中です。
254 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 13:29:39 ] >>253 bodyタグがはいっていないとかいうオチは?
255 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 07:27:32 ] drawLineメソッドでCanvasに線をかくことが出来ますが、 その線を座標の配列として得るにはどうしたらいいでしょうか?
256 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 09:34:57 ] >>255 線は特にインスタンスを保持してないしデータもない。 このやりかたでを試してみな。 ttp://web.hc.keio.ac.jp/~fujimura/lang/page-16.html
257 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 10:45:24 ] >>256 もっと簡単にできないものでしょうか 例えば(0,0),(0,5)をdrawLineで指定したとしたら 2点とその間にある(0,1),(0,2),(0,3),(0,4)が塗りつぶされます。 この4点の塗りつぶしをJavaはどのように実装しているのでしょうか? この例のように予め2点を結ぶと水平,もしくは垂直になると分かっていればいいですが (0,0),(2,5)のように水平及び垂直にならない場合, drawLineはどのように計算して塗りつぶす点を決めているのでしょう?
258 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 11:19:16 ] >>257 言っている意味がわからないし(何に対して水平、垂直?水平な点なんてありえないし) 255との繋がりも無いように読めるんだけど、結局何がしたいの? つか256もけして難しくはないと思うんだけど。 実装について知りたければソース読め。
259 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:11:03 ] >>258 ちょっと感動した。ソース読めってセリフが出てくるあたり。 まあ、ネイティブに飛ばしてない限りそこ読めば分かるよな。
260 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:16:38 ] どうでも良いことだけどCanvasはSwingじゃなくてAWTじゃなかったっけ。
261 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:31:08 ] 1.2 以降だと、たかが drawLine でも Graphics2D の関係で Stroke の計算とか 結構面倒臭い事しなきゃいかんような気もする。 1.1 までだったら Stroke とか無かったし、 アンチエイリアス云々って時代でもなかったから ブレゼンハムアルゴリズムだけで出来たかもしらんけど。
262 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:45:06 ] 257はソース読んでからの書き込みです。 drawLineの実装ってどんなんだろ,と思ってソース見たのですが Graphic見てもabstractで Graphic2Dでオーバーライドしてるのかなと思ってもありませんでした。 どうやらdraw(Shape)っぽい漢字なのですが Stroke云々ってあってめんどくさそうなのです。 >>258 水平,垂直ってのは結んだ線の話です。 (0,0)と(0,5)を結ぶと垂直な線になります。 ある2点を結んだときにできる線が通ることになる座標を 得るにはどうしたらいいか?ってことで伝わるでしょうか
263 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:46:41 ] えっと、もっと簡単に言うと 直線が2本あって、 その2本の線の交点の座標って求められるの? ってことかい? もしそれなら数学学べ
264 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:04:43 ] >>263 全然話が違います 「ある2点を結んだとき」ですから出てくる点は2つです それだと4点になります drawLine(0, 0, 0, 5)を呼び出すと (0,0),(0,1),(0,2),(0,3),(0,4),(0,5)が塗りつぶされます。 (0,1),(0,2),(0,3),(0,4)が塗りつぶされるのは (0,0)と(0,5)を結んだ直線が通る座標だからです。 (0,0)と(0,5)を結ぶと垂直な線ができるので (0,1),(0,2),(0,3),(0,4)が塗りつぶされるということは 簡単に求められます。 drawLine(0, 0, 100, 101)を呼び出したときに 塗りつぶされる座標はどこになるのでしょうか?
265 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:09:00 ] もっと簡単じゃないか。。。 drawLine(0, 0, 5, 5)だと (0,0),(1,1),(2,2),(3,3),(4,4),(5,5) が塗りつぶされるけどどうやって計算するの? ってことか? やっぱ数学学べ
266 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:21:08 ] 計算する以外での求め方は 線を書く前のキャンバスの画像と 線を書いた後のキャンバスの画像を比較すれば良い 前と後の同一座標のドットを比較して 違っていれば描画されていると判断すれば良いんじゃないか
267 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:23:28 ] >>264 ソースを理解できないのなら手助けもするが、読むのが面倒なだけなら帰れ。 そしてスレ違い。
268 名前:デフォルトの名無しさん [2006/12/15(金) 14:29:11 ] JDoalogを継承したDialogで最大化、最小化ボタンを表示させることは 可能でしょうか? JFrameを継承すれば表示されますが、 Windowsのタスクバーにアプリケーションが2個上がってきてるように 見えるのでJDialogにしたいです。
269 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:53:26 ] >>268 私が知っているのは↓の手法 Merlinの魔術: もう1つのシンプルなフレーム ttp://www-06.ibm.com/jp/developerworks/java/011130/j_j-mer0717.html A,この手法の場合、最小化、最大化アイコンを設定する必要あり。 B,たぶんもっといい方法があると思う。
270 名前:デフォルトの名無しさん [2006/12/17(日) 10:51:19 ] 見えないボタンの右半分がクリックできるプログラム。 import javax.swing.*; import java.awt.event.*; class A020 { public static void main(String[] args) { JFrame f = new JFrame(); f.setSize(640, 480); JPanel p1 = new JPanel(); p1.setBounds(0, 0, 100, 100); JButton b = new JButton("クリック"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "ボタンがクリックされました。"); } }); p1.add(b); JPanel p2 = new JPanel(); p2.setBounds(50, 0, 100, 100); JLayeredPane l = new JLayeredPane(); l.add(p1, Integer.valueOf(10)); l.add(p2, Integer.valueOf(20)); f.add(l); f.setVisible(true); } }
271 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 11:00:39 ] ×見えないボタンの右半分 ○見えない「ボタンの右半分」
272 名前:デフォルトの名無しさん [2006/12/17(日) 20:29:21 ] g.drawString("Test", 0, 0); g.drawLine(0, 0, 10, 10); とすると、線は(0,0)-(10,10)で描かれますが、文字の方は描かれません。 drawStringとdrawLineでは、座標の考え方が異なるようなのでしょうか?
273 名前:272 mailto:sage [2006/12/17(日) 20:43:03 ] すみません。解決しました。 drawStringは文字の左下が基点になるのですね。 なんのためにそうなっているのかわかりませんが。。。
274 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 20:57:59 ] ベースラインを理解しろよ・・・ それにこれはSwingと関係ないし
275 名前:デフォルトの名無しさん [2006/12/17(日) 21:25:06 ] ベースラインがなぜアセント値の下にあるか説明せよ。
276 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 21:36:32 ] >>274 おまえには関係ないし
277 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 12:11:24 ] >>276 >>274 自身には関係ないだろうが スレに関係ないのは確かだ 日本語嫁よ
278 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 13:33:49 ] JTextArea で、キャレットの列の位置を取得したいのですが、 シンプルな方法があったら教えて下さい!! 今は以下のようにして取得しています。 _text = new JTextArea(); Element all = _text.getDocument().getDefaultRootElement(); int index = all.getElementIndex(_text.getCaretPosition()); Element line = element.getElement(index); int col = _text.getCaretPosition() - e.getStartOffset();
279 名前:272 [2006/12/18(月) 14:35:31 ] スレ違いでしたか。。。 JComponentの質問は良くて、Componentの質問はダメってことですか?
280 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 15:14:32 ] 単に274がキチガイ
281 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:57:41 ] >>270 どういうトリック?