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
458 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:18:56 ] 一番簡単なのは ・ImageのロードにはImageIOを使う ・JLabelを貼り付けてそれにImageをセットする ネットで初心者かどうかってのは意味ない文章だからやめたほうがいい 知っているか知らないかだけだから
459 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:23:38 ] JMF使ってる?
460 名前:デフォルトの名無しさん [2007/11/25(日) 00:23:49 ] 動画を描画するコンポーネントのpaintComonent(...)をオーバーライドして super呼んだ後に、drawImage(...)でOKじゃね?
461 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:35:49 ] いや >USBカメラから動画キャプチャを行い撮影ボタンを押すとその時の >静止画がJPEGで保存するところまでは作った ここにJMF使ってるならJMF流儀の動画の描画の仕方があるから動画のキャプチャをどうやってるかでやり方が決まる。
462 名前:デフォルトの名無しさん [2007/11/25(日) 01:30:58 ] JMFをつかっています。 キャプチャ部分となりますと new Timer(100, new ActionListener(){ try { player = Manager.createRealizedPlayer(new MediaLocator("vfw://0")); } catch(Exception e){ System.out.println(e); System.exit(1); } player.start(); ここになりますでしょうか。 ご教授よろしくお願いします
463 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 02:44:57 ] >写真フレーム(gif)を動画上に表示する これがやりたいんだよね? ならEffect実装してProcessorからTrackControl取り出してTrackControl#setCodecChain(Codec[])で実装したEffectセットしてやれば良い。 んでProcessor#getVisualComponent()で取得したビジュアルコンポーネントを適当に張り付ければ良い。 あとはJMFのページのチュートリアルとかサンプルコード読んで。
464 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:21:48 ] 日本語を入力時、「確定はされていない文字列入力状態中」(Windowsでは文字の下に破線が引いてある状態)を調べる方法はありますか?
465 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:22:47 ] ImmGetCompositionString
466 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:23:19 ] ごめん、ここJavaだったorz
467 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:34:01 ] Component に addInputMethodListener を仕掛けておけば取れるみたい?
468 名前:464 mailto:sage [2007/11/27(火) 20:44:22 ] >>467 InputMethodEvent#getCommittedCharacterCount() で判別できそうですね。 ありがとうございました!
469 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:28:42 ] Java Web Startのアプリで、jnlpファイルの中で <security> <all-permissions/> </security> を設定していて、jarにはオレオレ証明書でサインしている。 確かにファイルアクセスなど自由にできるから、 この設定は有効化されているはずなんだが、 Point p = MouseInfo.getPointerInfo().getLocation(); で Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied (java.awt.AWTPermission watchMousePointer) が出るのって、これはどういうことなんだろ。 JWSで動かさなければこのエラーは出ないんだが。
470 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:03:31 ] >>469 JWSのバグでね? そのクラス1.5からのやつだからもしかしたら・・・
471 名前:デフォルトの名無しさん [2007/12/01(土) 00:09:26 ] frameにタブだけ貼り付けたの作ると、 初めに、タブのタイトル部分に選択状態みたいなのが行くんだけど、 それをタブに貼ってある、jCheckBoxに初めから行くようにしたいんだけど、 windowsのアプリはそうなるようなんで。 どうやったら出来ますか?
472 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:49:32 ] フォーカスのトラバーサルいじるAPI群なかったけ?
473 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:54:40 ] 初期状態ってことならオープン時にフォーカスセットしてあげれば?
474 名前:471 [2007/12/01(土) 01:19:46 ] jCheckBox.requestFocusInWindow(); よく分からないけど、setVisible(true)した後しかフォーカスがいかないな…
475 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:19:51 ] >>471 つrequestFocusInWindow() 俺はタブはいつもsetFocusable(false)するなぁ。
476 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:26:01 ] >>474 つaddAncestorListener() ancestorAddedでrequestFocusInWindow呼んでみそ
477 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:27:34 ] ふつーにオープン時でいいとおも
478 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:28:59 ] >>477 それだとタブで切り替えたときにフォーカスが移らないってことだとおも
479 名前:471 mailto:sage [2007/12/01(土) 01:59:35 ] >>476 おーサンクスサンクス。 これで完璧だわ。AncestorAdapterは何故かないんだな
480 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:59:55 ] アダプタクラスは実装するメソッド数が少ないか そのインターフェースの多くが実装される可能性が高いリスナーは 利便性が低いからアダプタクラス用意しないって方針だよ。
481 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:36:16 ] JPopupMenuの使い方なのですが、ポップアップメニューの対象によってメニュー内容を変えたい場合、一般的にどのような方法を取るのがよろしいでしょうか? 単純に対象を毎回チェックしてその対象に必要なメニューを構成する、というのはどうも気持ちが悪くて・・
482 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:02:52 ] リスナーのフィールドにして遅延生成すればいいだけじゃない?
483 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:35:03 ] 対象の種類ごとにJPopupMenuを予め作っておく・・・・のはムダが多いか
484 名前:481 mailto:sage [2007/12/01(土) 12:48:32 ] >>482 遅延生成とはどういうことを指すのでしょう やはり表示毎に必要なメニューを生成という意味でしょうか? >>483 例えば対象の種類にあらゆる属性があり、その属性ごとに必要なメニューがある場合、その組み合わせをあらかじめ作っておくのは好ましくないかと・・
485 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:55:47 ] じゃあ、すべての項目を含めたJPopupMenuを1個用意しておいて、各JMenuItemのsetVisibleを切り替えるとか
486 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:24:05 ] >>478 そういう意味だったのか あの日本語からはそこまで理解できなかったよ
487 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:28:15 ] >>481 表示される項目が全て画面に収まるのならすべていれる。 そして選択可能不可能で調整したほうがいいんじゃない? コンポーネントによってメニューがかわるより、メニューは同じで選択可能か不可能かのほうが ユーザーに優しいとおもわれる。 この選択肢は下のほうにあるとか上のほうにあるとかコンポーネントごとにかわっていたら厄介だ。
488 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:01:14 ] JFrameの上には、とりえあえずJPanel置くべきですか?
489 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:04:11 ] packの仕組みをしっているのならおいたほうがいい そうでなくともパネルに機能単位でのせていったほうが楽になるかな グループレイアウトを使うのなら場合によってはなくてもいいかも
490 名前:481 mailto:sage [2007/12/01(土) 15:52:06 ] >>485 >>487 とりあえず全部登録しておくのが楽なようですね。 場合によってsetVisible、setEnabledで使い分けようと思います。 ご意見ありがとうございました。
491 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:02:09 ] >>480 そうなんだ〜。まぁ、よく使うなら自分でAdapter作ればいいしね〜。
492 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:44:49 ] LinuxのSwing上でトラックポイントのセンターボタンでスクロールしたときに コンテキストメニューが開いちゃうんだけど、心当たりがある人いる? JavaはSunの1.6.0_03
493 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:12:28 ] これかな? sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/awt/1.3/designspec/popupmenu.html >・Windows では、マウスボタン 2 マウス UP でメニューがポップアップする >・Motif では、マウスボタン 3 マウス DOWN でメニューがポップアップする
494 名前:デフォルトの名無しさん [2007/12/02(日) 21:54:41 ] 以下の挙動で、困っています。 JNLPでデスクトップにショートカットアイコンを作成し、 そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、 「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。 ここで「詳細」ボタンを押すと、次のような情報が表示される。 ※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。 InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }] at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source) で、問題なのは、ここで、ドラッグアンドドロップしたファイルが、 何の断りもなく、いきなり 削除 されてしまう、ということなのです。 この不具合は、あらゆる全てのJNLPアプリで、全てのOSで再現しました。 こうした挙動を防ぐような、何らかの対策をすることは可能でしょうか?
495 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:20:49 ] >>494 MacOSX Leopardでやろうとしましたが再現しませんでした。 何よりファイルにDnDができない。 bugreport.sun.com/bugreport/ で報告してください。 報告時は具体的な再現方法と再現環境を書いておくのが吉です。 ありとあらゆる、というのはちょっと曖昧すぎます。
496 名前:デフォルトの名無しさん [2007/12/03(月) 01:24:26 ] ごめん、たしかに、MacOSでは試していない。 あと、64bit用のJREやSolarisでも試せていない。 こちらで試したのは、Windows Vista, Windows XP SP2, UbuntuLinux(7.04)の上で、 1.4.2_16,1.6.0_03,1.6.0_10-ea(いずれも32bit用)。 ここまでやって、いずれの環境でも再現した。 いま、Java7でも試そうとしているところ。 Javaキャッシュビューアで、インストール済みのJNLPアプリについて 「選択されたメニューのショートカットを作成」または、 右クリックメニューで「ショートカットの作成」で、 ショートカットがデスクトップにすることができる。 そうして作られたショートカットに、 ユーザが何かのファイルを放り込むと、 そのファイルが勝手に削除されてしまう、ということ。 ユーザがデスクトップ上のメモ帳のショートカットにファイルをDnDして 開こうとして、まちがって隣のJNLPアプリのショートカットにドロップしたところ、 そのファイルが勝手に削除されてしまう、という感じ。 > 何よりファイルにDnDができない。 たぶん、そういう挙動が正常なのだと思う。
497 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 11:36:46 ] 質問です。JButtonがアイコンであるGIFファイルの縦横サイズより結構大きくなってしまうのですが、コンパクトにする方法は無いでしょうか?
498 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 12:06:32 ] >>497 JButtonのjavadocを隅から隅まで読んで しかるのちにボーダーのマージンを設定したらいいよ
499 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:21:41 ] >>498 497です。できました。ありがとうございます。
500 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:03:22 ] JFrameでgetContentPane()をしなくてもよくなったは、いつからですか? 自動的に転送されるようになったってのを読んだのですが。
501 名前:デフォルトの名無しさん [2007/12/06(木) 02:06:17 ] 5.0
502 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:10:45 ] 即レスthx
503 名前:デフォルトの名無しさん [2007/12/07(金) 22:41:46 ] シューティングを作りたいと思ってます メイン画面とスコア画面があって、 それぞれJPanelを継承したクラスを作ってMainPanel,SubPanelと作ろうと思ってるんですが、 この方法は値の受け渡しが面倒くさくなったり、重くなったりしますか? 普通はひとつのゲームは大体1パネルですかね?
504 名前:デフォルトの名無しさん [2007/12/07(金) 22:43:16 ] 普通はゲームにSwingなんて使わなくないか? ましてシューティングで・・・
505 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:45:12 ] Javaの勉強もかねて作ってます 最近はSwingもだいぶ早くなったと聞いたんですが...
506 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:51:48 ] ゲームなら、Frameに直接描けばいいと思う。 BufferStrategyを使うのも良し。
507 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:52:23 ] 400x300で24fpsくらいで試してみるといいよ。 Swingはシングルスレッドだから、パッシブ連打でも問題ないはず
508 名前:デフォルトの名無しさん [2007/12/07(金) 23:00:08 ] パッシブ連打とは?
509 名前:503 mailto:sage [2007/12/07(金) 23:01:39 ] Frameに直接書くってことはpaintComponentメソッド内に メイン画面用とスコア画面用の描画処理が混在してるってことですよね? そうすると片方の画面の背景だけ変更するなどの処理とかがややこしくはならないですか? パネルで分けるとコードがすっきりする気がするんですが
510 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 23:05:41 ] パッシブ・レンダリング=描画イベントによる受動的なレンダリング(repaint()) アクティブ・レンダリング=自発的に描画を実行するレンダリング(Toolkit.sync(), BufferedStrategy)
511 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 00:30:40 ] >>503 つまりWindowシステム普及前のゲームプログラミングが難しかったと思ってる? んなことないよ 練習がてらというのならSwingつかってもいいけどメリットはあんまないとおもうよ JLabelのアイコン指定でキャラ表示とかSwingというフレームワークで 描画や再移動とかそういうことでしょ? 途中でもっといいものを、もっと本格的なものを、となって挫折しそう あとpaintComponentではゲームのレンダリングの処理はいれないことね
512 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 00:31:36 ] さらに付け加えるとパッシブレンダリングはいわゆるトリプルバッファを使わないといけないから注意ね ダブルバッファじゃダメ
513 名前:503 mailto:sage [2007/12/08(土) 00:51:35 ] 全体的な流れとしては、レンダリング(描画?)は各オブジェクト(敵、弾)のクラスのdrawメソッド(メソッド名は自由?)などで行い、 paintComponentはそれを呼び出すだけ。で、必要に応じてrepaint()を行うとpaintComponentが再描画されるという感じでしょうか?
514 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 00:59:58 ] paintのタイミングは自前のrepaintだけじゃないからそれはやっちゃだめ ウインドウの重なり具合とかOSが画面をいきなりリフレッシュしたりとかあるから 各オブジェクトにdrawのインターフェースを実装させるという考え方はあってる レンダリングは自前でAというバッファへしてるとすると、 その間描画はBというバッファからイベントでフロントへ描画させる Aのレンダリングが終わったらAとBをいれかえて、次のフレームの描画はBへ行う バックバッファへのレンダリングとフロントへのレンダリングが重なる場合もあるという考え方ね
515 名前:503 mailto:sage [2007/12/08(土) 01:09:30 ] ダブルバッファがいまいち理解できてないのでもうちょっと勉強してみます。 答えてくださった方どうもありがとうございました
516 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 01:16:16 ] 本当はJavaでゲーム作成というスレがあったんだけど最近おちちゃったんだよな ゲーム製作板とかいろいろと斜め読みしてみるといいかも
517 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 03:09:19 ] Javaでゲームってのはなかなか前衛的でおもしろいと思うんだが、 如何せんパフォーマンスが悪いのが致命的なんだよな。 いくら努力しても、一定以上FPSが上がらんとなるとどうしても敬遠したくなる。
518 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 06:27:05 ] 勉強として作るプログラムも題材の選び方はかなり重要だよ。 努力するほど深まって発展していく題材と、 底の浅いところですぐに打ち止めになるのがある。
519 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 08:27:04 ] 勉強の段階なら、何を作っても勉強になる。
520 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 08:28:32 ] Javaでエロゲぐらいなら作れそうじゃね?
521 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:47:04 ] アクションだろうがパズルだろうがなんでもできるんじゃないの。 ブロック崩しやテトリスくらいなら楽勝。 ゲーム専用機であるようなハデなアクションゲームを作りたいならお門違い。
522 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:49:46 ] あと速く動かしたいなら画面小さくすればいいんだよ。256 * 192とか。w 昔のアーケードゲームの解像度はせいぜいその程度だったしさ。
523 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 11:36:49 ] シューティングやアクションはともかくとして リアルタイムシミュレーションとか向いてると思うけどな>java スレッド周りとか楽々作れるし
524 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:55:52 ] ゲ制作板で話せ
525 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:32:05 ] >>517 まじていってるの?
526 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:33:14 ] リアルタイムのアクションものも余裕で出来るよ IntelCore2/2GHzでJavaで動かすとCネイティブだと1.6GHzくらいの速度になるけど それが問題になることはまずあるまい
527 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 01:17:57 ] [MainFrame.java] public class MainFrame extends JFrame { public MainFrame() { MainPanel mp = new MainPanel(); Container contentPane = getContentPane(); contentPane.add(mp); } public void main(String[] args) { MainFrame frame = new MainFrame(); frame.setVisible(true); } } [MainPanel.java] public class MainPanel extends JPanel implements ActionListener{ public MainPanel() { SubPanel sp = new SubPanel(); } public void actionPerformed(ActionEvent e) { setBackground(Color.BLACK); } } [SubPanel.java] public class SubPanel extends JPanel { public SubPanel() { JButton b = new JButton("メインパネルの色変更"); b.addActionListener(); }
528 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 01:23:46 ] ↑の様な構成で作りたいんですけど、うまくいきません。 ようするにSubPanelのインスタンスからMainPanelのインスタンスへ アクセスするにはどうすればよいのでしょうか? MainFrameでMainPanelのインスタンスをpublicでstaticにしたりいろいろやったのですが、 うまくいかないのでどなたか教えてください。
529 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 01:47:12 ] >>528 SubPanelにボタンのaddActionListenerを委譲して MainFrameからやりたいことを教えてあげればいいんじゃないの?
530 名前:528 mailto:sage [2007/12/10(月) 03:21:26 ] >>529 すいません 委譲がいまいちわからないんですが、SubPanelとMainFrameにaddActionListener()メソッドを作り、MainFrameにactionPerformedメソッドがあるような感じですか? 今までは↓のような形で出来るかなとやっていたんですが、うまくインスタンスにアクセスできていないみたいなんです。 もし↓で出来たとしてもなにか強引過ぎる気がします。もともと構成がありえないんですかね? [MainFrame.java] public class MainFrame extends JFrame { public static MainFrame frame; public static MainPanel mp; public MainFrame() { mp = new MainPanel(); Container getContentPane.add(mp); } public void main(String[] args) { frame = new MainFrame(); } } [MainPanel.java] public class MainPanel extends JPanel implements ActionListener { public MainPanel() { sp = new SubPanel(); this.add(sp); } public void actionPerformed(ActionEvent e) { setBackground(Color.BLACK);}} [SubPanel.java] public class SubPanel extends JPanel { public SubPanel() { JButton b = new JButton("メインパネルの色変更"); b.addActionListener(frame.mp);}}
531 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 10:02:09 ] MainPanelはPaintComponentをオーバーライドしないといけない気がする…
532 名前:531 mailto:sage [2007/12/10(月) 10:06:52 ] やっぱ要らないか
533 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 10:45:47 ] >>530 設計方針とか変更不可のクラス等の制約条件とかが分からないけど 手っ取り早くやるならMainPanelとSubPanelの親子関係がそのままなのを前提に b.addActionListener((MainPanel)getParent());
534 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 11:19:28 ] 俺なら SubPanel#addColorChangeActionListener(listener){b.addActionListener(listener);} を作る方を選ぶかな。
535 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 12:32:25 ] これってSwingの話ですらなくて言語の基本の話だろ? なんでstaticがでてきたりするんだ? まずは言語の勉強からやりなおしたほうがいいんじゃないかい?
536 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 12:51:30 ] たぶんMainFrameやMainPanelのインスタンスをSubPanelで参照する方法が分からなくて、 b.addActionListener(frame.mp);}}ってやってもコンパイルできなくて、 b.addActionListener(MainFrame.mp);みたいにできるようにクラス変数にしちゃったんだと推測。 プログラムの設計と実装の仕方を良い参考書や良いソースを見ながら勉強した方がいいと思う。
537 名前:530 mailto:sage [2007/12/11(火) 00:36:38 ] >>536 正にその通りです >>533 getParent()なんてのがあったんですね どうもありがとうございました
538 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:58:13 ] >>530 のコードを見る限り getParent()は使わないほうがいいな 独立性が失われるのにListenner使ったりとかありえん まず言語の基本の勉強からしたほうがいい 近道しようとしても無駄だと思う ここ本当に基本中の基本だから
539 名前:503 mailto:sage [2007/12/11(火) 17:52:44 ] >>538 すいませんご指摘ありがとうございます SubPanelのコンストラクタでgetParent()しても、その時点ではMainPanelの子にはなってないということですよね >独立性が失われるのにListenner使ったりとかありえん これはimplements ActionListenerのことですかね アダプタクラスというのを使ったほうがいいということでしょうか 一応基礎はやったつもりでいたんですが、今回GUI使うことでぜんぜん理解できていないことに気づいてそれだけでもよかったです もう来ません ありがとうございました。
540 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:53:25 ] もうきませんって捨て台詞・・・はもうきこえてないか インスタンスの参照を渡せばいいだけでしょ? それができないってことはJavaの勉強1週間程度しかしてないということかな?
541 名前:530 mailto:sage [2007/12/12(水) 00:36:46 ] ながながとスレ違いすいません 勉強はJavaの入門書を一通り読んだんですが(スレッドくらいまで。デザインパターンは全く)、ちゃんとは理解できてなかったようです。 参照を渡すといいましても>>530 のコードだと難しくないですか? コンストラクタでいろいろやってるのも悪いんですかね 本当にこれで最後にしますんで、 MainPanelとSubPanelが連動していて(Subのボタンを押すとMainの内容を変更したりする)場合、 どんなコードになりますか?親切な方おねがいします
542 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:37:50 ] いや、普通に継承してるんだから MianPanelはSubPanelを生成してあげたあとにセットしてあげるでもいいんじゃない? SubPanelに private MainPanel mainPanel; public setMainPanel(MainPanel panel){ this.mainPanel = panel; } と追加しておいて sp = new SubPanel(); sp.setMainPanel( this ) ; this.add(sp); とするといい。 subからMainを触りたければ上で定義したprivateなmainPanelに対してアクセスをする。 MainPanelでSubPanel作って乗せてるだけだからこれでいいと思われ。 MainPanelが先に消えたりする可能性があるとかだとリスナーいじってどうのこうのが必要になるけど たぶんあなたがやりたいのはこれで十分かと。
543 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:44:04 ] そもそも設計の段階で間違えてるんじゃないか?
544 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:34:31 ] >>542 それだと SubPanel が汎用性の低いクズパーツになるだろ。 SubPanel がボタンを持つパネルならそのボタンのアクションリスナーを >>534 のように SubPanel に委譲してやったほうがいい。 public class SubPanel extends JPanel { private JButton button; public SubPanel(String buttonText) { button = new JButton(buttonText); this.add(button); } public void addButtonActionListener(ActionListener listener) { button.addActionListener(listener); } } public class MainPanel extends JPanel implements ActionListener { public MainPanel() { SubPanel panel = new SubPanel("メインパネルの色を変更"); panel.addButtonActionListener(this); this.add(panel); } public void actionPerformed(ActionEvent e) { this.setBackground(Color.BLACK); } }
545 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:06:00 ] >>544 アクションイベントだけならそうだろうけど GUIってそれ以外のプロパティの変更とかふつうはやるものだし
546 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:35:41 ] main panelをある構造に従って作るようにして、sub panelでその構造を変化させたらいいんじゃないの?
547 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:44:05 ] そこまでの設計が出来ていればこんな質問はせんだろうと。 ActionListennerをMainPanelで実装している時点で複数のイベント対応がおわっとるわけで。
548 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:31:50 ] >312でも書かれてるけど、Synthって流行らないのかなー。 スキンがXMLファイルと画像で済むならたくさん配布されてそうなのに、 どうして一個も見つからないんだろう・・・
549 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:37:42 ] まず最初の一個を>>548 が作って布教
550 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:41:15 ] つ Nimbus
551 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:48:27 ] よーし作っちゃうぞー Synth Studioにちょっと期待。 weblogs.java.net/blog/gfx/archive/2005/09/synth_studio.html >550 Nimbusもいいと思うんだけど、とにかく数が出ないことにはなんとも多様性が少なすぎます。
552 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:38:29 ] スキンを色々着せ替えたい人ってどんなアプリ作ってんの? 着せ替えできることを売りにしてるアプリで俺が最初に思い出すのがCDプレイヤー。
553 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:03:49 ] NetBeansで気分転換にLAFかえるとかは5.0のころ流行ったなぁ 参考: ttp://d.hatena.ne.jp/nowokay/20060223#1140636171 Substanceは6.0では動かないくさいけど
554 名前:デフォルトの名無しさん [2007/12/12(水) 17:10:21 ] ウィンドウをキャプチャし、JPGで保存するようなプログラムを作成中です。 手法、使用APIなどご教授お願いします。
555 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:18:24 ] >>554 なぜここで聞く?質問スレ行った方がいいんじゃないか?
556 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:37:28 ] キャプチャに関してはRobotがAWTパッケージに入ってるからかな? って感じでもないか。 知ってたらBufferedImageを保存するには?って聞くだろうし、それはスレ違いか。
557 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:44:29 ] >>553 そういう感じのLAFがカッコイイと思う人もいるんだろうけど・・・ ブログのスキンとは求められてるものが違うんでね?
558 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:39:42 ] Nimbusってjava LAFの置き換えなんだろうか? それとも共存するんだろうか? NimbusってSynthで全部自前でやってるせいか少し重いからイマイチなんだが。