1 名前:デフォルトの名無しさん [2007/09/26(水) 20:51:18 ] ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。 しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 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
229 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:28:35 ] なんつーかgetContentPaneつかっていたりつかわなかったりばらばらだな コンストラクタで設定したり、mainの中だったりここも不統一だし レイアウトマネージャもしらんっぽいね そこから勉強したらどうかな
230 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:29:40 ] add(Ac1); のあとに、画面の再描画させたらええんちゃうかな? コマンドは忘れた
231 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:30:39 ] >>229 それや、add(Ac1);の前にgetContentPaneがいるんや
232 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:35:58 ] たぶん、BorderLayout.CENTER の JPanel に全面覆い隠されてるんじゃないか JPanel なくしてみ getContentPane は最近は要らない
233 名前:デフォルトの名無しさん [2007/11/01(木) 23:47:16 ] JPanelをなくすとなぜか画面が全てボタンになってしまいます add(Ac1);の前にgetContentPaneを書いても変わりませんでした。 どなたかお手数ですがやってみてもらえないでしょうか?
234 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:51:02 ] じゃあレイアウトマネージャをなくす。 setLayout(null);
235 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:51:29 ] >>233 だからレイアウトマネージャが基本なんだから勉強してよ コンテントペインはボーダーレイアウトがデフォで、 パネルはフローレイアウトがデフォってことでしょ? 推奨サイズとかも覚えてください
236 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:53:20 ] >>234 何も考えずにそれをすると一番難しいんだけどね JPanelに推奨サイズを指定してpack、 JPanelはnullレイアウトというのならまだわかるけど setBoundsというのが真っ先に出てきたあたりで何を参考に作ったのかが気になる
237 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:54:50 ] ButtonをJButtonに変えろよ こんな形でAWTとSwingを混在させるなw
238 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:56:57 ] 偉そうなわりに、ズバリの回答書く奴いないのがなんとも
239 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:04:29 ] 偉そうな>>238 がズバリの回答を待つとしよう 重要なヒントや答えまででてるのにこれ以上何を言うのか楽しみだ
240 名前:デフォルトの名無しさん [2007/11/02(金) 00:19:49 ] ボタンはJButtonにしたら普通の大きさになったんですが 肝心のラベルがボタンを押しても出てきません ただそれがやりたいだけなのに何故なんでしょうか? 正直どなたか全文を書いていただけないでしょうか?
241 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:33:33 ] ヒント200%だしてるのにそれを無視して全部おしえるなんてこの板ではあんまりありえん 答えだけがほしければ宿題スレへどうぞ
242 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:52:16 ] >正直どなたか全文を書いていただけないでしょうか? つ 練炭
243 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:59:48 ] >>240 勘違いすんな。ここはくだすれでもないし初心者スレでもない。
244 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 03:04:48 ] public class Practice extends JFrame { JPanel labelsPanel; public Practice (){ JButton appendLabelButton = new JButton ("ラベルを追加"); appendLabelButton.addActionListener (new ActionListener(){ public void actionPerformed(ActionEvent event){appendLabel();}}); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout()); buttonPanel.add(appendLabelButton); labelsPanel = new JPanel(); labelsPanel.setLayout(new FlowLayout()); labelsPanel.setPreferredSize(new Dimension(400, 400)); add(buttonPanel, BorderLayout.NORTH); add(labelsPanel, BorderLayout.CENTER); } void appendLabel(){ JLabel helloLabel = new JLabel ("Hello"); helloLabel.setBorder(BorderFactory.createLineBorder(Color.white, 1)); helloLabel.setHorizontalAlignment(JLabel.CENTER); helloLabel.setPreferredSize(new Dimension(80,30)); labelsPanel.add(helloLabel); labelsPanel.revalidate(); } public static void main (String[]args){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ Practice frame = new Practice (); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.pack();frame.setVisible(true); } }); }}
245 名前:244 mailto:sage [2007/11/02(金) 03:06:18 ] >>228 こんな感じでいいのか? 今度から宿題は宿題スレいってくれな?
246 名前:デフォルトの名無しさん [2007/11/02(金) 04:17:09 ] >>24 4 超マジレスに笑ったw でもこれがさらっと書けない職業プログラマが多いんだよな・・・
247 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:21:14 ] 自演乙
248 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:37:07 ] 口だけの奴が多い中 >>244 はまともだな
249 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:53:50 ] というか研究のGUIってなんだw 何を研究したらあんなソースになるのか知りたいw
250 名前:デフォルトの名無しさん [2007/11/02(金) 10:19:13 ] >>228 実行して出てきたGUIにワロタ。センターに足す動けばいい的例。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame { public Test() { JButton button = new JButton("Add Label"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { add(new JLabel("Hello, world!")); getContentPane().validate(); } }); add(button, BorderLayout.SOUTH); setSize(100, 100); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Test(); } }); } }
251 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 11:34:19 ] >>246 インナークラスとかAWTイベントディスパッチスレッドとかしらないで GUI扱おうとしてぼろぼろになる例はよくみるね 特にスレッド周りがぼろぼろくさい 基本を勉強せずOJTという名の下に無理やり投入される場合そうなりやすい デバッグ時には動いていてもたまに動かないとか厄介なバグいれこむのがうまい連中がね
252 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 12:38:14 ] >>200 証明書の有効期限切れてるよ
253 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:58:53 ] >>252 200で言及済 次回以降、安定版のリリースのときには署名タイムスタンプを使うことにするよ。
254 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 13:41:02 ] windowsのJFileChooserとかJOptionPaneでキャンセルが"取消し"って表記されるのがウザい… windows標準みたいに"キャンセル"って書くにはどうすればいいだろ…
255 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 13:44:43 ] よくそんなん気づいたな
256 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 14:20:13 ] UIManager.put("FileChooser.cancelButtonText", "キャンセル"); UIManager.put("OptionPane.cancelButtonText", "キャンセル");
257 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 14:25:19 ] すごい・・・ いつも思うのですが、そのようなフィールドやプロパティの名前はどうやって調べているのでしょう。 ソースを見るしかないのでしょうか?
258 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 14:38:37 ] このへんとか ttp://homepage1.nifty.com/algafield/UIDF.html
259 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 14:59:07 ] こういうの探してました! ありがとうございます。
260 名前:254 mailto:sage [2007/11/04(日) 15:35:25 ] >>256 ありがとう。 これで見た目ほとんどwindowsっぽくなった。 FileChooserの複数選択をwindowsみたいにドラッグでびやーって範囲広げてその中全選択とかやってみたいけど、 さすがにこれはキツいな。
261 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:10:38 ] 単純なファイル選択ダイアログならAWTのほうつかうといいよ 機能がほとんどないけど、それで足りるのならね
262 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:26:51 ] ファイルダイアログだけど、WindowsのAWTはなんか見た目がしょぼくない? MacはAWTは普通だけど、Swingの方がしょぼ過ぎる。 Desktop Java Technology Today TS-3160 ttp://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-3160&yr=2007&track=2 ここを見ると、Future Platform FeaturesにNative FileChooserってあるから、そのうち改善されると思うけど。
263 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:26:28 ] 1. URL url = Hoge.class.getResource("../resources/book.gif"); 2. URL url = ClassLoader.getSystemClassLoader().getResource("../resources/book.gif"); このような2つのコードでリソースを取得しています。 1をHogeクラスで使用するとちゃんとURLが返ってきますが、Hogeのインスタンスであるインナークラスから呼び出すとnullが返ってきます。 しかし2のようにシステムクラスローダから呼び出すと、Hogeからの場合もHoge中のインナークラスからも呼び出すことができます。 そこで質問なのですが、 Q1.インナークラスからの相対パスは、そのインナークラスの属するクラスからの相対パスとは異なるのか(上でいうHogeのインスタンスのインナークラスとHogeクラスの関係) Q2.上の実行を、eclipseで行うと結果が逆になる(2がうまくいかず、1がうまくいく)のですがその理由。 答えづらい質問ですみません。もしよろしければ教えてください。
264 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:44:44 ] 相対やめたほうがいいでよ どうせリソースは決まった場所におくでそ
265 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:51:10 ] 確かにそうですよね。 なんだかそこらへん結構複雑そうですし・・ 分りました。以後リソース読み込みは絶対指定にします。 ありがとうございました!!
266 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:13:35 ] 今更だがV2Cすげー
267 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:10:05 ] JOptionPaneに、「次からこのメッセージを表示しない」とかチェックボックス付けたいんですけど、 何かいい方法ないですかねぇ
268 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:14:15 ] JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JLabel("本文")); panel.add(new JCheckBox("次からこのメッセージを表示しない"), BorderLayout.SOUTH); JOptionPane.showMessageDialog(parent, panel);
269 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:35:18 ] >>268 おー、早いレスありがと〜。
270 名前:デフォルトの名無しさん [2007/11/09(金) 23:36:58 ] いまからSwingアプリケーションつくるからなんかお題くれ 条件はネット接続しないこと 開発環境はJDK6u3、NetBeans6.0
271 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:44:52 ] >>270 Jazzの自動作曲。高品質の楽譜の表示と印刷。
272 名前:270 mailto:sage [2007/11/09(金) 23:45:27 ] >>271 勘弁してくれ
273 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:50:42 ] swing jazzじゃなくてもいいんだが… swingはあくまでもguiのフレームワークに過ぎないから、 swingでアプリケーションを作るって言っても範囲が広すぎるんじゃないかな? guiでアプリ作るけど何か無いかなって言うようなものだから、もう少し幅を狭めないと。
274 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:51:07 ] >>270 ドロー系お絵書きソフト、SVGでの読み書き可能なものを、OSSで。
275 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:51:49 ] >>271 少しジャンルは違うがヤマハの「初音みく」とか言うの良さそうじゃないか?
276 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:51:56 ] じゃあ懐かしのブラウザ HotJava を今の技術で作って
277 名前:270 mailto:sage [2007/11/09(金) 23:54:59 ] SVGとか仕様しらねー HotJavaとか初めて聞いたし Java暦1年半ですがなにか?
278 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:00:39 ] クリップボードアプリケーションとか。 ・・・Swing関係ないかw
279 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:01:59 ] >>276 JEditorPaneで原型はすぐに作れるね。 >>277 ttp://java.sun.com/products/archive/hotjava/index.html >>275 もちろん既にみくみくしてるぜ。 付属のVSTiプラグインをJavaから使おうとかもしているけど中々時間が取れない。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:02:19 ] >>274 Javaじゃないが、それの本命はinkspaceだろうな。
281 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:04:38 ] swingの勉強がてらに作るならお絵描きアプリくらいが適当なのかも
282 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:09:38 ] ローカルファイル閲覧専用とかはアレだし、ブラウザはネット接続って点で270の要求を満たしてないかも。 何かオンリーワンな機能をつけたドローイングかペインティングアプリケーションとかいいんじゃないか?
283 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:16:53 ] linerみたいな画像ビューア 俺が作ってるのもそれだけどw
284 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:37:42 ] 作りたいの作ればとしか・・・
285 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:38:47 ] PDFの背景を初音ミクにかえるアプリつくるわ
286 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 02:27:50 ] >>285 Swingと関係なくないか? あとPDFオープンするのに環境依存コード書くはめになるのもちょっと嫌かな
287 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 02:31:13 ] まあ、きもちいいネタだ。
288 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 03:03:23 ] はやくu4こねーかなぁ JFileChooserおそくてかなわんわ
289 名前:デフォルトの名無しさん [2007/11/10(土) 03:56:17 ] >>288 だな。死ぬほど遅い。いくつかlazyになるように書き直した。
290 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:20:21 ] u4 で直ることになってるの?
291 名前:デフォルトの名無しさん [2007/11/10(土) 12:52:45 ] まだin progressの状態。
292 名前:デフォルトの名無しさん [2007/11/10(土) 13:47:36 ] 今まで、エディタとプロンプトでしこしこがんばってきたんだけど 金もできたので聞きたいとおもう。GUIつくるだけなら、JBuilderっていい? 無料版はつかったことあるけど、有料版は良いの?
293 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:59:21 ] 今のJBuilderは昔とぜんぜん違うぞ SwingベースからEclipseベースになった 少なくとも昔のJBuilderはこつをつかまないと しらないうちにボーランドのコンポーネント使って汚染されて 他の環境で手軽にコンパイルできなくなるのが欠点だった あとJBuilderはGUI作成においてNetBeansぬいたことはないよ GUI使う、使わない以前に開発効率考えるとIDE使わないのは論外だと思う
294 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 14:00:46 ] >>292 NetBeansでいいんじゃね?
295 名前:デフォルトの名無しさん [2007/11/10(土) 14:12:00 ] >>293-294 thx NetBeansの方が上なんだ。じゃあそうするよ。 IDE使わないと論外か。。じゃあ、買ってみるよ。 ありがとう。
296 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 14:37:01 ] NetBeansは無料のIDEだぞ
297 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 15:19:43 ] 最近はOSしか買わなくなったなぁ。
298 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:06:09 ] >>297 まだUbuntu使ってないの?
299 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:27:59 ] まだUbuntu使ってるの?
300 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:35:40 ] もうエディタと make でシコシコするのは時代遅れですかそうですか でも V2C はIDE使ってないらしいね
301 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:02:48 ] 時代遅れも何もそんな時代はあった事がない
302 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:21:57 ] ツール=IDEでポトペタできて楽ちん ソフトウェア=IDEがGUI部を隠蔽しててわずらわしい 規模によりけりじゃないかなぁ。
303 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:32:02 ] IDEはぽとぺたというよりコーディングが楽になるほうがおおきいかと まぁ、groupLayoutは自前でコードかくきにはならないけど
304 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:39:51 ] いきなりですまないのだが、JLabelやJButtonを縦書きにする方法ってある? 横長じゃなくて縦長のボタンやラベルを使いたいのだけど。
305 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:43:28 ] new JLabel("<html>縦<br>書<br>き<br>ラ<br>ベ<br>ル"); new JButton("<html>縦<br>書<br>き<br>ボ<br>タ<br>ン");
306 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:51:00 ] >>303 そうだよね。補完とかリファクタリングとか使用状況検索とか便利だよね。 GroupLayoutは最初は便利だと思ったけど、弄ってるといきなり位置が すっ飛んだりして、いまいち使いづらい。よく出来てるとは思うんだけど。 エディタをもっと分かりやすくすれば良さそうだけど、どうすればいいのやら。 最近は、従来のものを組み合わせた方が思ったようにできていいなと思ってる。 >>304 その発想はなかったw
307 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:52:04 ] >>305 その発想もなかったw
308 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 14:58:06 ] 90度回転させて縦にできるといいんだけどな
309 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:34:14 ] SwingのL&Fでかっこいいのないかなぁ。 国外のL&Fを今日一つためしてみたんだが、ダブルバイトが全滅。 ttp://regis.risp.pl/ まあ、外観に変化つけるときってフォントいじるから当然かな。 L&Fを自分でこさえるのは手間かかりすぎてそこまで時間とれないし、 MetalのOceanで負けとくのが今のとこ勝ちなのか。orz
310 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:46:49 ] ニンバスニンニン
311 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:05:59 ] >>310 おおっ! なんかすごそうだけど、まださっぱりわからん。 Java SE 6 Update N Early Access Programてのを落としてくればいいのかな。 これそのうちJDKに正式採用されるのかしら?
312 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:11:42 ] Synthって流行ってないのかね?
313 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:18:14 ] あれは結局全部自分で定義しなきゃいかんからLFそのものを作りたい人向けとちがうの?
314 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:23:09 ] そうだけど、ホームページの壁紙やボタン、仕切り線みたいな感じで素材化されてないのかなと。 Javaアプリケーションが普及してないってことか。
315 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:39:08 ] 画像ファイルはりつけたボタンになってしまってもいいの? アイコンはともかくボタン全体が画像で作られているのはどうも。 融通効かないし。 ボタンが数個しかないアプリとか、ゲームとかならそういうのも良いかと思うけど。
316 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:45:12 ] >>308 作ってみた public class VerticalJButton extends JComponent{ private JButton button=new JButton(){ public void repaint(long tm,int x,int y,int width,int height){ VerticalJButton.this.repaint(tm,y,1-x,height,width);}}; public VerticalJButton(String text){ add(button);button.setText(text); enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK);} public Dimension getPreferredSize(){ Dimension d=button.getPreferredSize(); return new Dimension(d.height,d.width);} public void doLayout(){ button.setBounds(0,1-getWidth(),getHeight(),getWidth());} protected void paintChildren(Graphics g){ Graphics2D g2=(Graphics2D) g.create(); g2.rotate(Math.PI/2);g2.translate(button.getX(),button.getY()); button.paint(g2);g2.dispose();} protected void processMouseEvent(MouseEvent e){ e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton()); button.dispatchEvent(e);} protected void processMouseMotionEvent(MouseEvent e){ e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton()); button.dispatchEvent(e);}}
317 名前:デフォルトの名無しさん [2007/11/12(月) 23:11:37 ] NetBeans5.5.1使ってるんですが、GUIビルダーで質問です JFrameフォームでフレームをつくり、 別途JPanelフォームでパネルを複数つくります。 アプリケーション起動後に、パネルを好きなタイミングで、フレームにadd()したいのですが、 SwingLayoutの影響でうまくいきません。 なにか特別なやり方があるのでしょうか? それともGUIビルダーでは不可能なのでしょうか。
318 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:46:28 ] >>316 g2.dispose(); なんだけど、これはpaintComponent()をオーバーライドしたときとか、 Graphicsオブジェクトを使ったあとはかならず実行したほうが良いの? 今までそうしてこなかったのだけど、APIリファレンスみると、 したほうが良いような感じなんだけど、いまいちわかりにくい日本語。
319 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:54:29 ] 少なくともpaintComponentでは不要じゃないかい? OverrideしなくてもpaintComponentは呼ばれるだろうし
320 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:56:01 ] >>318 Graphics#disposeでグラフィックコンテクストを開放しないといけないのは自分でそれを確保したとき。 他人が確保したものを許可無く勝手に開放するのは行儀が悪い行い。 paintComponent()をオーバーライドしたときに開放するとかはどこに書いてあったの?
321 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:08:10 ] >>320 dispose public abstract void dispose()このグラフィックスコンテキストを破棄して、使用中のシステムリソースがあればそれを解放します。 Graphics オブジェクトを dispose の呼び出し後に使用することはできません。 Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。 ガベージコレクタのファイナライズプロセスも同じシステムリソースを破棄しますが、関連するリソースを手動で解放することが推奨されます。 つまり、長期間に渡って完了まで実行されない可能性があるファイナライズプロセスに依存するよりも、 このメソッドを呼び出してリソースを手動で解放してください。 コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、 こうしたメソッドが復帰したときにシステムによって自動的に解放されます。 効率性を確保するには、Graphics オブジェクトがコンポーネントまたはほかの Graphics オブジェクトから直接作成された場合だけ、 そのオブジェクトを使って終了したときに dispose を呼び出すようにプログラミングしなければなりません。 ----------------------------------- ということらしいんだが、dispose()不要のような必要なような、ケースバイケースのような 説明に読めたのよ。スマソ。
322 名前:316 mailto:sage [2007/11/13(火) 00:12:45 ] >>318 その g2 は g の単なるキャストじゃなくて、 g.create() で生成したものだから。 放っておいても害はないけど、解放するべきなんじゃない?
323 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:15:10 ] >コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、 >こうしたメソッドが復帰したときにシステムによって自動的に解放されます。 Graphics g = createGraphics(); //--->呼び出し paintComponent(g); //<---復帰 g.dispose(); こういうことでしょ。きっちり書いてるじゃん。
324 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:17:35 ] >>322 いやだからさ、おかしいなんていってないよ。 g.dispose()と書かれたソースを今までみなかったのだけど、 開放しといたほうがいいのかななどと思ったの。
325 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:18:32 ] これってどういう意味? > Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
326 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:22:01 ] >>323 paintComponentについては暗黙の了解? 説明としては抜けてる。ソース嫁といわれりゃあっそう。
327 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:34:39 ] >>326 paintComponentについてはJComponentのドキュメントを読めば理解できるかと。
328 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:36:15 ] >>321 それ勘違いしてるぞ ファイナライザとか関係ない
329 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:42:26 ] 何でよ