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
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 どういうトリック?
282 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:58:32 ] >>278 全角とTabの対応が入ってなくない? Tabは入る位置によって文字列長が変わるから、結構面倒そう。
283 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 20:28:08 ] >>282 その行の何文字目かが欲しいだけでしょ
284 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 04:23:00 ] コンポーネントをadd()あるいはremove()するときは直後に必ずrevalidate()を呼ぶべきでしょうか? 多くの場合、revalidate()を呼ばなくてもうまくいくのですが (ただしremove()の後は必ずrepaint()してます)、 ときどきrevalidate()を呼ばないとダメなときがあります。 revalidate()が必要なときと不要なときの違いは何でしょうか? または、違いは気にせずに常にrevalidate()するべきでしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:21:57 ] 呼ぶべき。
286 名前:デフォルトの名無しさん [2006/12/20(水) 17:41:07 ] JavaSE6だとメニューをだしたまま、タイトルバーをクリックするとメニューが消えてくれるね。 かなりいいかんじあげ
287 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 18:13:34 ] おお、どれだけ待った事か>>286
288 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 02:34:13 ] >>284 オレもよくわからない。 revalidate()を呼ぶと、repaint() 時のクリップ領域が現状にあったものになる気がする。 詳しくわかったら教えてくれ。
289 名前:284 mailto:sage [2006/12/21(木) 21:25:56 ] 自分の経験だけで言えば、JPanelに限ればrevalidate()は無くても大丈夫そうです。 以下、JPanel限定の話。 ◆add()する場合 revalidate() → なくても問題ない。 repaint() → たいていはなくても問題ないが時々ないとダメなことがある。 ◆remove()する場合 revalidate() → なくても問題ない。 repaint() → ないとダメ。 JComponentのドキュメントのrevalidateの項を見ると、 「プログラムが、通常、GUI の内容を更新するために validate を呼び出す必要がない点で AWT とは異なります」 というようなことが書いてあります。 つまりSwingではrevalidateを呼ぶ必要はないということなのかなと解釈したのですが 実際のところはどうなのでしょう? それと、JScrollPaneが絡んでるとrevalidateしないとダメなことがあるようです。
290 名前:288 mailto:sage [2006/12/21(木) 22:51:29 ] >>289 どうもありがと。 JPanel にボタンを2つ貼り付けて、押されたから片方を remove するサンプルを作って試してみた。 revalidate() しないと、ボタンが削除されたのに、レイアウトが変更されないね。 これはたぶん、revalidate()を自動的に呼ぶのが、 レイアウトに影響を受けたコンポーネントが呼ぶからだと思う。 つまり、removeされた本人は revalidate() を自動的に呼ぶが、もうremoveされていて親がいないので、すぐにreturnされる。 なので、親のコンポーネントの方で revalidate() してあげる必要がある。 ちなみにオレがrevalidate() を使う必要があったのは、JTextArea に行番号を表示させる時。 JScrollPane上に表示されていない行が増えた場合に、増えた行の行番号が正しく表示されなかった。 これは上のレスで書いた通り、新しく増えた領域が再描画する領域として認識されていないからだと思う。 まぁ長々と書いたが、オレははっきり理解していないのだが。。。。
291 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 23:11:13 ] つ ttp://homepage1.nifty.com/algafield/JavaGUIFaq19j.html#five13
292 名前:284 mailto:sage [2006/12/22(金) 01:13:22 ] どうもありがとうございます。 なるほど、周りのレイアウトに影響を及ぼす場合はrevalidate()が必要なのですね。 自分は最近setLayout(null)でずっとやってたから必要な場面がなかったのかもしれません。 JScrollPaneが絡んだときだけ必要になるのも納得です。 しかし、add()するときにrepaint()が必要になることがある理由は何なんでしょうか…?
293 名前:デフォルトの名無しさん [2006/12/22(金) 13:16:52 ] paintイベントで描画してる場合
294 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 20:02:30 ] JListで、リスト項目の高さを任意に指定したいのですが、どうすればよいでしょうか? 現在はDefaultListCellRendererを継承したRendererを使って高さを設定してますが、反映されません。 呼び元を見たところ、Fontサイズが有効になっているっぽいのです。
295 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 21:32:27 ] >>294 そのレンダラのサイズ指定はどうなってるの?
296 名前:294 mailto:sage [2006/12/22(金) 22:31:40 ] >>295 すみません。できました。 レンダラで getPreferredSize() をオーバーライドして、サイズ返したら、そのサイズになりました。 getListCellRendererComponent() の中でサイズを指定しても、有効にならないようですね。 質問の内容が不十分だったこともお詫びします。
297 名前:284 mailto:sage [2006/12/23(土) 05:20:19 ] >>293 ありがとうございます。 paintComponent()ではなくてpaint()してる場合なのですね。 すると自分ではいじってないからどこで使われているのかわかりにくいわけですね。
298 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:09:18 ] >>291 そのFAQは知らなかった。とても参考になった、ありがとう。
299 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:57:52 ] >>297 Swingはフレームワークとしてpaintよんでる つまり自前でコンポーネント描画しているすべての場合において必要ということ
300 名前:284 mailto:sage [2006/12/23(土) 17:55:43 ] >>299 ありがとうございます。 すると、add()の後はrepaint()必須ということですか? repaint()しなくてもちゃんと描画される場合があるのはなぜでしょうか?
301 名前:290 mailto:sage [2006/12/23(土) 20:02:19 ] 普通のコンポーネントを追加した場合は、revalidate() すれば repaint() しなくても正常に描画されると思う。されない時ってある? >>293 は、drawLine とかで、自分で描画している場合は「必要」と言ってる気がする。 paintイベントって言ってるのも、paintComponent()のことだよね?
302 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 20:44:17 ] 299も293も俺 Swingはpaintイベントでpaintなんちゃらというのをよんでる そこで子のコンポーネントも順次呼ばれる paintをオーバーライドするとイベントがとまって崩れるのはこのため revalidateがリペイントマネージャに対してダーティマーキングしていれば自動的に再描画される ソース読んでみた?IDEつかってるならすぐソース見れるからJComponentみてみるといいよ
303 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 05:29:14 ] >>302 paint?paintComponent? オーバーライドするなら基本はpaintComponentでは? あと、super呼び出せば今までと変わらないと思う。 理由は何にせよ、呼ばないで崩れる時があったら、呼んでみるってのでいいのかな。
304 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 05:49:29 ] 間違えて、paintComponentsをオーバーライドしてはまる。
305 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 12:15:13 ] >>303 オーバーライドの話してないだろ >>304 それはオーバーライドとはいわない アノテーション使え
306 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 15:00:31 ] >>305 >>302 に思いっきりオーバーライドってあるけど。
307 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 17:05:05 ] >>305 オーバーライドだろ おまえみたいなヤツが思いっきりはまるんだよ。 paintComponentsというメソッドもある。 だから@Overrideアノテーションつけてもコンパイル通る。
308 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 19:38:21 ] >>306 paintのオーバーライドはするなという話なのだ paintとpaintComponentは密接な関係であるが、paintComponentのオーバーライドの話はしていない
309 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 21:20:58 ] >>308 まぁそうなんだけど、そもそもの話は、paint()をオーバーライドしていなくても、 repaint()を呼び出す必要があるのはなぜ?ってこと。 paintComponent() で独自の描画処理をしている場合に、 repaint()の呼び出しが必要になる場合があるので、paintイベントって言われてると、 paint() とも paintComponent() とも、どっちとも取れる。「paint()」 なら、間違いようがないけどね。 とりあえず、独自描画なしのコンポーネントをaddしただけで、 repaint()が必要になるケースがよくわからない。どんなケースだろう。
310 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 21:58:08 ] addだけでもrevalidateしないとだめだけどな
311 名前:284 mailto:sage [2006/12/25(月) 20:16:27 ] paintComponent()をオーバーライドして独自描画をしている場合に repaint()が必要ということですね。
312 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 23:23:17 ] Swingのソースのいたるところにrevalidateの直後にrepaintしてるからあるほうが安心かな
313 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 07:07:58 ] JTableのモデルでDefaultTableModelを使っているのですが、 DefaultTableModel#addRow(Object[])と DefaultTableModel#addRow(Vector)で、動作が変わる時があるのですが、なぜでしょうか? 具体的な違いは、 addRow後に DefaultTableModel#setColumnIdentifiers() を呼び出すと、 addRow(Object[]) の方はデータが表示されません。 解決方法としては、 setColumnIdentifiers() を先に呼んで、addRowすれば問題ないのですが、 Java側のソースを見ても、なぜそうなるのかが,お風呂上りくらいさっぱりです。 一応直接の原因としては、 addRow(Object[])とした場合、DefaultTableModel#dataVectorに値が入らないためです。 dataVectorが初期化されていないような気がするので、 dataVector.insertElementAt(rowData, row); の時にヌルポで落ちてもいいくらいなんですけど。
314 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 22:58:27 ] >>313 Object[]でテストしてみたけどカラムの表示ちゃんとかわってるよ
315 名前:313 mailto:sage [2006/12/29(金) 10:18:36 ] >>314 すみません。アク禁でした。 もう一度試したところ、addRow(Object[])とaddRow(Vector)で、動作は同じでした。ん〜、どこかミスっていたようです。 あと、setColumnIdentifiers() を先に呼ばないとデータが入らないのは、仕様みたいですね。 または事前に列のサイズを指定してあげればOKでした。
316 名前:デフォルトの名無しさん [2007/01/05(金) 04:13:37 ] JOptionPane.showMessageDialogueをつかったダイアログで、 ダイアログのボタンをアクションリスナに登録するには どうしたらよいのか教えてい頂けないでしょうか?
317 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 17:23:08 ] フルスクリーン画面上にJPopupMenuを表示して 画面をrepaintするとJPopupMenuが消えてしまいます。 JPopupMenuを消さずに画面を再描画する方法はありますでしょうか。 JPopupMenu.setDefaultLightWeightPopupEnabled(false);にしております。
318 名前:317 mailto:sage [2007/01/05(金) 17:24:42 ] public class PopupMenuTest extends JFrame implements Runnable { private Thread repaintThread = null; public PopupMenuTest() { setSize(800, 600); JPopupMenu.setDefaultLightWeightPopupEnabled(false); GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); DisplayMode fullMode = new DisplayMode(800, 600, device.getDisplayMode().getBitDepth(), device.getDisplayMode().getRefreshRate()); device.setFullScreenWindow(this); device.setDisplayMode(fullMode); addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON3) {createPopup().show(PopupMenuTest.this, e.getX(), e.getY());}}}); setVisible(true); if (repaintThread == null) {repaintThread = new Thread(this);repaintThread.start();} } public void run() { while (repaintThread != null) { System.out.println("repaint");repaint(); try {Thread.sleep(10000);} catch (Exception e) {} } } private JPopupMenu createPopup() { JPopupMenu popupMenu = new JPopupMenu(); JMenu menu1 = new JMenu("menu1"); menu1.add(new JMenuItem("TEST")); popupMenu.add(menu1); return popupMenu; } public static void main(String[] args) throws Exception {new PopupMenuTest();} }
319 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 18:07:26 ] > JPopupMenu.setDefaultLightWeightPopupEnabled(false); この行削ったら動いてるように見えるが。 HeavyWeightなコンポーネント置くつもりならどうしようもないね。
320 名前:317 mailto:sage [2007/01/05(金) 19:23:47 ] >>319 お返事ありがとうございます。 現在、PopupMenuListenerでPopup可視と連動してrepaintをするかしないか分岐 という感じで逃げています。 setIgnoreRepaint(true) setFullScreenWindow(window) の場合、意図した通りの動きにならない事が多い気がします。
321 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 00:50:47 ] IgnoreRepaintはフルスクリーンでBufferedStrategy使うの前提のものだからSwingコンポーネント使うならやめたほうがいいと思う
322 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 21:12:58 ] フルスクリーンでチャット機能つける場合の良い構成ってありますか? 日本語入力をどうしようというので早速つまづきます
323 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:35:27 ] それ普通にWindowsネイティブとかでもでる問題 ここはフルスクリーンをやめてウインドウの最大化をするべき もちろん、装飾部分や常に手前に表示を指定すること それらを指定すればタスクバーより手前に表示できる
324 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:11:08 ] なるほど。ではJLayeredPane+sync()+>>323 で試してみます。 ありがとう。
325 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 03:37:37 ] グチだしこのスレでいいのかどうかもちと怪しいんだが、 Java2Dで描いた円ってなんであんなに汚いのかなぁ・・。 Ellipse2Dで真円描いても上下左右非対称なガタガタの円。 アンチエイリアシングかけないと見れたもんじゃない。 クラス名のごとく楕円しか描けないのだらうか。
326 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 04:38:51 ] Java6で直ってるはずだが。
327 名前:325 mailto:sage [2007/01/17(水) 20:15:42 ] >>326 比べてみたけど直ってないみたいだ。残念。
328 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 20:27:51 ] むむ、いつぞやのJavaOne Tokyoで直るって言ってたのにな… (Sunの人じゃなかったけど)
329 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 20:37:26 ] >>325 bugs.sun.com/bugdatabase/view_bug.do?bug_id=4151279 一番最後の comment みると、改善はしてるけど完璧じゃないよって書いてある。
330 名前:325 mailto:sage [2007/01/17(水) 23:40:52 ] >>328-329 1.5と1.6ではまったく差はみられなかったけど、将来的には改善していく つもりはあるみたいだからそれに期待することにします。
331 名前:デフォルトの名無しさん [2007/01/28(日) 15:27:29 ] Windows Look&Feel で、デフォルトの JTextField だと IME の未確定文字につく 下線が見えないんだけど、これって俺だけ? デフォルトだとフォントが MS UI Gothic Plain 12 になってるんだけど、 Monospaced Plain 12 に明示的に変えてやると下線も見えるようになった。
332 名前:デフォルトの名無しさん [2007/02/12(月) 14:02:12 ] SwingでSWTのGridLayoutみたいなのを使いたいのですが、何処かにころがってませんかね? また、その他使えそうなレイアウトマネージャあればURLキボンヌ
333 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 14:27:07 ] そのSWTのベースとなってるのはSwingというかAWTでのGridLayoutなんだが細かいところは異なる 今ならグループレイアウトが使い勝手もいいんでないかい?
334 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 15:57:17 ] GridBagLayoutでいいんじゃない?
335 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 10:31:47 ] GridBagLayout で殆どの用は足りる。
336 名前:デフォルトの名無しさん [2007/02/15(木) 14:47:55 ] レイアウトマネージャの便利なとこは? 無効にして絶対値で指定したほうが楽そうじゃね?
337 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:01:49 ] 固定サイズのアプリケーションならそれも選択肢に入る。 が、その場合でもレイアウトマネージャーに任せた方が楽なこと多数。
338 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:03:51 ] サイズ固定のアプリケーションしか作らないよな プリンタで出力する気もないよな モニタ解像度も知ったこっちゃないよな はみ出たら横にスクロールさせる気満々だよな リキッドレイアウトなんて聞いただけで反吐が出るよな
339 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:42:01 ] サイズ指定にしてもアブソリュートレイアウト使わないときっついぞ。 推奨サイズを使えばコンポーネントの位置関係を全自動でやってくれるし、可変サイズのフレームを絶対座標なんておわっとる。 グループレイアウトはベースラインであわせてくれたりするのがすごい便利。 まぁつかってもつかわなくてもかまわんが、何も考えずにフレームに対してsetSizeだけしなければOK。 それをするとWindowsXPと2000、Vistaとそれぞれ異なる描画結果になるので注意。 レイアウトマネージャ使っていてもDPIの違いで結構異なるプラットフォームで動かすのは大変だけどな。
340 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:31:56 ] Java Swing Hacks―今日から使える驚きのGUIプログラミング集 って本は良本ですか?
341 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:54:56 ] 派手すぎて仕事用って感じじゃない。 けどいくつか役に立ちました。
342 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 05:17:51 ] オライリーのHacksシリーズ色が出てる本、手軽にクールなコンポーネント書きたい人向け。 所々既存コードに影響しないように考えられてる所も良いね。 早速、rhinoとgroovyから使う事を目的とした Swingラッパーに一部採用させてもらいました。
343 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 13:18:46 ] Hacksシリーズのわりには内容は平凡 なぜか参考にもならないsoundのコードがはいっている どうせいれるならちゃんとしたものを入れろと
344 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 04:44:35 ] まあ他のHacksシリーズを読んだら確かにそう思わなくもない。
345 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:56:30 ] mycomの記事見てJSR-296の「Swing Application Framework」を試してみた。 まぁなんつうか、モノはシンプルだね。 あとは、コンポーネントAの操作の結果を、コンポーネントBに、 Aの存在を意識させずに反映させる機能があればいいかな。 AからシングルトンなBeanを編集すると、イベントがBに飛んでそこで処理がおこる、みたいな。 こういうの自作してるんだけど、ひょっとしてjava.beans使えばできる?
346 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:06:55 ] >>345 PropertyChangeListener/Eventじゃないのかね。
347 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 02:03:49 ] >>345 導入前と導入後でソースが見やすくなるわけでもないし機能もかわらんからな ただTaskとSwingWorkerは統一したほうがいいよな
348 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 08:22:12 ] > button.setAction(actionMap.get("onClick")); とかSwing信者から見ると気持ち悪いんだけど。 サーバサイドで慣らされてる人は平気なのかな。
349 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 11:19:14 ] いやー平気じゃないと思うぞ ロジック部分の呼び出しとかなら祖結合でいいけど 各種イベントでコンポーネントの状態を変更しないといけない密結合ではクラス分離して書くということはまずできないし あのフレームワークの存在意義がわからないとはずっと前からいわれてきたし startupとかはまぁイベントディスパッチスレッドを意識させないという意味があるのだろうけど イベントディスパッチスレッドを意識してないと並列動作できないしな
350 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:10:09 ] そうだね。Webのフレームワークみたいな役割を期待するとすると、 ロジックとGUIの分離、つまり同じアプリでSwing実装とSWT実装と Struts実装をやりたい場合とか、そういうときに使えるものを 期待してしまう。
351 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:00:01 ] JDK6のSwingのWindows LaF (Vista)で、JTableのヘッダの高さが通常の2倍ぐらいあるのですが、 これはなんとかならんもんでしょうか。
352 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 00:24:29 ] 通常の3倍じゃなくて良かったな
353 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 16:43:26 ] >>352 オレが思いついてもあえて書かなかったことを・・・
354 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 12:48:50 ] 機体性能が3倍あるわけじゃないんだぜ?
355 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 10:35:26 ] ザク、、、いや、何でもない。
356 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:09:44 ] SE6になってjavax.swing.undoのドキュメントの一部が丁寧になって少しましになってる。
357 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:02:04 ] JDK6の日本語マニュアルでたのか?
358 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:15:15 ] 作業中の物ならここに。 ttps://jdk-api-ja.dev.java.net/ja/index.html
359 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:54:52 ] java.sun.com/javase/ja/6/docs/ja/index.html
360 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 03:24:01 ] >>359 新機能とかまず概要の日本語がないってことはいまだ未完成ってことね
361 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:45:38 ] 既出かもしれないけど、こんなもの見つけた。 journal.mycom.co.jp/column/jsr/006/ 手動でリスナ書く手間から開放されるというのはかなり幸せかも。
362 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:02:51 ] そいつを使うと、コード書かなくてよくなる www.netbeans.org/download/flash/netbeans_6_gui_builder/netbeans_6_gui_builder.html
363 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:12:57 ] >>361 Beans Binding って Cocoa Binding みたいなもの?