[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/21 19:07 / Filesize : 252 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java標準低速GUI 6 AWT/Swing



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

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毎に固有の修正を施すなんてかなり馬鹿らしい話っていうのは同感なんですが。

ふだん当たり前にできてることができないって結構ストレスになるから。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef