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
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 ] ワイド文字いい加減とか