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
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で全部自前でやってるせいか少し重いからイマイチなんだが。
559 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:16:20 ] 重いかな? というか、エンジン部分が決まっているので むしろこれからのチューニングに期待できるんだけど。 Nimbusが出てきてからSubstanceへの興味はだいぶ薄れちゃったな・・・ V2Cは、6u10に入ってるNimbusで綺麗に動くので最近はNimbusで見てる。 素のMetalやOceanよりしっくりきてる。 普通に見れて、プラットフォーム共通の見栄えってのは重要でしょう。 Metalは、お世辞にも見栄えがいいとはいえなかったから・・・・(派手だけど)
560 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:25:21 ] 見た目のこと言い出すと宗教戦争になりそう。
561 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:26:24 ] SynthってXMLと画像をjarに詰めて配布するの? jarをインデックス付き無圧縮で配布すれば多少早いかもね。 もしくはSynthをコンパイル可能にするとか。
562 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:26:41 ] ぶっちゃけSystemLAFがデフォになってくれるのが一番いいかも NetBeansもそれでシェアを一気に伸ばしたし
563 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:07:13 ] 見た目なんて飾りです。えらい人にはそれが分からんのです。 ていうかクロスプラットフォームの実現性としてはjavaLAFがデフォの方が良いけど、 ユーザビリティが落ちるので天秤ってところか・・・。
564 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:40:36 ] LAFを変更したらレイアウトが微妙に崩れてデザインが台無しとかけっこうある。 部品をカスタマイズしてたりするとなおさら。 で、いくつもLAFがインストールされていても、事実上使えないものが出てくる。 そんなLaFしか実現できないのなら、LAF一つで統一してほしいところだな。
565 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:25:54 ] >>564 推奨サイズを使って設定してくれるならずれることはほとんどないはずだけど? 今まで大量にSwingアプリ作ったがLAFかえて問題が出る場合ってのはほとんどないよ。 むしろWinネイティブより楽。
566 名前:デフォルトの名無しさん [2007/12/12(水) 21:35:29 ] >>565 推奨サイズって何? カスタムコンポーネントなしのアプリしか作ったことないんじゃないの?
567 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:45:28 ] 本気で言ってんのかコイツ
568 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:04:47 ] Swing使いが推奨サイズを知らないとは思えんが・・・・
569 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:18:38 ] きっと日本語ではなく preferredSize といえば通じるよっ。
570 名前:デフォルトの名無しさん [2007/12/12(水) 22:47:58 ] 生憎日本の会社で働いたことがないので。日本語のAPI docもたまに 見るけど気付かなかったよ。どこかに便利なサイズの表でもあるのかと思った。
571 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:23:41 ] 今日もJava釣り君元気だな
572 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:25:17 ] >>570 つまり、preferredSizeを和訳できなかったわけだな。中国の会社の人?
573 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 02:30:49 ] インドだろう常考
574 名前:564 mailto:sage [2007/12/13(木) 02:58:31 ] >>564 もちろんそうしてるよ。JDK1.0のころからある普通のレイアウトマネージャを組み合わせてレイアウトしてる。 そりゃテキストエディタのようにツールバーとメニュー、オプション選択とOK/NOボタンしかないとか、 その程度なら問題ないだろうけど、複雑になるとたいがい問題でると思うけどな。 ただしまったく使えなくなるほど、ひどいことになるのは少ない。 レイアウトデザインには急所があってさ、絶対はずせないところってのがいくつかある。 そこがずれると一気にしまりがなくなってださくなるとこが。 そういうとこが狂うと、やめてよっていいたくなる。 LAFに応じて位置とサイズを調整するようなコードを書くとか、無難なデザインを適用する事はできると思う。 でもそういうのってなんか違うと思うんだよね。
575 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 03:27:33 ] ボケたか自演か?
576 名前:564 mailto:sage [2007/12/13(木) 03:52:46 ] >>575 >>565-573 までは俺じゃないから。 罵りあって遊びたいならマ板にでも逝けよ。
577 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 08:46:37 ] 推奨サイズを知らないバカと自分のレスにレス付けてるボケがいるスレはここですか?
578 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:04:12 ] レイアウトが崩れる例ってのを、出してみてよ 簡単なのでいいから
579 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:45:14 ] 複雑になると問題が出るっていってるのに簡単なのでいいからっていうツッコミ、気の毒だな。
580 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:54:56 ] >>578 21 * 21 のicon,pressedIcon,rolloverIconの三枚のボタン画像を作りJButtonのプロパティに指定。 perferredSize=21,21 margin=0,0,0,0 focusPainted = false contentAreaPainted = false borderPainted = false LaFでMotif,Windows,Metalの三通りを試してみてよ。Motifはアウトだから。 画像ボタンをつくればいいだけなら解決策はあるけど、しかし、 GridBagLayoutで次のようにJTextFieldが等間隔でならんでいて、 その一つにこの画像ボタンがあるとする。 [TextField] [TextField][B] ←画像ボタン [TextField] [TextField] アウトだよね。レイアウトは崩れる。デザインを修正することで回避する策もあるし、 使えないってことはないが、LaFを切り替えると振る舞いが違うのは困る。
581 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:04:33 ] >>578 もう一つ例をあげると、Motifのメニュー操作法と、Windows,Metalの操作法は異なる。 これは使ってみればすぐに分かると思うけど。 それから、JSliderBarの操作法ね。Metalと残りのWindows,Motifでは振る舞いが異なる。 これもわかりにくいかもしれないけど使ってみれば分かると思う。 LaFは見かけ上の外観を変更するだけのはずなのに、操作体系にまで干渉したらまずいと思うんだけど。
582 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:57:22 ] ルック&フィールのフィールって何か分かってるか?
583 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:05:42 ] >>581 LaFはLook & Feelの略だよ。外見を変更するだけじゃない。
584 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:14:14 ] >>580 すまん、やってみたが、レイアウトは崩れないっぽいんだが… なんか俺間違ってるのかも試練から どこがどう崩れたのか教えて欲しい
585 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:31:58 ] >>582 単純思考のくせに傲慢そうなやつだな。w feelは手触りだから、操作体系が異なるのは仕様のうちだとでもいいたいのか?w しかしそれでは良くない場合のほうが多いんだよな。 アプリに無意味な混乱を与えるくらいならLAFをユーザに選択させないほうが俺は良いと思うけどね。 ボタンが数個しかついてないようなアプリならまーすきにすればだけど。
586 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:36:10 ] >>584 画像はいらないから、コードをコピペしてみて。 環境の違いもあるだろうし。
587 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:37:38 ] コードつーかソースね
588 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:48:37 ] Look and Feelのfeelには気分や雰囲気の意味もあって、必ずしも操作法を指すともいえないけどな。
589 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:12:06 ] >>586 public class Test extends JFrame { static public void main(String args[]){ new Test().createUI("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } private void createUI(String laf){ try { UIManager.setLookAndFeel(laf); } catch (Exception e) { } this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); JPanel p = new JPanel(gbl); c.weightx = c.weighty = 1; JTextField t0 = new JTextField(10); c.gridx = c.gridy = 0; gbl.setConstraints(t0, c); p.add(t0); JTextField t1 = new JTextField(10); c.gridy = 1; gbl.setConstraints(t1, c); p.add(t1);
590 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:12:36 ] JButton b = new JButton(new ImageIcon("./normal.gif")); b.setPreferredSize(new Dimension(21,21)); b.setMargin(new Insets(0,0,0,0)); b.setFocusPainted(false); b.setContentAreaFilled(false); b.setBorderPainted(false); b.setRolloverIcon(new ImageIcon("./over.gif")); b.setPressedIcon(new ImageIcon("./pressed.gif")); c.gridx = 1; gbl.setConstraints(b, c); p.add(b); JTextField t2 = new JTextField(10); c.gridx = 0; c.gridy = 2; gbl.setConstraints(t2, c); p.add(t2); JTextField t3 = new JTextField(10); c.gridy = 3; gbl.setConstraints(t3, c); p.add(t3); getContentPane().add(p); this.pack(); this.setVisible(true); } }
591 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:42:18 ] >>589-590 さんきゅー。やってみた。 ただし画像を取得する部分は、getResource()を使う方法に修正させてもらった。 こっちの環境でMotifを指定してみたら、画像ボタンは正常表示されなかった。 new Test().createUI("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); 具体的には、3 * 3くらいのサイズで表示されてしまう。 MetalやWindowsのLAFでは、このような状態にはならない。 ところであなたの環境はなに? 3*3の状態で表示されたときは、当たり前ながらレイアウトは崩れない。 ボタンサイズがJTextFieldのheightより小さいから。 で、こっちの環境で、Motifでもボタンを正しく表示させようとしたときは、preferredSizeを指定しなければ良いらしい。 しかしボタンは表示されるが、デフォルトのボタンサイズが27*26くらいに設定されてしまう。 するとJTextFieldのheightを越えてしまうため、ボタンのある行は上下に隙間が空いてしまう。
592 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:56:01 ] あ、ちなみにこっちの環境はWin2KのJDK1.6.0_03
593 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 15:04:42 ] いつまで続くのこれ?
594 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:03:04 ] b.setBorder(null); でどうよ?
595 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:32:49 ] >>594 その手があったかw
596 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:18:47 ] ボタンに限ったことじゃないだろうに・・・
597 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:13:03 ] たまたまMotif用の回避策があっただけのことでしょ。w LAF別に癖があって共通の振る舞いをしないのはかわらない。
598 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:50:38 ] どう見てもコンポーネントの表示を制御し切れてないヘタレというだけで レイアウト云々は関係ないと思うのだが
599 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:05:15 ] JButtonとかはサイズが指定してあると、Metal→Motifに変えたときにほんと崩れるよね。 普通にテキスト指定してJButton作っただけじゃ、OKとキャンセルボタンのサイズが違いすぎるから キャンセルボタンにあわせるようにしてるんだけど、Motifはおかしいよ・・・
600 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:58:53 ] まだ続くの?
601 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:08:14 ] Swingの話題だから別にいつまでも続いてもいいだろ
602 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:25:37 ] そういやMotifだとマウスホイールも効かないよな。 そんな中途半端なのいれなきゃいいのに。
603 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:28:15 ] SystemLAFならLinuxとかでもWin並みのFeelが得られるの? Win, Mac以外はLAFは何でもいいと思ってるのでお勧め教えて。
604 名前:デフォルトの名無しさん [2007/12/13(木) 21:35:08 ] >>598 で結論出たじゃん。
605 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:36:12 ] Linux では gtk使えるなら gtkじゃね?
606 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:39:41 ] >>598 ことLAFに関しては>>597 でFAだと思うが。 切り替えて不都合がでるLAFがある時点で不完全なシステムだな。
607 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:40:05 ] 正直Javaアプリ作ってもWinでしか使わないんだよね。 APIのバランスがいいし、今更.NET覚えるのはしんどいって理由で。 *nixやmacの挙動を調べるにはどうしたらいいんだろう。 LinuxならcoLinuxとか?
608 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:45:53 ] それ用にマシン用意するか、もってる人にテストを頼む以外なんかある?
609 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:46:51 ] Macごときに会社が金出すわけ無いじゃん。jk。
610 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:50:45 ] アップルに俺様の会社がMacでも動くアプリを作ってやったから、テスト用にMacを献上したまえといってみるとか。
611 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:54:18 ] Macごときに金ださんという会社は、JavaだろうがMacで動かす必要はないってことじゃね?
612 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:01:26 ] Macごときで動作しないなんてレポートが来られても困るし、 JavaクライアントでもMacは未対応ってことにしとけばいいか
613 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:22:42 ] そこはアップルの実装の問題だが、どうにも屑すぎる。 特に文字列処理。これはjavaに限った事じゃないけど。
614 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:34:26 ] たとえば文字列処理でどんなことが起きるの?
615 名前:デフォルトの名無しさん [2007/12/13(木) 22:45:06 ] ワイド文字いい加減とか
616 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:38:24 ] 仕事なら必要な範囲のアーキテクチャだけ動作保証するだけだし 趣味ならそもそも動作保証なんてしないから問題ないだろ…
617 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:37:15 ] 趣味で作っても、友達がMac持ってることあるから問題あるだろ。
618 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:41:59 ] aho
619 名前:デフォルトの名無しさん [2007/12/14(金) 15:36:51 ] 例えば、undo,redo(WindowsだとCtrl+z,Ctrl+y)とかのデフォルトの キーバインディングがOS毎に違ったりする場合、 LAF変更毎にjavax.swing.InputMapとかも変更すべきでしょうか? javax.swing.plaf配下のUI委譲を見ても、そんなコードは見あたりませんが。
620 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:21:15 ] >>614 Unicode正規化まわりじゃないの?
621 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:54:25 ] LAF変えるたびに、それ固有の修正を施すなんてかなり馬鹿らしい話 これからいくらでも増えてくるだろうし
622 名前:デフォルトの名無しさん [2007/12/15(土) 16:35:41 ] MacのredoのショートカットキーがWindowsと異なる (Ctrl+Shift+zだったかな)ことを最近知って、 さらに「Motifだとマウスホイールも効かないよな」っていうのを見て、 ふと疑問に思った。 マルチプラットフォーム対応のソフト作ってる場合って、 やっぱり、そんなことも考慮する必要があるんだろうな。 LAF毎に固有の修正を施すなんてかなり馬鹿らしい話っていうのは同感なんですが。 ふだん当たり前にできてることができないって結構ストレスになるから。
623 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:44:56 ] キー設定とかは外部設定に追い出しておいてプラットフォームごとに 切り替わるようにするくらいは必須だろうねぇ。 うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。 (個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac)
624 名前:デフォルトの名無しさん [2007/12/15(土) 17:27:21 ] >キー設定とかは外部設定に追い出しておいてプラットフォームごとに >切り替わるようにするくらいは必須だろうねぇ。 やっぱり、サーバーサイドより面倒ですね。 >うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。 怒られるほどのことではない。 というか、個人的には、そのほうが便利になってる気さえしますが。 余計な文字列がデザイン的にウザイってことなんですかね。 よくそういうどーでもいいディテールに拘る人いますし。 特に官公庁に。 >(個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac) へー。Macさわったことないから、全然知らなかった。 エミュレータでも買って、ちょっと弄ってみようかな。
625 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:45:03 ] そういえばMacのマウスはシングルボタンが基本だよね。 Winでは右クリでポップアップメニューが出る操作がよくあるけど、あれMacではどうなるの?
626 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:57:07 ] ふるーい mac だと ctrl + クリックでやってた記憶が…… ポップアップメニュー出す操作か、だけなら、 java.awt.event.MouseEvent#isPopupTrigger() みればわかるはず。
627 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:58:32 ] 何も考えたくなかったらMetalで固定ってことかな。
628 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:14:39 ] macはボタン長押しでコンテキストメニューじゃなかった? 今のmacはマウスホイール付いてた気がする。 小さな玉が・・・。
629 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:22:21 ] シングルボタンの場合は、Ctrl押しながらクリック。 2ボタンマウスを繋いだ場合は普通に右クリックできる。 Mighty Mouseも見た目はシングルだが、右よりの部分を押すと副ボタンと して扱える(デフォルトだと両方主ボタンになってるのはAppleの意地か?)
630 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:24:04 ] ノート型のMacだと、指を2本パッドに置いてクリックすると右クリック相当 だな。指2本でパッド上を滑らせるとスクロールとかも面白い。
631 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:28:50 ] MacのOS9時代まで使ってたけど、ctrl + クリックだったよ〜 まぁどうでもいいか。
632 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:41:56 ] 理想的にはLaF毎に諸々切り替えるべきなんだけど… 結局どこまでサポート範囲にするかってだけだとな気がする. ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ
633 名前:デフォルトの名無しさん [2007/12/15(土) 18:45:57 ] Synthについてなんですが、SwingのJComponentの派生クラスの ちょっとした動作変更のHackのサンプルコードとかで、 よくMetalほげUI(MetalComboBoxUIとか)を継承したクラスを作って、 JComponent#setUI(作成したMetalほげUIのサブクラス)とかやってますよね。 ああいうのって、その後Synthでスキンを変更しようと思った場合、 動作するんですか? Synth導入時はjavax.swing.plaf.synth配下のクラスを 使用しなければならないのかなと思っていて、 Synthパッケージのクラスの継承関係がBasicComponentUIのサブクラスだから、 MetalUIで作ったクラスは使用できないのかと漠然と考えているんですが。
634 名前:デフォルトの名無しさん [2007/12/15(土) 18:52:14 ] >ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ 同感。Motifは単にSunの意地。 クライアントLinuxも趣味にはいいけど、 個人的にはサポートしたくない。 でも、数ヶ月前に21:00台のNHKのニュースで出てた、 どこか忘れたけど、ITじゃない大手企業の普通の職場で SunのワークステーションでXが写ってた。 マジで使ってんの?って思ったけど。
635 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:19:05 ] ソラリスのMotifはそれなりにさまになってる感じもあるけど Winでみるとダサイ・・・ってまったく同じMotifというわけでもなくMotif風というべきか。
636 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:25:33 ] MacでCtrl+クリックで右クリということは、WinでCtrl+左クリに機能を割り当てていると、 Macでは困ったことになる・・・のだろうな・・・
637 名前:デフォルトの名無しさん [2007/12/15(土) 19:28:20 ] 実機が手元にないから、あれだけど。 SolarisのMotifは、Sunのハードの色のグレーと紫と一緒になって、 初めて調和する感じがする。 だから、他のハードで単体でMotifのLAFだけを見るとかっこ悪さしか感じない。
638 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:43:52 ] LAFというか視覚デザイン系は深入りすると底なし沼だからなぁ・・・・ 3Dソフトも今はなき?シリコングラフィックのあの癖のある筐体でみるのと、 DOS/Vの筐体でみるのではやっぱ違ってみえるよねw
639 名前:デフォルトの名無しさん [2007/12/15(土) 19:44:18 ] いろいろ考えるとInputMapはFactoryクラスとかで一括管理すべきなんだろうなと思ってきた。
640 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:44:55 ] そういえばJTableはCtrl+左クリで複数選択機能があったはずだけど、Macだとどうなるんだっけ。
641 名前:デフォルトの名無しさん [2007/12/15(土) 19:49:16 ] >シリコングラフィックのあの癖のある筐体でみるのと、 >DOS/Vの筐体でみるのではやっぱ違ってみえるよねw それはありますねー。 Sunのマシンにsunの4つつながったロゴがないだけでも、 Motifは別物に見えそうだし。 データセンターでMacのハードやUIがあったりしたら、 違和感ありそうだし。。。
642 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:39:08 ] >>619 質問 ↓のコードでもmacとwindowsで兼用できなかったの?? KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
643 名前:デフォルトの名無しさん [2007/12/16(日) 02:36:30 ] 619です。 >質問 ↓のコードでもmacとwindowsで兼用できなかったの?? >KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); Toolkit#getMenuShortcutKeyMask()メソッドは初めて知りました。 ありがとうございます。 興味本位で聞いただけです。 実際にやってみていない。というかmac環境がないので。試せません。。 tinyurl.com/3cbuj2 のあたりをざっとみると、 Ctrl+Cとかコピペ、Ctrl+F(検索),Ctrl+S|Oあたりは同じようですが。 Ctrl+Y(やり直し(Windows))の記載が見あたりません。 ちょっと前に、どこかでWindowsのCtrl+YはmacでCtrl+Shift+Zと見たんですが、 記憶違いかガセだったのでしょうか。 でも、macにはUndoの反対のキーバインドがないとは思えませんけど。 でも仮にmacにCtrl+Shift+Zがあるとすると、 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()だと、 引数と戻り値的に適切な値が取得できるとは考えられないですが。 それとgetMenuShortcutKeyMaskで適切な値が取得できるのであれば、 UIクラスのinstallUI()(すくなくともJTextComponentのサブクラスのUI)では、 InputMapにデフォルトで登録しておいて欲しいところです。 macをさわれる人にgetMenuShortcutKeyMask()の結果を聞きたいです。 いつになるか分かりませんが、私がmacを実行できる機会があれば、 結果を報告します。
644 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 03:30:19 ] Mac OS X 10.5.1 です。 % uname -a Darwin dorado.local 9.1.0 Darwin Kernel Version 9.1.0: Wed Oct 31 17:46:22 PDT 2007; root:xnu-1228.0.2~1/RELEASE_I386 i386 i386 MacBook2,1 Darwin % java -version java version "1.5.0_13" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237) Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing) System.out.println(Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); System.out.println(Event.ALT_MASK); System.out.println(Event.CTRL_MASK); System.out.println(Event.META_MASK); System.out.println(Event.SHIFT_MASK); 結果は 4 8 2 4 1 Metaキーってことですかね。
645 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 03:36:27 ] Mac OS XではCommand+Cとかになるからね。 getMenuShortcutKeyMaskの戻り値はEvent.META_MASKになる。 CommandキーはWindowsだとWindowsキー。
646 名前:デフォルトの名無しさん [2007/12/16(日) 17:50:37 ] 619です。 macの結果を教えてくださりありがとうございます。 macのショートカットキー一覧を見ると 「コマンド + C →「編集」メニュー コピー」と記載されているので、 つまり、getMenuShortcutKeyMask()を使用できそうということでしょうか。 ところで、macにはWindowsでいう「やり直し(Ctrl+Y)」 (元に戻すのを戻す?)は、ないのでしょうか。 私の言っている「Ctrl+Shift+Z」ショートカットキーは誤りですか? たびたびすみませんが、時間がありましたら教えてください。
647 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:11:03 ] HIG(Human Interface Guidelines) developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Keyboard Shortcuts developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-CHDIGFBH テキストエディット(メモ帳・ワードパッド) GarageBand(作曲) Pages(ワープロ) Keynote(プレゼン) Numbers(スプレッドシート) BathyScaphe(2ちゃんねるブラウザ) で見たら、「やり直す」はCommand+Shift+Zだった。
648 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:17:26 ] ちょっと古いけど ttp://developer.apple.com/jp/technotes/tn2042.html やり直しはShift+Command+Zだね。
649 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:36:01 ] うお、Leopardでは「取り消す(cmd+Z)」と「やり直す(shift+cmd+z)」に変わったんだね。 プレビューではファイルメニューに、最後に保存した状態に戻す「元に戻す」があったりする。
650 名前:デフォルトの名無しさん [2007/12/16(日) 20:20:32 ] >647さん >648さん >649さん ありがとうございます。 developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-CHDIGFBH のTable 7-5を見ると(Redo(やり直し))Command-Shift-Zってことですね。 頂いた情報を総合すると、getMenuShortcutKeyMask()の戻り値が Event.META_MASK(Commandキー)である。 やり直しはCommand-Shift-Zということですので、 コピーのキーバインディングに KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); は、良いけど undo,redoに KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); はNGということですね。 ということで、やはりプラットフォームごとにInputMapを用意する 必要があるということですね。 実装する予定はありませんが、勉強になりました。 面白かったです。
651 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:00:00 ] Swing標準のキーバインドってなかったっけ? あったらそれで良いと思う。 あれはLAFで決まるんだっけ?
652 名前:デフォルトの名無しさん [2007/12/16(日) 21:36:45 ] 619です。 >Swing標準のキーバインドってなかったっけ? swing.plaf配下のUI委譲のInputMap登録コードでは、 JListでの上下移動、JComboBox等の選択等の細かいものを除けば、 基本的に選択(JTableのセル選択,JTextComponentのテキスト選択)、 移動系(セルの選択位置移動、キャレットの移動)の キーバインドしか登録されないのです。 undo,redoをはじめ、Ctrl+S,Ctrl+O等の、機能が実装されていないものに 関しては仕方がないにしても、JTable,JTextComponentでは、 printを実装しているにも関わらず、Ctrl+Pも登録されません。 ですから、標準のキーバインドはないのでは?と思っています。 まぁ、個別のOSのアプリケーションを熟知してませんが、 Gridやテキストエディタでの選択、移動のショートカットキーは、 各OSともほぼ共通なため、そのあたりは登録できるものの、 undo,redo等は、上記のような例があり、標準として登 録できないという事情があるのかもしれません。 でもSwing標準のキーバインドなんてあったとしても、 個人的には、ショートカットキーをバリバリ使う人にはストレスフルで 使いたくないし覚えたくないだろうと思いますが。 ちなみにLAF毎に、キーバインドを登録するようなコードが それぞれのUIクラスのソースに無いのは先述のとおりです。
653 名前:デフォルトの名無しさん [2007/12/16(日) 21:48:11 ] >>633
654 名前:_ [2007/12/19(水) 14:53:45 ] combodata = {"a", "b", "c","d"}; ・ ・ ・ private void Combo1ActionPerformed(java.awt.event.ActionEvent evt) { if (Combo1.getSelectedItem().equals("a")||Combo1.getSelectedItem().equals("b")){ Combo2.setEnabled(true); } else{ Combo2.setEnabled(false); } } Combo1でaかbが選択された場合はCombo2が有効で Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが 上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると Combo2は無効にならずに有効のままになってしまいます. 同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます. これを直す方法を教えていただけないでしょうか?お願いします.
655 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 15:17:46 ] いくつか突っ込みどころがあるから最初からやり直した方が早い。
656 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 03:59:56 ] 最初からやり直すというか、紙の上で状態遷移を考えた方がいい。 自分の言ってる矛盾に気付けるから。
657 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 08:13:43 ] >Combo1でaかbが選択された場合はCombo2が有効で >Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが 下のCombo2はCombo1の間違えだよね?
658 名前:デフォルトの名無しさん [2007/12/20(木) 08:46:01 ] Combo1の間違えでした. Combo1の状態に応じてCombo2の有効,無効が変化する 物をつくりたいんですが教えていただけないでしょうか
659 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 09:23:02 ] combo2.setVisible(false); これでは駄目なの?
660 名前:_ [2007/12/20(木) 11:53:34 ] 上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると Combo2は無効にならずに有効のままになってしまいます. 同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます. 最初の選択では上手くいくんですが選択を変更すると変化してくれないんです。
661 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 12:45:54 ] まず、そもそもCombo1ActionPerformedメソッドが実行されてるのかどうかを確かめるんだ。 実行されてるなら、そのときCombo1.getSelectedItem()の値が実際は何になっているのかを確かめるんだ。
662 名前:_ [2007/12/20(木) 13:07:41 ] Combo1でaを選ぶとCombo1ActionPerformedメソッドが実行されてCombo1.getSelectedItem()の値は aになっているんですがその後にCombo1でcを選んでもCombo1ActionPerformedメソッドが実行されてません 続けて選んだ場合にもCombo1ActionPerformedメソッドが実行されるようにするにはどうすればよいのでしょうか?
663 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 13:44:37 ] >>662 実行されてないのをSystem.out.println文で確認した?
664 名前:_ [2007/12/20(木) 16:00:32 ] 確認しました コンボボックスを変更してもActionPerformedにいってくれないようです
665 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:13:44 ] ActionListenerをやめて、ListDataListenerでComboBoxModelの変更を捕らえてみたらどう
666 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:48:40 ] おい、おまいら。 SwingApplicationFramework使ってますか?
667 名前:デフォルトの名無しさん [2007/12/20(木) 19:57:08 ] 使ってません。 あれって便利なの?
668 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 20:00:15 ] 使ってみようと、Netbeansでプロジェクトを作った。 でも、どうするものかいまいちピンときていない。 Actionの管理をしてくれるのはいいんだけどちょっと縛りがきついなぁと感じた。 IDE無しでは複雑過ぎる気がする。
669 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 20:57:09 ] IDEなしでの比較だとアクションイベントを書くのはフレームワーク使ったほうが楽 アプリケーションの起動時と終了時に処理が書けるようになるとかはまぁあればあったでいいという程度 ただアノテーションつかってそれの名称を文字列で記述ってのは実行時エラーの可能性が増えるから 静的言語としてはどうかなぁというのが多い Web方面のフレームワークもだけどね Springとか最新版ですら1.4とか過去の互換性のために文字列を使うことが多すぎ enumきっちりつかってくれよと思うことは多いかな
670 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:39:19 ] IDEなしということはGUIエディタも使わずにSwingのアプリを作るってこと? 本で紹介するサンプルコードならともかく、本格的なもの作るなら論外だと思えるけど。
671 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:42:07 ] 別に普通に行われてることですが
672 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:42:42 ] そりゃお気の毒
673 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:47:11 ] 本格的なものを作るならフォームエディタなんて使わないと思うが。
674 名前:デフォルトの名無しさん [2007/12/21(金) 00:58:40 ] >>670 逆じゃないの?
675 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:00:16 ] IDEサポートなしと読めばいいじゃない。
676 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:02:26 ] >>673-674 はいはいwノシ
677 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:04:17 ] 最近Javaから離れて久しいが、GroupLayoutはツールなしで使うのは 辛いと聞いたことがあるな。
678 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 07:36:04 ] 670にとって本格的なものってのは テキストフィールド2つにボタンひとつ。
679 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:34:45 ] IDEなしじゃ何もできないって人は、素のHTMLをいじれない人と「使えない」って点で似てる
680 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:03:39 ] ここでは何もできない人の話はしてないね。
681 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:05:03 ] >>678 の煽りの程度の低さに絶望した もっとまともな指摘があるのかと思った。
682 名前:デフォルトの名無しさん [2007/12/21(金) 11:10:10 ] 仕事でレイアウトマネージャって使っています?
683 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:12:54 ] 使うよ
684 名前:デフォルトの名無しさん [2007/12/21(金) 11:45:21 ] やっぱ普通使うよね 絶対座標ばっかだ・・・
685 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:29:53 ] >>679 効率よく出来るかどうかだから。 仕事ならDreamWeaverとか使わないでHTML生成してるアホはいらんね。 ペイントあればフォトショップ等いらないでしょ?とか テキストエディタでPDF作れるでしょ?といってるのとかわらんな。 >>684 せめてNetBeansに付属の伝統のAbsoluteLayout使ってね。 Nullはだめだぞ。
686 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:52:28 ] 親切な香具師だな。 土を手で耕したいという土民なんかほっとけばいいのに。w
687 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:57:29 ] なんかバカがいるな。
688 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:33:04 ] 仕事ではGridBagLayoutが基本かな・・・ NetbeansのGridBagLayoutのエディタが無いと仕事にならんね・・・・ もうちょっと進化してくれても恨まないけど・・・・ 複数のレイアウトマネージャを組み合わせて、 がちっと作り込むのは実はむしろ趣味のほうだったりする。 それでも、GridBag,Groupを手で書くのは調整くらいはできても、まぁ正直無理。
689 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:37:50 ] レイアウトマネージャの組み合わせはわりと普通に使う ただ、GropuLayoutがでてしまったおかげでほとんどそれ1本でいけるようになっちまった
690 名前:デフォルトの名無しさん [2007/12/21(金) 13:47:57 ] GropuLayoutはいいよね。使いたい。 でもそのためにはJavaのバージョンを6にしないとだめなんだよなー まだ1.4だしなー 先は長いな・・・
691 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:50:37 ] GropuLayout
692 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:58:22 ] パッケージが違っていいのなら1.4から使えた希ガス。 5.0からだったかな? 来年登場予定のJavaSE7がでると1.4は保守されなくなるから。 保守契約結んでいるなら5.0以上でも動くようにしていったほうがいいね。
693 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:55:49 ] 1.4はとっくにEOL。jdk7が出てから死ぬのは1.4.2
694 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:39:20 ] GroupLayoutが出たときにEclipseからNetBeansに乗り換えようかなと考えたけど GroupLayoutが、考え方が非常に明快な上に 頭で考えたことを素直に反映できる優秀なレイアウトだったので、やめた
695 名前:デフォルトの名無しさん [2007/12/21(金) 19:40:22 ] なんじゃそりゃ
696 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:45:29 ] 難読化
697 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:50:41 ] IDEなしじゃGUIも扱えない奴ってどうなん? JTableとかテキストフィールドで再現してそう
698 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:56:51 ] それはないだろ
699 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 20:16:43 ] 無知の自覚がない無知は無知のまま放置がベスト
700 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:17:20 ] >>670 GUIエディタは便利だけど、業務アプリでそういうのでサックリ作っちゃうと 後々火を吹くから俺のPjでは使わない。 >>685 イタイな
701 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:46:14 ] GroupLayoutってさ、vGroupとかhGroupとか使ってコンポーネントのレイアウトを決めるわけだけど、 なんか冗長な記述だよな。これは仕方ないのか?
702 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:46:20 ] >>700 GUIに頼らずにどこまでできるかで、決定的な差が出る場面ってあるからね。 このスレではアマチュアが多いのか、あまり良く分かってない人が多いようだけど。
703 名前:デフォルトの名無しさん [2007/12/21(金) 22:05:17 ] >>700 えぢたを使って火を噴くって例えばどんなの?
704 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:21:03 ] ロジックを画面実装で埋め込ませなければ大丈夫じゃないか? ウチではハンドラをあとからインジェクションする仕組みで使ってるが・・・
705 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:24:13 ] >>704 確かにそうだね。 完全にGUI担当者がデザイナと化してくれれば問題はないよね。 あとは、GUI担当者が皆一様の作法を身につけてくれることが重要かな。 そのためにもGUIデザインのためのフレームワークみたいなものは欲しいね。
706 名前:デフォルトの名無しさん [2007/12/21(金) 22:27:10 ] SwingApplicationFramework
707 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:59:58 ] デザイン関係ない
708 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 06:26:42 ] GUIエディタ使って火噴くって、どんだけ低レベルなんだよ
709 名前:デフォルトの名無しさん [2007/12/22(土) 07:39:23 ] >>708 おまえ程低くないと思うよ。
710 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 08:06:29 ] 煽りあいしかできないのか。ちょっとは期待してたんだが。
711 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:13:06 ] >>706 それはどっちかというとGUIアプリの処理手順をフレームワーク化してるよね ちょっとわかりにくいかもだけど、俺がいいたいのは、「GUIデザイン」部分のフレームワーク。 そういうのがあったらいいなぁなんてオモタわけ。 うーん伝わらないか。。。
712 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:45:00 ] >>700 をはじめとして釣りがまざってるので注意
713 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 15:44:41 ] IDEがないと何も出来ません><ってやつが大勢を得る事なんてないから黙ってようね
714 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:01:58 ] 原因不明のバグが出たらとりあえず全部調べるんじゃね
715 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:22:38 ] IDEていうかGUIビルダみたいなRADのこと言ってんだろ湧いて来る厨は。
716 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:26:24 ] せいぜいメインウィンドウのメニューや、そこから辿れる設定ダイアログまでだな。 3ペインアプリとかは手書きじゃないと満足いくものはできないだろ
717 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:32:42 ] 3ペインなら今手書きで作ってるが・・・。
718 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:37:38 ] GUIエディタ使うってのは、業務アプリの画面とかダイアログだろ。
719 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:39:31 ] IDEじゃ何もできません><ってやつは使い物にならんよなぁ。 ツール使えばすぐできることを、なんだかんだいいながら手書きでやるんだけど、無駄に時間かかるし古い機能しか使ってなかったり。
720 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:46:41 ] >>718 なるほどね。業務アプリって画面びっしりコントロールをつけるからなw
721 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:00:30 ] >>719 まともなコードが書けるかどうかが重要であって、 IDEの使用経験の有無は大した問題じゃない気がする IDE使ったことない奴には使い方を教えてやるだけで済むが、 プログラミングのセンスがない奴はいくら教えてもどうにもならん
722 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:10:38 ] もういいからVB使っとけよ。
723 名前:デフォルトの名無しさん [2007/12/22(土) 19:11:51 ] VBにSwingってあるの?
724 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:15:21 ] >>721 でもIDEの慣れの差はやはり大きい NetBeansを長年使ってきた人はさくさくつくれるけど、 Eclipseしか触ってこなかった人は開発効率が悪い 1,2年たつと違うんだろうけどね
725 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:17:27 ] >>724 結局それがいいたかっただけか。 マジレスしなくてよかった。
726 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:19:44 ] >>725 俺今日はじめて書きこんだんけど
727 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:00:38 ] 業務アプリだと、こんな感じで入力項目があるからな。 www.epson.jp/products/oen/products/kyuyo_lite/img/img_kyuuyo02.gif ツール使わずにやるのは非効率極まりない。
728 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:45:36 ] >>727 俺が仕事で作ってる業務アプリは、こんなもんじゃねーぞ・・・ タブで分かれて細かい設定項目が山のようにある。 あんなの手書きしてたら気が狂うわ。
729 名前:デフォルトの名無しさん [2007/12/22(土) 20:48:02 ] 普通に100個ぐらいコンポーネントあるよね
730 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:12:10 ] まだ言い合ってるのか。お前らも飽きないな
731 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:22:46 ] 業務アプリじゃJTableやJTreeはめったに登場しないしな そういう人らは使えばいいんじゃない?
732 名前:デフォルトの名無しさん [2007/12/22(土) 21:24:25 ] JTableは使用しまくりだよ
733 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:32:13 ] >>731 JTable使いまくりだけど・・・ 検索結果を大量に表示したりせんの? まあ、めったにJTreeは使わんけど。
734 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:44:43 ] テーブルがでてこないアプリってあるか? ツリーはあんまりないけど
735 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:53:20 ] 個人開発だけどツリーの方がよく使う。JTableはスプレッドシートだから業務アプリでよく使うんじゃない?
736 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 01:19:09 ] アプリ毎で性格違うんだから、自分の携わったプロジェクトの経験だけあげてもしかたない。 でも、部品の利用のされ方ってのは興味深いな。 アプリで使われてる場面がどれくらいあるのか、 JTableなんかのレンダラとかもどうされてるか気になる。 デフォルトで行ける場面ってどれくらいあるのかとか。 Swingのデフォルト部品って、あと一味足りないみたいなとこあるからなぁ。 というか、特にJTableに感じるんだけど。 (表の真ん中にスクロールバー付けたいなぁ、とか)
737 名前: mailto:sage [2007/12/23(日) 03:03:49 ] Swingでキャッチされない例外が起きてもプログラムは終了しませんよね。 エクリプスとかで走らせてるとoutputに表示されるけど、コマンドプロンプトから走らせるとキャッチされない例外が起きてるのが分かりません。 これを知るにはどうしたらいいのですか? 検出してログをとるなり、メッセージダイアログを表示するなりしたいんです。
738 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 05:31:30 ] sun.awt.exception.handler で検索汁
739 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:06:01 ] throwsして無けりゃなんか表示するとおもう
740 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:13:30 ] >>736 > 表の真ん中にスクロールバー付けたいなぁ それは一味も二味も違うだろ w それができるテーブルコントロールなんて他の言語でも見たこと無いけど。 まあ、俺なら二つのテーブルを並べて、スクロールを同期させるかな。
741 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:42:12 ] >>738 どうもありがとうございます! >>739 jarにしてダブルクリックで起動したりもするので、windowsだと何も表示されないのです。
742 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 16:28:19 ] >>741 java -jar file.jar と「ファイル名を指定して実行(R)..」すれば 例外は全部コンソールに表示される
743 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:40:17 ] というか例外はアプリケーションのどっかの層で拾って ユーザーにGUIで見せて後は処理続けるかどうかは状況次第っていうように組むもんだが。 System.errにテキストコンポーネント突っ込んでやると楽。
744 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:02:41 ] >>743 その、「アプリケーションのどっか」にこないから問題っていってるんじゃねぇの? 738で解決するようだけど。
745 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:58:17 ] 例外の対応は場所によって個別対応するしかないよ。 問題ない例外なのかそうでないのかは単純に判断できないし。 運用時ならテキストファイルにログを書き出しておいてそこをメールで添付させるように促すとか 画面のスナップショットを自動でとってdesktopに自動でbmp作ってそれを添付させるとか まぁいろんな方法があるわな。
746 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:15:13 ] NetBeans6.0ってJTable使うのにほとんどの場合面倒な設定を直書きしなくてよくなったのな。 新機能であまり取り上げられていないけどこれはすごいな。
747 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 14:46:26 ] SwingでPopup形式でJPanelとかJTableとかを表示したいのですが、どう書けばよいでしょうか?
748 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:34:33 ] 複雑なロジックの入ったものならポップアップよりダイアログにするほうがいいけど、ポップアップじゃないとダメ? JDialogを普通に使うほうがいい場合もあると思うけど。 JPopupMenuは想定される素の状態だとメニューバーと同じくアクションボタンを並べるものだけど 例によって自由にカスタマイズできるので継承するといいかも。
749 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:41:53 ] >>748 JFrameの上に出せるWindowなら何でも良いというくらいの意味だったんですが、Dialogでやろうと思います。 JPopupMenuがカスタマイズできるとは知りませんでした。ありがとうございます。
750 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:00:31 ] Swing Application Framework でメニューバーとかツールバーを実装する場合の作法を教えてちょ。
751 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:26:58 ] >>750 NetBeansでデスクトップアプリケーションで作ると メインフレームがメニューとか作られるから参考にするとよろし
752 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:29:32 ] >>751 サンクス。 いつもEclipseばっかり使ってたもんで、NetBeansには疎いんですが、 機能的には遜色ないですかね? Eclipseでいうところの「呼び出し階層を開く」とかそういうのはありますかね?よく使う機能なので。
753 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:25:27 ] 宣言をしてる場所にとんだりする機能? CTRL+クリックでとぶよ キー操作だけだとどこだったかはわすれたけどEclipseと同じキー設定もあったような気がする 乗換えとかじゃなくて参考に出来ればよいと考えるといいかも でも、GUIアプリ開発とWebアプリ開発が目的なら乗り換えるほうが楽だと思う Swing Application Framework対応していて、@Actionとかぜんぶやってくれるよ
754 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 08:37:12 ] >>753 そっちの機能じゃなくて、選択したメソッドがどこから呼び出されているかを一覧する機能。 かなり重宝してる機能なのであったらいいんだけど。
755 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 13:14:07 ] 呼び出し元なら普通に昔からあるけど。
756 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:09:33 ] あるオブジェクトをある場所に移動させていきたい時に、 オブジェクトのxとyを少しづつ変化させているんですけど、どうやるのがベターですかね? オブジェクトはいろんな場所に発生するので、 if (x > 行き先X) {
757 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:10:11 ] すいません 途中でした。 続き if (x > 行き先X) {
758 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:13:28 ] すいません 途中でした。 続き if (x > 行き先X) { x -= 5; } else { x += 5; } if (y > 行き先Y) { y -= 5; } else { y += 5; } こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、 ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?
759 名前:デフォルトの名無しさん [2007/12/27(木) 00:13:37 ] それはSwingの問題なのか??
760 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:15:21 ] 単に行き先Xや行き先Yが5の倍数じゃないんじゃね?
761 名前:758 mailto:sage [2007/12/27(木) 00:18:36 ] >>760 そうですちょうど倍数じゃないときで、移動距離を1にしたくない場合、 どういうロジックが考えられますか?
762 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:34:37 ] >>761 それぐらい、自分で考えろよ・・・・ つかスレ違い。
763 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:40:10 ] Math.abs() 絶対値 差が5に満たない場合 差の分だけ移動 既に目的地に到達してたら チェックはしない。 移動距離の5は定数にしようかな 思った事を書いてみた。 俺は寝る、がんばれ。
764 名前:758 mailto:sage [2007/12/27(木) 00:41:06 ] そうですか 表示上の問題だと思ったんでここで聞いたんですが・・・ xflagとyflagを作って、&で到達チェックするとか考えたんですけど、 スマートじゃないんですよね たとえばどんなのが考えられますかね?
765 名前:758 mailto:sage [2007/12/27(木) 00:43:12 ] >>763 ありがとうございます とても参考になりました
766 名前:デフォルトの名無しさん [2007/12/27(木) 00:45:01 ] >どういうロジックが考えられますか? って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。
767 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:51:43 ] そうですね javaのスレッドで聞いたほうが良かったですね 答えてくれた方ありがとうございました。
768 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:03:08 ] java関係ないし 問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ
769 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:14:11 ] そうですか 初心者スレッドで聞けばよかったですか いえばただの簡単なアルゴリズムの問題なのですが、 ここなら同じようなことをやっている人がいるかなと思ったんで、 ここで聞いたほうが早いかなと思ってしまいました。
770 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:17:26 ] 初心者は初心者らしく初心者スレで聞こうな。 まあ、その前にこの程度のロジックは自分で考えられないと、 なにを作るにしても困ると思うぞ。
771 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:33:38 ] というか普通に高校の物理の問題じゃないかこれ? そこまでのアルゴリズムじゃないけど。
772 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:36:47 ] 物理?! どう見ても小学生の算数レベルだろ。
773 名前:758 mailto:sage [2007/12/27(木) 01:39:19 ] 強引にやろうと思えばできると思うんですが、 スマートにできないんですよね(馬鹿なんで)。 完璧を目指すのはキリがないと思うんですが、 ある程度きれいなコードが知りたいんですよ。 ttp://pc11.2ch.net/test/read.cgi/tech/1197710566/ ここに移動したんで良かったらいいサンプルコードお教えください。
774 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:43:05 ] >>769 >ここで聞いたほうが早いかなと思ってしまいました。 こんなのを自分で考えられないとしたら先は長い気がするが… まぁ地道にがんばれ!
775 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:06:16 ] ベーマガとか初心者向き雑誌がないと大変なのかなーとかおもっちまった こういうの当時の小学生は普通に作ってたもんね
776 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:18:59 ] HSP使ってる連中も普通に作ってるぞ。 というかゲームにSwing使ってるの?
777 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:20:55 ] Java2Dを使うことはあるかもしれないが、Swingはあんまつかわないだろうね ただ、ここAWTと合流したからJava2D等も含むといえば含む 本気でやるならJOGLだろうけど
778 名前:デフォルトの名無しさん [2007/12/27(木) 02:26:13 ] 本当だ!! いつの間にかスレタイにAWTが入ってた!!
779 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:32:45 ] JOGLの正式版が出たときプレイアブルな2DデモとGLCanvasに描画するJMFのレンダラを組んだけど いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。 OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね? それならわざわざ2D描画に3Dtoolkit使う必要ないし。 バグさえ消えれば。
780 名前:デフォルトの名無しさん [2007/12/27(木) 04:23:20 ] javax.swing.timerなんですけど ↓の様にやること多いじゃないですか このタイマーをストップさせることって可能ですか? public void startTimer() { int i = 0; Timer timer = new Timer(20, new ActionListener() { public void actionPerformed(ActionEvent e) { if (i > 100) { return; } i++; }); timer.start(); } いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、 ずっとタイマーは動きっぱなしなんですよね。 timerはiが100を超えたらストップさせたいんですよ。 timer内から自分自身をstopさせることができればいいんですが...
781 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 07:13:18 ] まぁ、とりあえず読みなさい。 java.sun.com/javase/ja/6/docs/ja/api/javax/swing/Timer.html
782 名前:780 mailto:sage [2007/12/27(木) 07:55:23 ] そこも含めていろいろググったんですが... 実際のコーディングを見てください まずメインクラスでクラスAのインスタンスaを10個作る(略 pubilc void run { //メインループ for(int i=0;i<10;i++){ //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay a[i].x++; if(a[i].x >= 10) { a.startTimer(); } @ } } pubilc class A { int x = 0; int size = 10; public void startTimer() { Timer timer = new Timer(20, new ActionListener() { public void actionPerformed(ActionEvent e) { if (size> 20) { return; } size++; }); timer.start(); } } 実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが... @の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、 メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね なにか大きな間違いがあるんでしょうか?
783 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:37:43 ] Timer#stop()を呼べば止まると分かっているのなら、 後は変数のスコープの問題。 ローカル変数timerをクラスAのインスタンス変数にして、 こんなメソッドを作って public void stopTimer(){ timer.stop(); } これをactionPerformed()内の適切な位置で呼べばいい。 ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、 これは単純化したサンプルコードなだけだよね? ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?
784 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:53:05 ] ああうまくいきました GUIスレッドですべき処理というのがいまいちわかんないんですが、 ある条件でaのエフェクトを起こすみたいな感じなんですよ とにかくこれで寝れます どうもありがとうございました
785 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:45:15 ] ボタンのイベント中にタイマーの時間が来たり、その逆も有ったりするって意味じゃね。
786 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 12:26:40 ] >>783 swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思
787 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 13:29:19 ] >>779 Java2Dだとαブレンディング/テストとか足りないものが多いから 2DであってもOpenGL使わざるを得ないのが現実 >>785 が正解 あと注意すべきところはSwingTimerは定期処理にはいいけど、 長時間の流れがある処理には向かないというのもおぼえておくとよろし あくまでも一定時間ごとにアクションイベントを発生させるだけ 詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?
788 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:23:18 ] Javaで動画を再生しようと思っているのですが(Macも含める) ・JMFだとMacで再生出来ない。 ・QuickTime for JavaだとLinuxで再生出来ない。 という認識はあっていますでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:41:37 ] JMFのクロスプラットフォーム版を含めるなら間違ってる。 というかこれくらい人に聞かずとも分かるだろ。
790 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:08:21 ] >>789 ttp://www.animoids.com/jmf_for_mac.html 「JMF_2_1_1_mac.zip」の部分から、 もしかしてMac用がどこかで配布されているのかと勘違いしてしまいました。
791 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 03:27:55 ] 検索するとそこヒットするんだよね。 JMFはjava動かすスペックと動画デコードするスペックを ダブルで要求するからネイティブ版でもいろいろすると重いぞ。 単純なラッパーだからwin版はバグだらけだし。
792 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 08:46:22 ] >>790 こんなの見つけたぞ ttp://www.sra.co.jp/people/nisinaka/Jun4Java/index_ja.html
793 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:55:29 ] 2004年から更新してないとか心配なんだけど、 なんでどこも投資して開発を続けないんだろう
794 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:06:51 ] こんなところでじゅんを見る事になるとは・・・。
795 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:40:20 ] JFileChooserにおいて、ダイアログ表示時のデフォルトの名前を指定するにはどうすればよいでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:55:09 ] setSelectedFile() で指定してから表示
797 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:57:49 ] JFileChooser#setSelectedFile(File)
798 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:14:41 ] ありがとうございました!
799 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:16:16 ] NetBeans入れたら超もっさり動作でがっかりした。 結局今はEclipseにもどりますた。 SwingアプリがSWTアプリみたいに比較的ストレスなく動いてくれる日はマダ来ないのかね。
800 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:25:30 ] もっさりとかストレスなく動くとかってのは主観的なものだから、 >>799 の気分次第で明日にでも来るし、永遠に来ない事もありうる
801 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:57:01 ] >>799 マシンのスペックはいかほどで?
802 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:58:07 ] JavaはマイナーCPUに冷たいだろうし マイナーGPUにも冷たいのかもしれんね
803 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:02:44 ] CやC++なら温かいともいえないんじゃね?
804 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:16:32 ] >>802 Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?
805 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:17:10 ] >>802 SPARCにも冷たいって事に?
806 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:20:05 ] >>804 はスルーするが、>>805 は許せん。
807 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:42:32 ] 今時はお世辞にもメジャーとは言い難い。
808 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 14:16:14 ] いまさらSPARCもねえだろ
809 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:29:10 ] 金にいとめをつけずWinで最速のマシンもってくれば、Javaでもかなり高速動作するんじゃないの。
810 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:33:56 ] 既存のコンポーネントにアクションを付加したい場合どのような手段を取るのが比較的単純に済むでしょうか? 例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。
811 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:44:54 ] >>810 適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。
812 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:07:49 ] JFileChooserののろさにガックリ
813 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:15:44 ] >>368 あたりで話題になってる不具合のせいかも?
814 名前:>>810 mailto:sage [2007/12/31(月) 18:36:09 ] InputMapを知りませんでした。 こんな簡単に実現できるなんてSwingは本当にすごいですね。 ありがとうございました。
815 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:16:39 ] >>799 いつものネガティブキャンペーン乙 6.0だとEclipseのほうが軽いとかってありえんだろ SWTはスレ違いだからそっちでやってくれ
816 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:28:13 ] 今更釣られるアホは寝てろ
817 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 08:17:29 ] たしかに起動に関してはnetbeansめっちゃ遅いよな
818 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:11:59 ] 何もプラグイン入れなければ、Eclipseは軽いね。
819 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:17:51 ] Java EE フルセット入れた Eclipse のもっさりと不安定さはすさまじいものがある。 sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。 必要なものを選択できる人間だけが楽できる。
820 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 03:15:40 ] >>819 インストールしてもプラグイン無効にすればいいんじゃね?
821 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:26:40 ] swingのコピペを調べてたんだが。 CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、 貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか? なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。 exportDoneの説明には、 >データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。 >MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。 どっちやねんw
822 名前:821 mailto:sage [2008/01/02(水) 22:28:33 ] 今のところ、対処方法が分らないので、exportDoneの中では何もせず、 importDoneの中で、貼り付け操作完了後に、 自分で削除操作を実行しようかなと思ってる。
823 名前:821 mailto:sage [2008/01/03(木) 00:34:28 ] なにをバカなことを! 切り取りの標準的な操作は、切り取りと同時に削除だろうが! エクスプローラの動作が特殊なんだ! 新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!
824 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:16:52 ] エクスプローラの動作は、CUTというよりPREPARE-MOVEだからな。
825 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:53:44 ] >>817 終了はめっちゃ速いのだが。
826 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:23:28 ] jdk1.6.0u3 import java.awt.Frame; これってバグなの?
827 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:33:55 ] ___ ━┓ / ―\ ┏┛ /ノ (●)\ ・ . | (●) ⌒)\ . | (__ノ ̄ | \ / \ _ノ /´ `\ | | | | ___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / . /´ ___/ | \ | |
828 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:49:08 ] >>827 分かる人にはこれだけで分かる
829 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:53:32 ] >>827 >>828 バグってたのは俺のほうだったw *.class 削除したらコンパイル通ったよww
830 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:55:29 ] どういう環境だよ・・・
831 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:26:16 ] >>830 pc11.2ch.net/test/read.cgi/tech/1197710566/646 だろう。
832 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:20:26 ] テストするならTestFrameとかにすべし
833 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:55:58 ] >>831 よくみつけてきたな
834 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 03:57:38 ] 相変わらず質問スレは気持ち悪いな
835 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:58:19 ] import java.util.*; import javax.swing.*; public class NewJFrame2 extends javax.swing.JFrame { List<String> dummyList = new ArrayList<String>(); JList jList; public NewJFrame2() { setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE); JScrollPane jScrollPane = new JScrollPane(); jList = new JList(); jScrollPane.setViewportView(jList); getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER); for ( int i=0; i<300; i++ ) { StringBuilder sb = new StringBuilder(); int max = (int)(Math.random() * 100 + 1); //int max = 20; for ( int j=0; j<max; j++ ) sb.append("A"); dummyList.add(sb.toString() + " " + i); } jList.setModel(new AbstractListModel() { public int getSize() { return dummyList.size(); } public Object getElementAt(int index) { return dummyList.get(index); } }); pack(); } public static void main(String args[]) { new NewJFrame2().setVisible(true); } }
836 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:01:42 ] JListのカーソルキーによるスクロールことで謎があるので投げてみる。 >>835 のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。 カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい スクロール。 そしたらまたカーソルキーで下に移動。 すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。 このプログラムで、maxを20とか一定の値にした場合はジャンプしない。 JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。 こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、 目線がそれてしまうので操作感がよくない。 maxを固定したときのように動作してほしい。 なんとかする方法ないかなぁ?
837 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:57:24 ] >>836 解決法でないのだが、「ジャンプ」の条件について。 固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。 固定長で横スクロールが出るようにしたときは「ジャンプ」するし、 固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。 JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。
838 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:05:46 ] フレームの横サイズを水平スクロールバーが出なくなるまで広げてやればジャンプはしないな。 しかしちょっと設定をいじくったぐらいでは解決しそうない。 オーバーライドして一部の機能を殺すとか。
839 名前:デフォルトの名無しさん [2008/01/10(木) 18:27:36 ] ↓このバグだと思うよ。7で直ってるらしい。 bugs.sun.com/view_bug.do?bug_id=6568906 bugs.sun.com/view_bug.do?bug_id=6510999
840 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:57:44 ] バージョンアップを待つのが一番楽そうだね
841 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:27:17 ] よく見つけてくるな。すげーよ。
842 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:33:46 ] 有名なバグだぞ。 JListに512個要素突っ込むとバグるとか放置されてるし。
843 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:03:23 ] >>842 2000個いれてみたけど、なにかバグあんの?
844 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:52:30 ] 512個入れて、一番したのアイテム選択してCTRL+B これで、すべてのアイテムが2個ずつになって1024個になるというステキなバグ
845 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:06:27 ] 1から10000までの数字を全部掛けたときに 末尾に並ぶ0の個数を求めるのをJavaでおながいします
846 名前:デフォルトの名無しさん [2008/01/10(木) 23:10:36 ] それはSwingに関係あるのか?
847 名前:デフォルトの名無しさん [2008/01/10(木) 23:16:39 ] >>844 バグが出なかったんだけど 他になんか条件ないの?
848 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:17:55 ] >>845 class Test{ static void main () { cnt5 = 0; for (int i = 1;i <= 10000; i++) if(i % 5 == 0) cnt5++; System.out.println("count" + cnt5); } }
849 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:22:25 ] ああ、5から5ずつ足してくから10000/5=2000か?
850 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:48:27 ] 10を素因数分解して2*5。んで、2は大量に有るから、5だけ数えれば良い、と。
851 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:51:27 ] どの道>>848 は間違ってるわな
852 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:08 ] >>850 i%25 とか i%125 も数えなきゃだめじゃね?
853 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:36 ] どのみちグズグズっぽいんだが。
854 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:15:22 ] スレチだからまぁ。妖精現実を引っ張ってお茶を濁すべ つ ttp://deztec.jp/x/05/faireal/faireal-26-index.html
855 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:19:54 ] いかにロジカルに解くかが課題じゃなけりゃ BigDecimal で階乗求めて数えた方が早い。 実用に問題ないレベルならシンプル記述に徹するのも美学。
856 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:48:09 ] 80-20の法則な。今丁度勉強中。
857 名前:848 mailto:sage [2008/01/11(金) 01:29:37 ] 直した。 class Test{ static void main () { int cnt5 = 0, n; for (int i = 5;i <= 10000; i += 5) { n = i; while (n % 5 == 0) { cnt5++; n /= 5; } } System.out.println("count" + cnt5); } }
858 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 01:39:18 ] だからどのへんがAWT/Swingに関係あるんだよと
859 名前:デフォルトの名無しさん [2008/01/11(金) 01:57:27 ] 839だけど、このバグは初めて知った。 >>有名なバグだぞ。 にしては、バグ登録日があまり昔ではないが? >>842 >>844 そんなバグはありえない。 まず、JList、JListのsuperクラスにCTRL+Bなんてデフォルトのキーバインドはない。 さらに、ListModelへ項目の追加、削除が可能であることを JListは知りようがないから、JListがListModelに項目を追加することはできない。 (ComboBoxModelのMutableComboBoxみたいなインタフェイスはない。) そもそも、登録もされていないキーバインドが実行されるなら、 JListでなく、JComponentのバグだし。 JListがListModelに項目を追加する唯一の方法は、 ListModelをDefaultListModelへダウンキャストすることだけど、 Swingのソースコードにダウンキャストするような箇所はない。 さて、どうやったら、ソースに書かれていないことを JListが実行するのだろう?
860 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 03:06:00 ] 256発あてるとバキュラを破壊できるんだぜ
861 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 03:13:52 ] Observer や Composite 型の設計だと本体クラスでそう書かれてないからライブラリのバグじゃねーとは 断言できないんだけどな。実行時のリスナやら集約の親子まで調べてやらないと。
862 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 03:22:05 ] ちょっと尻切れトンボだった。 JLabel クラスが無罪であることを得々と説いてもあんまし意味なくね? という話 (実装者乙、でなければ)。
863 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:17:13 ] JEditorPane とか、せめて W3C の DOM で xhtml + CSS になってくれりゃ XSL で処理できるからデータを利用しやすいんじゃがのう。
864 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:20:01 ] 自分でやれば良いだろそれくらい。
865 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:50:17 ] Lobo Browserに投資する企業はいないのかねぇ
866 名前:デフォルトの名無しさん [2008/01/17(木) 19:01:08 ] >>865 ブラウザを使うのがPCだけしかない考えてるなら、考え直した方がいい。
867 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:04:52 ] Swing の HTML 機能も携帯のフルブラウザにすら追い越されて久しいわけだが。
868 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:21:49 ] >>867 一緒にしてるしwwwアホか?
869 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:27:01 ] シンクライアントに必要なだけだし携帯とかいらんな
870 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:30:49 ] >>868 むしろあの HTMLEditorKit 系をおまいがどこで活用できてるのか知りたい。
871 名前:デフォルトの名無しさん [2008/01/17(木) 19:31:39 ] ブラウザをJavaでやる必要があるのか?
872 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:42:23 ] 普通にあるぞ。例えばヘルプ機能とかの生産性があがる。 JDICだとXSS対策が必要だろうけど、こっちは不要。
873 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:56:22 ] うん、ヘルプは俺も使う。だがどうしてもその Sandbox から出してやれんw
874 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:06:38 ] バカばっかだな
875 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:09:36 ] Sandboxなフルブラウザは作れると思うが。 Rhinoにその手のインタフェースを与えなきゃいいだけだ。
876 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:22:15 ] フルブラウザという言葉自体胡散臭い
877 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:25:26 ] 頭の悪い煽りがやたら入るスレだなw
878 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:30:43 ] たまに客がどこで見つけたか知らないが 「Swing でもブラウザみたいなこと できるんでしょ?」 と言い出す事もあるが、あれを見せるとさすがに黙る。
879 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:34:02 ] つ Flying Saucer
880 名前: mailto:sage [2008/01/17(木) 20:39:33 ] Swing の HTMLEditorKitは文字通りEditorのためでブラウザみたいに表示onlyではないからね。 でも日本語とかIMEのこととか考えてないよな、あのHTMLEditorKitは。表示だけならいいけど。
881 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:46:38 ] 4.01準拠マダー?
882 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:57:24 ] JavaがC++より優れている事を示す 絶好の材料だと思うんだけどなあ<ブラウザ
883 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:15:59 ] 標準ライブラリの有無で言語の優劣を決めるのか?
884 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:23:11 ] 実際問題、ライブラリとIDEが言語仕様の優劣を余裕で帳消しにするからね。 D言語1.0がまったく普及しない原因がそれと言われてるし。
885 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:29:11 ] C++の失敗もそうだね 標準ライブラリがしっかりしてれば Javaは生まれなかったかも知れない
886 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:30:48 ] Perl嫌いだけどこれだけ流行ってしまったのは CPANのおかげと言っても過言ではない死ね
887 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:36:14 ] >>883 の中では SmallTalk が世界を救うようです。
888 名前:デフォルトの名無しさん [2008/01/18(金) 03:53:19 ] java c++ d を同列に扱う馬鹿がおる
889 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:12:32 ] >>888 人を否定するなら代替の主張を出してからにしたら?
890 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:17:41 ] なにいってんだ?
891 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:29:51 ] 同列だろ。言語仕様は実装とは違うレイヤーにある。
892 名前:デフォルトの名無しさん [2008/01/18(金) 19:37:12 ] いいかげんスレ違いだろ 次の話題どうぞ ↓↓↓
893 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:38:57 ] JMFって商用可能ですか?
894 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:55:06 ] スレ違い
895 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:11:16 ] どうかんがえてもここだろ。自治厨とか懐かしすぎ。
896 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:52:29 ] JMFがここだって
897 名前:デフォルトの名無しさん [2008/01/18(金) 21:04:19 ] じゃあJOGLはここでいい?
898 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:36:21 ] じゃあ、SDL for javaもここだな。 >>865 の脳内ではメディア再生ライブラリがGUIツールキットなんだよ。
899 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:51:43 ] 普通の考えじゃん。頭おかしいんじゃね?
900 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:57:52 ] JOGLはこっちじゃない? pc11.2ch.net/test/read.cgi/tech/1033703640/
901 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:25:19 ] JOGLとJava3Dはまったくの別物だぞ・・・ むしろGLCanvasとかGLJPanelとかAWTとSwingの外部コンポーネントと考えれるからこっちだろと シンプルに描画だけのOpenGLの実装だからユーザーに全ての描画を任せるタイプで フルスタックで重いJava3Dとはかなり違う
902 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:44:31 ] JOGLはOpenGLスレで良いらしいぞ
903 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:32:48 ] OpenGL自体の知識はOpenGLスレが本筋 でもGLCanvasの挙動とかどうかんがえてもむこうの範疇ではないと思うんだが
904 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:49:50 ] JMFの話題についてけないゴミなんだろうな
905 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:38:13 ] スレチ
906 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:52:45 ] Java標準拡張のメディア再生フレームワークのどこがスレ違いなんだかw
907 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:57:23 ] スレタイ嫁アホ
908 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:58:04 ] 誰も答えられる奴がいないんだろう。フヌケばかりだしw
909 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:00:19 ] 自己紹介乙
910 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:06:22 ] >>909 フヌケw
911 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:09:12 ] 頭の弱い自治厨が沸いてるみたいだけど、前からJMFの話題は出てるから。
912 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:17:48 ] スレタイの読めない盲目がわいてるからスルーしろ
913 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:20:32 ] JMF涙目www
914 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:24:53 ] >>893 ライセンス読むと良いよ。 たしかRuntimeと同じ特例が適用されてたと思う。
915 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 17:18:55 ] そういえばJava Media APIのスレってないんだな。 JMFとJOGLは需要ありそうというか隔離しないと他で暴れるバカが出てきそうだけど。 JAIは実際に使ってるの見たことないな。 Java Media APIスレ立てたら誘導用くらいには機能するかね?
916 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:02:09 ] >>915 JMFはあってもよさそうなもんだなぁ… JOGLは…どの程度使われてるんだろ…?
917 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:18:28 ] ちなみにJava Media APIsはこんだけある ・Java Media Framework (JMF) ・Java Sound API ・Java 3D ・Java Binding for OpenGL(JOGL) ・Java Advanced Imaging(JAI) ・Java Image I/O ・Java 2D ・Java Speech API ・Java Telephony API(JTAPI) JMFとJava Advanced Imaging、Java Image I/O 、Java 2DはAWT/Swingコンポーネント関係ないなら分けた方が良いと思うんだけどな。
918 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:23:03 ] 使われてる割合JOGL>JMF 知名度JMF>JOGL 日本語リソースの多さJMF>JOGL じゃない? javaでゲームつくるとなるとJOGLは欠かせないけど、なきゃないでJava2Dで十分って感じ。 ゲ制のJavaでゲームつくるスレが落ちたからJOGL聞く場所がないんだよ。
919 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:31:48 ] >>918 javaでゲームつくるとなるとJOGLがほしい、ってのはわかるんだけど… そもそもPC向けゲームをつくるのにjavaを選ぶ理由がないよなぁとか思うわけですよ? その手のゲームって結構あるものなの?
920 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:32:44 ] コードに手を入れず入出力フォーマット増やしたいときに使うよ > JAI まぁバグも多いけど。
921 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:32:58 ] JOGLはOpenGLスレでもいいんじゃない ところでJMFとJOGLって比較するもんなのか…?
922 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:42:12 ] 別に比較したいわけじゃなくてスレたてるかどーすっかって話だろ。 需要的に考えると全部まとめて Java Media API スレとかでもいい気がするな。
923 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:48:58 ] ぐだぐだ言ってないでスレ立てればいいだろ
924 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:57:23 ] JOGLは2.0はサポートするけど1.3で拡張からコアに入ったAPIは混同するという理由で1.3で追加されたAPIはサポートされてないから迂闊にOpenGLスレいけないんだよ。 あとjavaでゲームつくるってのはかなり居る。 日本でもググレば出てくるし、海外はJOGL,JInput,JOALはセットでゲームつくるときに使う。 ただ、リソースは海外の方が多い。 だから日本語のリソースがないから英語読めないと何も出来ネ!ってなる。 俺も需要的にJava Media APIsで統一してスレ立てても良いと思うんだが・・・誘導・隔離用にw IIOとかJava soundはアプリケーションプログラマが直接いじる所って少ないしさ。
925 名前:デフォルトの名無しさん [2008/01/25(金) 20:08:13 ] JOGLって将来的に標準に入るって可能性ありますかね?
926 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:22:48 ] クライアント向けのJava標準拡張は全てが滅茶苦茶将来性がある。 根拠はJava 7に登場のJava Kernel、JAM、JavaFXあたり。これらは要チェック。 Java Sound本、最近でたね。つい衝動買いしたけど、まだ読んでなかったり。
927 名前:デフォルトの名無しさん [2008/01/25(金) 20:29:26 ] 工学社ってだけでなんか敬遠してたんだけど実際どうなんだろう・・・
928 名前:デフォルトの名無しさん [2008/01/25(金) 23:12:41 ] JOGLに将来性ある事は否定しないけど、まだ3年ぐらい先の話だろう。 つまり人柱。日本語のページも全然ないし。 あまり勧めたくはないけど、もしゲームで、かつwindowsなら、C#じゃないか?
929 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:26:44 ] あんな重いの話にならん。 1コア丸々使ってる箱○なら別だが
930 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:12:41 ] 【JMF】Java Media APIs【JOGL】 ttp://pc11.2ch.net/test/read.cgi/tech/1201346803/l50 スレ立てられなかったのでスレ立て依頼出してたのが立った。 今後はこちらでどうぞ。 スレタイには一番使われそうなJMFとJOGLを追加しといた。 ほかテンプレあれば書いて。 Java Media APIsはDesktop Javaの一部なんでJava SE以外のエディションやAndroidは関連スレから除外しといた。 ネイティブ依存なSWTも同様。
931 名前:デフォルトの名無しさん [2008/02/06(水) 00:48:21 ] で、いい加減そろそろ、JAIのメモリリークは直ったのか?
932 名前:デフォルトの名無しさん [2008/02/07(木) 21:21:18 ] 複数の Component の描画の順序(重なり具合)を任意に変えるには、 親コンテナ.remove(comp) / 親コンテナ.add(comp, index) もしくは getComponentZOrder(comp) / setComponentZOrder(comp, index) の組み合わせしか方法はありませんか? Component のほうが、自立的に一歩前進、とか、一歩後退、みたいな仕掛け、ありませんかね…? たとえば、大、小の円がそれぞれ component だったとして、 それを、drag で、重ねたときに、◎になるようにするしたいんですが。 (2つに限らず、3つ、4つでもいけるように) getComponents してループさせて入れ替え、しかないでしょうか。
933 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:49:59 ] JLayerdPaneを増やして載っけるとか。
934 名前:932 [2008/02/07(木) 22:13:16 ] >>933 おぉ、JLayeredPane、忘れてましたw duke 君のデモソースはチェックしたのに、なにしてんだ>自分 そういう Pane がある、ということは裏を返すと Container/Component には、あまり気の利いた順序変更の手段はないんですかね。 ひきつづき、つっこみ・ご意見お待ちしております。
935 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:38:09 ] 実際のところ重なりの順序を動的に変えたいことってあるの? それが必要なパターンが想像できないんだが。
936 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:52:22 ] CardLayoutでもいいんじゃね?
937 名前:932 [2008/02/07(木) 23:03:27 ] レス、どうもです。 >>935 ビジネスアプリケーションじゃなくて、えと・・・ ゲームでキャラが重なる、みたいなヤツを思い浮かべてください。 >>936 CardLayoutは、ノーチェックでした。 リファレンスをチェックしてきますノシ
938 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:06:39 ] >>937 ゲームのようなやつならSwingつかわずにJava2D等で描画したほうがいいよ 速度的にもメリットが薄い
939 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:41:33 ] SwingよりJava2DじゃなくてSwingよりAWTでJava2Dじゃね? Java2DよりJOGLの方がry
940 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:43:46 ] Java2D って Swing じゃないのか?
941 名前:932 [2008/02/07(木) 23:46:41 ] >>936 CardLayout、あとは自分で動作とか確認しますが、リファレンス曰く、 「コンテナ内の各コンポーネントをカードとして扱います。一度に 1 枚のカードだけを表示し…」 う、1枚では困るぅ〜。 >>938 Java2D にそんなに詳しくないのですが、 ゲームのキャラでなく、(バーチャル環境の)アバターみたいのヤツを 前後(奥行き)に操作する、といったような例だとどうでしょうか。 イメージのまま取り回すのは管理が大変かなぁ、とビビッているのですが…。 設計次第ですかねぇ。 速度の要望はそんなにシビアでないです。
942 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:11:39 ] >>940 違うAWT、Swing,Java2Dは同じ層にあるUser InterFace Toolkits。 AWTはAWT,SwingはSwing,Java2DはJava MediaのAPI。 そもそもAWTは重量WindowToolkitでSwingはJava2Dを使った軽量WindowToolkitだろ。 Java2Dは2D描画ライブラリ。 javadoc嫁。
943 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:23:42 ] >>939 JOGLいいけど、テクスチャを単純に表示するのが目的ならそこまで必要ないと思う プラットフォームによってパッケージが違うのもやっかいだし、Line引くときたぶんはまる Java2Dはαブレンディングがまともに実装されていないのがきついかな おかげでゲームで使うときはJOGL必須だ >>941 その動かすキャラクターの動く範囲は? Window内をじゆうじざいにということでないのなら、 その描画はJava2Dによる重ね合わせのほうが難易度は低いと思う
944 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:38:19 ] αブレンドなぁ。結局Java2Dだとハードウェアアクセラレータ効かないんだよな。 JOGL1.1ならcom.sun.opengl.util.j2dが追加されたから BufferStrategyと同じ感覚で使えるんだけどcom.sunパッケージは嫌い?
945 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:07:08 ] レイヤードペインの話題が見えたので便乗 1.JFrameのgetLayeredPane()に直接JLabelとか貼り付けて遊んでた。 2.この状態で、ポップアップメニュー出したら、表示されなかった。 3.マウスをずるずる動かして、見えないメニューの上を通過させるとメニューが表示された。 ※メニューが「パッ」と全部表示されるんじゃなくて、 マウスが乗っかったメニューアイテムが1つずつ表示される。 4.JLabelを乗せるレイヤーを変えても問題は解決しなかった。 そもそも1.の使い方がナンセンスなのか。 レイヤードペインとポップアップは気をつける何かがあるのか。 誰か知ってる人がいたら教えてください。
946 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 04:07:33 ] 混ぜるな危険じゃない?
947 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:21:43 ] ポップアップってどっかのレイヤーの上に描画されるんだっけ? GlassPane?
948 名前:デフォルトの名無しさん [2008/02/08(金) 09:58:10 ] おはようございます。932,941でございます。 とりあえず、LayeredPane を導入してみますデス。 もう一個、教えてくんです・・・。 contains(int x, int y) メソッドって、 リスナーにしなくても mouseEntered なとき(Component 上に マウスカーソルがあると)、勝手に呼ばれるようですが、 それでよいです??? Documented な仕様ですか? override して使わないほうがよさそうですよね。override しちゃだめ? だったら final にして〜〜。
949 名前:デフォルトの名無しさん [2008/02/08(金) 18:15:56 ] >>947 描画される順番の問題。 GlassPaneは自分で描画しない限り何もない。 GlassPaneでイベント握り潰せば結果的にGUIをブロックできる。
950 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:21:08 ] >>947 layeredPane の POPUP_LAYER じゃない?
951 名前:945 mailto:sage [2008/02/09(土) 00:25:29 ] 追記 JLabelにアニメーションGIFを表示させた場合、 絵が書き換わるたびに、マウスずらしで表示させた ポップアップメニューが消されたw ・JLabelに文字を表示させた場合 ・普通にコンテンツペインにJLabelを置いた場合 この状態での実験も。。。今度やってみる
952 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:06:14 ] どうしてもバグければ JPopupMenu#setLightWeightPopupEnabled を false にしてみる手も
953 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:47:18 ] バグ-ける
954 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:59:19 ] その活用形はおかしい バグ-かろう バグ-かった バグ-くない バグ-い バグ-ければ
955 名前:948 [2008/02/09(土) 13:01:03 ] 昨日、速攻、JLayeredPane 組み入れました。 気がついたのは、 より上位の Layer のコンポーネントが、より下位のコンポーネントを 完全に覆い隠すと(感覚的にいうと lower.getBounds() < upper.getBounds()) のとき下位のコンポーネントが描画されない(消える) つーことがありました。 理屈としては、そのほうが、高速化が図れるのかもしれないけど、 上位の矩形のイメージが透明化されてるときちょっと困るんだけどなぁ。
956 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:38:19 ] >>955 上位レイヤのコンポーネントでsetOpaque(false)でどう?
957 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:41:41 ] setOpaque(false) してる?
958 名前:948 [2008/02/09(土) 15:38:21 ] >>956 ,957 レス、どうもです。 setOpaque() してると思うんですが、今日は、職場でないので 確認できないっす。火曜日にチェックします! みなさんは休出っすか?
959 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:41:04 ] >>958 は 3 回くらい死んでも良いと思う
960 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:30:57 ] つーか自宅にPCないんか
961 名前:945 mailto:sage [2008/02/10(日) 03:09:13 ] おいおい、会社で趣味プログラミングかよw それはともかく、>>952 さんありがとうございます。 ポップアップでまくりですよ。 そして、実験の報告。 >・JLabelに文字を表示させた場合 結果:× レイヤードペインに文字ばっかりのJLabelを乗せてみた。 文字の後ろにメニューがでた。文字の隙間からメニューが見えてるw マウス動かすと文字の前に来るあたりの挙動は一緒。 >・普通にコンテンツペインにJLabelを置いた場合 結果:○ 当たり前か。
962 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:28:37 ] 現在TransferHandlerを用いてJTreeにコピーアンドペーストの機能を付加しています。 同様のアクションをJPopupMenuにも加えたいのですが、どのようにすればよいでしょうか? CTRL C, CTRL Vではうまくいくのですが、JPopupMenuからアクションを行うと、ソースが変わってしまいだめなようなのです。 TransferHandlerのcopyのアクションのコードを見てみると、アクションソースがJComponentのインスタンスでなければ弾いているのが原因のようです。 そこで // a:TransferHandlerのアクション private Action createAnotherSourceAction(final Action a,final Object src){ return new AbstractAction(){ public void actionPerformed(ActionEvent e) { e.setSource(src); a.actionPerformed(e); } }; } こんな感じで新たに生成してやるとうまくいくのですが、わざわざ作り直すのは抵抗があって・・・ 何か打開策がありましたらご教授ください。
963 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:16:03 ] >>962 アクションが操作対象となるJTreeのインスタンスを持てばいいだけじゃないのか?
964 名前:962 mailto:sage [2008/02/15(金) 09:33:09 ] 聞いておきながら遅くなってしまってすみません。 JComponentのインスタンスでなければ弾いているので、そもそもアクションまで起こっていないんです。 CopyActionくらい自分で実装して、>>963 さんのおっしゃるように対応したコンポーネントのインスタンスを持たせていた方がいいかもしれないですね。 ありがとうございました。
965 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:27:45 ] 例えばリストにTransferHandlerを設定するとき、COPYなのかMOVEなのかCUTなのか判定させたいときどのようにすればよいのでしょうか? それを実装するコンポーネントでどのようなアクションを取ったかを調べられれば問題ないのですが、それがMouse系のリスナーではスマートに調べられなくて困っています。 教えください。
966 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:36:04 ] 勘違いしていました。 何十回か氏んできます。
967 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:38:09 ] GUIのデザイナはなかなか決定的なものがないようなのですが、 メジャーどころだとNetbeans付属のものやVisual Editorがありますよね。 ほかにもJformDesignerや、jvilderなどがあるようです。 みなさん、GUI開発にはどんなツールをお使いですか?
968 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:48:00 ] テキストエディタで手書きしてまつ・・・
969 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:51:42 ] jiglooがなかなかおすすめ。 慣れないうちは思うようにデザインできないけど慣れたらかなり使いやすいかも
970 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:54:49 ] 私はVisual Editor。でも、ちょっとコンポーネント置いただけですぐ 1000行ぐらいいっちゃうのがちょっとアレですが。 jiglooは冗長にならないように書けます?
971 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:28:06 ] Visual EditorってGroupLayoutサポートしてましたっけ? あれ使えばそんなに冗長にはならないですよ 個人的に一つ一つのコンポーネントのプロパティ設定で勝手にブロックで囲んでくれてるのが見やすくて好きです。
972 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:50:00 ] 残念、Visual EditorにはGroupLayoutのサポートはまだないみたいです。 他のデザイナを試してみることにしましょう。Jiglooか、もうNetbeansかな。 EclipseのプラグインでWindowBuilderというのもこれに対応しているようですが、 日本で使ってる人があまりいなさそう・・・
973 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:39:26 ] ソースコード生成するんじゃなくてXAML式に 書けるGUIデザイナが欲しすぎる。
974 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:14:14 ] リファクタリングとかソースとの動機が取れなくなりそうだ
975 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:54:12 ] 一般ブラウザ並みに JTextPane 強化して HTML ベースで GUI 組めるようにしたほうが 何かと合理的。
976 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:02:31 ] それはねーよ 細かいイベント等制御するためのSwingなんじゃねーか HTMLベースでいいのならWEBアプリにするだろ
977 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:11:07 ] onmouseover などからイベントリスナ呼びゃいい話でしょ。必要なら追加すりゃいいし。 Web 開発の資産やスキル転用できるし、単純にブラウザコンポーネントとしても転用も可能。 まじめに考えてるわけではないのでカスタムコンポーネントの追加方法なんか考慮する 必要はあるが、そんな頭から否定されるほど悪い話ではないと思うが。
978 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:27:11 ] そんなの全く考えたことなかったから結構新鮮だわw まぁ今の環境で満足だし、そこまで外部化してしまわなくてもいい気もするなぁー
979 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:43:06 ] GUIコンポーネントは宣言的に置くようにしてロジックは別にしたいってことでしょ JavaFXがやろうとしてるんじゃないかな ただXMLベースじゃないみたいだけど
980 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:49:05 ] そこまでWeb開発の資産やスキルを転用したいのなら、 スタンドアロンアプリでTomcat動して、UIはブラウザ、ってすればいいんじゃね?
981 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:12 ] アプレットや Web Start とかで使えねんじゃ。
982 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:14:29 ] XULを再発明したいのか
983 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:37:25 ] JSP や JDBC を再発明と言う? 別に XUL の Java 実装でも良いけど。
984 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:46:16 ] あ、いやこの話はそろそろやめる。
985 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:19:48 ] >>977 scriptのIDEサポートとかJavaのほかに別言語を覚えないといけないとか そもそもブラウザによって違いがあるというのに・・・ ボタンクリック等のイベント程度でいいのなら別にかまわんとおもうけど
986 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:36:38 ] XMLは長ったらしすぎるので すっきりとロジックと融合したGUIが宣言ベースでかけるというのが 売りなのでしょう。 ただ、いまいち方向性が分からないというのは・・・。
987 名前:デフォルトの名無しさん [2008/02/24(日) 21:57:42 ] SWTスレとマルチで失礼します。 クライアント側のJavaで、RTF文章を何らかの形で表示(編集できなくてもOKです)させたいのですが、 JEditorPaneはあまりにも古すぎてJREに同梱されているLICENSE_ja.rtfすらマトモに読めない、という 情けないことになっています。他に何らかの代替/回避方法はないのでしょうか?
988 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 11:01:37 ] RTFをパースして使えるコンポーネントに流し込むところを自作する
989 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 11:06:57 ] うふふw鬼ww
990 名前:987 mailto:sage [2008/02/26(火) 10:29:05 ] >>988 >>989 いや、マジメな話、(ライブラリ等を使うかは別にして)今のところ、ググって引っかかるのはそのアプローチしかないみたい。 もう少し簡単な方法がないかと思って質問してみたのですがね(笑
991 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:43:02 ] SWT なら OLE でハメ込めるんじゃなかったっけ?
992 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:48:04 ] いまどきそれだけのためにSWT使うってのもなぁ
993 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 01:57:15 ] 非常に抽象的な質問で申し訳ないのですが、スクロール可能なコンポーネントを作る際、Scrollableを実装するだけではだめなのでしょうか? 単純に実装してJScrollPaneにのっけてやるだけでは、実装したメソッドのうち、 getScrollableTracksViewportHeight() getScrollableTracksViewportWidth() の二つは呼び出されるのですが、肝心の getPreferredScrollableViewportSize() が呼び出されないのです。 どうしてでしょうか?
994 名前:デフォルトの名無しさん [2008/02/28(木) 03:04:21 ] みんなBoxLayoutはつかってないのか? ほとんどこれ1本でやってるんだけど。
995 名前:デフォルトの名無しさん [2008/02/28(木) 03:21:59 ] > 993 getPreferredSize()はどう実装している?
996 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 08:45:59 ] >>995 すみません。寝ぼけてたようで、 getScrollableTracksViewportHeight() getScrollableTracksViewportWidth() の判定で必ずtrueがかえってしまうようになってしまってました。 というわけでスレ汚してしまったのでお詫びに次スレ建ててきました・・・が、タイトル間違えてしまいました。 本当にすみません。板まで汚してしまったみたいです。 pc11.2ch.net/test/read.cgi/tech/1204155623/
997 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:48:07 ] 1レス埋めて去る。
998 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:54:53 ] ところで次スレは上の見すったやつ使うの? せっかくスレタイ変えたのに
999 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:24:19 ] っと、気づいたらもう999かよ
1000 名前:デフォルトの名無しさん [2008/03/01(土) 19:25:58 ] 上野でいいじゃん 細かいこと気にするなよ
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。