Java標準低速GUI 6 AW ..
[2ch|▼Menu]
490:481
07/12/01 15:52:06
>>485
>>487
とりあえず全部登録しておくのが楽なようですね。
場合によってsetVisible、setEnabledで使い分けようと思います。

ご意見ありがとうございました。

491:デフォルトの名無しさん
07/12/01 18:02:09
>>480
そうなんだ〜。まぁ、よく使うなら自分でAdapter作ればいいしね〜。

492:デフォルトの名無しさん
07/12/02 18:44:49
LinuxのSwing上でトラックポイントのセンターボタンでスクロールしたときに
コンテキストメニューが開いちゃうんだけど、心当たりがある人いる?
JavaはSunの1.6.0_03

493:デフォルトの名無しさん
07/12/02 19:12:28
これかな?
URLリンク(sdc.sun.co.jp)
>・Windows では、マウスボタン 2 マウス UP でメニューがポップアップする 
>・Motif では、マウスボタン 3 マウス DOWN でメニューがポップアップする

494:デフォルトの名無しさん
07/12/02 21:54:41
以下の挙動で、困っています。

JNLPでデスクトップにショートカットアイコンを作成し、
そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、
「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。

ここで「詳細」ボタンを押すと、次のような情報が表示される。
※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。
InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

で、問題なのは、ここで、ドラッグアンドドロップしたファイルが、
何の断りもなく、いきなり 削除 されてしまう、ということなのです。

この不具合は、あらゆる全てのJNLPアプリで、全てのOSで再現しました。

こうした挙動を防ぐような、何らかの対策をすることは可能でしょうか?


495:デフォルトの名無しさん
07/12/03 00:20:49
>>494
MacOSX Leopardでやろうとしましたが再現しませんでした。
何よりファイルにDnDができない。

URLリンク(bugreport.sun.com)
で報告してください。
報告時は具体的な再現方法と再現環境を書いておくのが吉です。
ありとあらゆる、というのはちょっと曖昧すぎます。

496:デフォルトの名無しさん
07/12/03 01:24:26
ごめん、たしかに、MacOSでは試していない。
あと、64bit用のJREやSolarisでも試せていない。

こちらで試したのは、Windows Vista, Windows XP SP2, UbuntuLinux(7.04)の上で、
1.4.2_16,1.6.0_03,1.6.0_10-ea(いずれも32bit用)。

ここまでやって、いずれの環境でも再現した。
いま、Java7でも試そうとしているところ。

Javaキャッシュビューアで、インストール済みのJNLPアプリについて
「選択されたメニューのショートカットを作成」または、
右クリックメニューで「ショートカットの作成」で、
ショートカットがデスクトップにすることができる。

そうして作られたショートカットに、
ユーザが何かのファイルを放り込むと、
そのファイルが勝手に削除されてしまう、ということ。

ユーザがデスクトップ上のメモ帳のショートカットにファイルをDnDして
開こうとして、まちがって隣のJNLPアプリのショートカットにドロップしたところ、
そのファイルが勝手に削除されてしまう、という感じ。

> 何よりファイルにDnDができない。

たぶん、そういう挙動が正常なのだと思う。

497:デフォルトの名無しさん
07/12/04 11:36:46
質問です。JButtonがアイコンであるGIFファイルの縦横サイズより結構大きくなってしまうのですが、コンパクトにする方法は無いでしょうか?

498:デフォルトの名無しさん
07/12/04 12:06:32
>>497
JButtonのjavadocを隅から隅まで読んで
しかるのちにボーダーのマージンを設定したらいいよ

499:デフォルトの名無しさん
07/12/05 14:21:41
>>498
497です。できました。ありがとうございます。

500:デフォルトの名無しさん
07/12/06 02:03:22

JFrameでgetContentPane()をしなくてもよくなったは、いつからですか?
自動的に転送されるようになったってのを読んだのですが。
 

501:デフォルトの名無しさん
07/12/06 02:06:17
5.0

502:デフォルトの名無しさん
07/12/06 02:10:45
即レスthx

503:デフォルトの名無しさん
07/12/07 22:41:46
シューティングを作りたいと思ってます
メイン画面とスコア画面があって、
それぞれJPanelを継承したクラスを作ってMainPanel,SubPanelと作ろうと思ってるんですが、
この方法は値の受け渡しが面倒くさくなったり、重くなったりしますか?
普通はひとつのゲームは大体1パネルですかね?

504:デフォルトの名無しさん
07/12/07 22:43:16
普通はゲームにSwingなんて使わなくないか?
ましてシューティングで・・・

505:デフォルトの名無しさん
07/12/07 22:45:12
Javaの勉強もかねて作ってます
最近はSwingもだいぶ早くなったと聞いたんですが...

506:デフォルトの名無しさん
07/12/07 22:51:48
ゲームなら、Frameに直接描けばいいと思う。
BufferStrategyを使うのも良し。

507:デフォルトの名無しさん
07/12/07 22:52:23
400x300で24fpsくらいで試してみるといいよ。
Swingはシングルスレッドだから、パッシブ連打でも問題ないはず

508:デフォルトの名無しさん
07/12/07 23:00:08
パッシブ連打とは?

509:503
07/12/07 23:01:39
Frameに直接書くってことはpaintComponentメソッド内に
メイン画面用とスコア画面用の描画処理が混在してるってことですよね?
そうすると片方の画面の背景だけ変更するなどの処理とかがややこしくはならないですか?
パネルで分けるとコードがすっきりする気がするんですが

510:デフォルトの名無しさん
07/12/07 23:05:41
パッシブ・レンダリング=描画イベントによる受動的なレンダリング(repaint())
アクティブ・レンダリング=自発的に描画を実行するレンダリング(Toolkit.sync(), BufferedStrategy)

511:デフォルトの名無しさん
07/12/08 00:30:40
>>503
つまりWindowシステム普及前のゲームプログラミングが難しかったと思ってる?
んなことないよ

練習がてらというのならSwingつかってもいいけどメリットはあんまないとおもうよ
JLabelのアイコン指定でキャラ表示とかSwingというフレームワークで
描画や再移動とかそういうことでしょ?

途中でもっといいものを、もっと本格的なものを、となって挫折しそう

あとpaintComponentではゲームのレンダリングの処理はいれないことね

512:デフォルトの名無しさん
07/12/08 00:31:36
さらに付け加えるとパッシブレンダリングはいわゆるトリプルバッファを使わないといけないから注意ね
ダブルバッファじゃダメ

513:503
07/12/08 00:51:35
全体的な流れとしては、レンダリング(描画?)は各オブジェクト(敵、弾)のクラスのdrawメソッド(メソッド名は自由?)などで行い、
paintComponentはそれを呼び出すだけ。で、必要に応じてrepaint()を行うとpaintComponentが再描画されるという感じでしょうか?

514:デフォルトの名無しさん
07/12/08 00:59:58
paintのタイミングは自前のrepaintだけじゃないからそれはやっちゃだめ
ウインドウの重なり具合とかOSが画面をいきなりリフレッシュしたりとかあるから

各オブジェクトにdrawのインターフェースを実装させるという考え方はあってる

レンダリングは自前でAというバッファへしてるとすると、
その間描画はBというバッファからイベントでフロントへ描画させる
Aのレンダリングが終わったらAとBをいれかえて、次のフレームの描画はBへ行う

バックバッファへのレンダリングとフロントへのレンダリングが重なる場合もあるという考え方ね

515:503
07/12/08 01:09:30
ダブルバッファがいまいち理解できてないのでもうちょっと勉強してみます。
答えてくださった方どうもありがとうございました

516:デフォルトの名無しさん
07/12/08 01:16:16
本当はJavaでゲーム作成というスレがあったんだけど最近おちちゃったんだよな
ゲーム製作板とかいろいろと斜め読みしてみるといいかも

517:デフォルトの名無しさん
07/12/08 03:09:19
Javaでゲームってのはなかなか前衛的でおもしろいと思うんだが、
如何せんパフォーマンスが悪いのが致命的なんだよな。
いくら努力しても、一定以上FPSが上がらんとなるとどうしても敬遠したくなる。

518:デフォルトの名無しさん
07/12/08 06:27:05
勉強として作るプログラムも題材の選び方はかなり重要だよ。
努力するほど深まって発展していく題材と、
底の浅いところですぐに打ち止めになるのがある。

519:デフォルトの名無しさん
07/12/08 08:27:04
勉強の段階なら、何を作っても勉強になる。

520:デフォルトの名無しさん
07/12/08 08:28:32
Javaでエロゲぐらいなら作れそうじゃね?

521:デフォルトの名無しさん
07/12/08 09:47:04
アクションだろうがパズルだろうがなんでもできるんじゃないの。
ブロック崩しやテトリスくらいなら楽勝。
ゲーム専用機であるようなハデなアクションゲームを作りたいならお門違い。

522:デフォルトの名無しさん
07/12/08 09:49:46
あと速く動かしたいなら画面小さくすればいいんだよ。256 * 192とか。w
昔のアーケードゲームの解像度はせいぜいその程度だったしさ。

523:デフォルトの名無しさん
07/12/08 11:36:49
シューティングやアクションはともかくとして
リアルタイムシミュレーションとか向いてると思うけどな>java
スレッド周りとか楽々作れるし

524:デフォルトの名無しさん
07/12/08 12:55:52
ゲ制作板で話せ

525:デフォルトの名無しさん
07/12/08 14:32:05
>>517
まじていってるの?

526:デフォルトの名無しさん
07/12/08 14:33:14
リアルタイムのアクションものも余裕で出来るよ
IntelCore2/2GHzでJavaで動かすとCネイティブだと1.6GHzくらいの速度になるけど
それが問題になることはまずあるまい

527:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/10 01:23:46
↑の様な構成で作りたいんですけど、うまくいきません。
ようするにSubPanelのインスタンスからMainPanelのインスタンスへ
アクセスするにはどうすればよいのでしょうか?
MainFrameでMainPanelのインスタンスをpublicでstaticにしたりいろいろやったのですが、
うまくいかないのでどなたか教えてください。

529:デフォルトの名無しさん
07/12/10 01:47:12
>>528
SubPanelにボタンのaddActionListenerを委譲して
MainFrameからやりたいことを教えてあげればいいんじゃないの?

530:528
07/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:デフォルトの名無しさん
07/12/10 10:02:09
MainPanelはPaintComponentをオーバーライドしないといけない気がする…

532:531
07/12/10 10:06:52
やっぱ要らないか

533:デフォルトの名無しさん
07/12/10 10:45:47
>>530
設計方針とか変更不可のクラス等の制約条件とかが分からないけど
手っ取り早くやるならMainPanelとSubPanelの親子関係がそのままなのを前提に
b.addActionListener((MainPanel)getParent());

534:デフォルトの名無しさん
07/12/10 11:19:28
俺なら
SubPanel#addColorChangeActionListener(listener){b.addActionListener(listener);}
を作る方を選ぶかな。

535:デフォルトの名無しさん
07/12/10 12:32:25
これってSwingの話ですらなくて言語の基本の話だろ?
なんでstaticがでてきたりするんだ?
まずは言語の勉強からやりなおしたほうがいいんじゃないかい?

536:デフォルトの名無しさん
07/12/10 12:51:30
たぶんMainFrameやMainPanelのインスタンスをSubPanelで参照する方法が分からなくて、
b.addActionListener(frame.mp);}}ってやってもコンパイルできなくて、
b.addActionListener(MainFrame.mp);みたいにできるようにクラス変数にしちゃったんだと推測。
プログラムの設計と実装の仕方を良い参考書や良いソースを見ながら勉強した方がいいと思う。

537:530
07/12/11 00:36:38
>>536
正にその通りです
>>533
getParent()なんてのがあったんですね 

どうもありがとうございました

538:デフォルトの名無しさん
07/12/11 13:58:13
>>530のコードを見る限り
getParent()は使わないほうがいいな
独立性が失われるのにListenner使ったりとかありえん

まず言語の基本の勉強からしたほうがいい
近道しようとしても無駄だと思う
ここ本当に基本中の基本だから

539:503
07/12/11 17:52:44
>>538
すいませんご指摘ありがとうございます
SubPanelのコンストラクタでgetParent()しても、その時点ではMainPanelの子にはなってないということですよね
>独立性が失われるのにListenner使ったりとかありえん
これはimplements ActionListenerのことですかね アダプタクラスというのを使ったほうがいいということでしょうか

一応基礎はやったつもりでいたんですが、今回GUI使うことでぜんぜん理解できていないことに気づいてそれだけでもよかったです
もう来ません ありがとうございました。

540:デフォルトの名無しさん
07/12/11 18:53:25
もうきませんって捨て台詞・・・はもうきこえてないか

インスタンスの参照を渡せばいいだけでしょ?
それができないってことはJavaの勉強1週間程度しかしてないということかな?

541:530
07/12/12 00:36:46
ながながとスレ違いすいません
勉強はJavaの入門書を一通り読んだんですが(スレッドくらいまで。デザインパターンは全く)、ちゃんとは理解できてなかったようです。
参照を渡すといいましても>>530のコードだと難しくないですか?
コンストラクタでいろいろやってるのも悪いんですかね
本当にこれで最後にしますんで、
MainPanelとSubPanelが連動していて(Subのボタンを押すとMainの内容を変更したりする)場合、
どんなコードになりますか?親切な方おねがいします

542:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/12 02:44:04
そもそも設計の段階で間違えてるんじゃないか?

544:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/12 13:06:00
>>544
アクションイベントだけならそうだろうけど
GUIってそれ以外のプロパティの変更とかふつうはやるものだし

546:デフォルトの名無しさん
07/12/12 13:35:41
main panelをある構造に従って作るようにして、sub panelでその構造を変化させたらいいんじゃないの?

547:デフォルトの名無しさん
07/12/12 13:44:05
そこまでの設計が出来ていればこんな質問はせんだろうと。
ActionListennerをMainPanelで実装している時点で複数のイベント対応がおわっとるわけで。

548:デフォルトの名無しさん
07/12/12 15:31:50
>312でも書かれてるけど、Synthって流行らないのかなー。
スキンがXMLファイルと画像で済むならたくさん配布されてそうなのに、
どうして一個も見つからないんだろう・・・

549:デフォルトの名無しさん
07/12/12 15:37:42
まず最初の一個を>>548が作って布教

550:デフォルトの名無しさん
07/12/12 15:41:15
つ Nimbus

551:デフォルトの名無しさん
07/12/12 15:48:27
よーし作っちゃうぞー

Synth Studioにちょっと期待。
URLリンク(weblogs.java.net)

>550
Nimbusもいいと思うんだけど、とにかく数が出ないことにはなんとも多様性が少なすぎます。

552:デフォルトの名無しさん
07/12/12 16:38:29
スキンを色々着せ替えたい人ってどんなアプリ作ってんの?
着せ替えできることを売りにしてるアプリで俺が最初に思い出すのがCDプレイヤー。

553:デフォルトの名無しさん
07/12/12 17:03:49
NetBeansで気分転換にLAFかえるとかは5.0のころ流行ったなぁ

参考:
URLリンク(d.hatena.ne.jp)

Substanceは6.0では動かないくさいけど

554:デフォルトの名無しさん
07/12/12 17:10:21
ウィンドウをキャプチャし、JPGで保存するようなプログラムを作成中です。
手法、使用APIなどご教授お願いします。

555:デフォルトの名無しさん
07/12/12 17:18:24
>>554
なぜここで聞く?質問スレ行った方がいいんじゃないか?

556:デフォルトの名無しさん
07/12/12 17:37:28
キャプチャに関してはRobotがAWTパッケージに入ってるからかな?
って感じでもないか。
知ってたらBufferedImageを保存するには?って聞くだろうし、それはスレ違いか。

557:デフォルトの名無しさん
07/12/12 17:44:29
>>553
そういう感じのLAFがカッコイイと思う人もいるんだろうけど・・・
ブログのスキンとは求められてるものが違うんでね?

558:デフォルトの名無しさん
07/12/12 18:39:42
Nimbusってjava LAFの置き換えなんだろうか?
それとも共存するんだろうか?
NimbusってSynthで全部自前でやってるせいか少し重いからイマイチなんだが。

559:デフォルトの名無しさん
07/12/12 19:16:20
重いかな?
というか、エンジン部分が決まっているので
むしろこれからのチューニングに期待できるんだけど。

Nimbusが出てきてからSubstanceへの興味はだいぶ薄れちゃったな・・・
V2Cは、6u10に入ってるNimbusで綺麗に動くので最近はNimbusで見てる。
素のMetalやOceanよりしっくりきてる。
普通に見れて、プラットフォーム共通の見栄えってのは重要でしょう。
Metalは、お世辞にも見栄えがいいとはいえなかったから・・・・(派手だけど)

560:デフォルトの名無しさん
07/12/12 19:25:21
見た目のこと言い出すと宗教戦争になりそう。

561:デフォルトの名無しさん
07/12/12 19:26:24
SynthってXMLと画像をjarに詰めて配布するの?
jarをインデックス付き無圧縮で配布すれば多少早いかもね。
もしくはSynthをコンパイル可能にするとか。

562:デフォルトの名無しさん
07/12/12 19:26:41
ぶっちゃけSystemLAFがデフォになってくれるのが一番いいかも
NetBeansもそれでシェアを一気に伸ばしたし

563:デフォルトの名無しさん
07/12/12 20:07:13
見た目なんて飾りです。えらい人にはそれが分からんのです。

ていうかクロスプラットフォームの実現性としてはjavaLAFがデフォの方が良いけど、
ユーザビリティが落ちるので天秤ってところか・・・。

564:デフォルトの名無しさん
07/12/12 20:40:36
LAFを変更したらレイアウトが微妙に崩れてデザインが台無しとかけっこうある。
部品をカスタマイズしてたりするとなおさら。
で、いくつもLAFがインストールされていても、事実上使えないものが出てくる。
そんなLaFしか実現できないのなら、LAF一つで統一してほしいところだな。

565:デフォルトの名無しさん
07/12/12 21:25:54
>>564
推奨サイズを使って設定してくれるならずれることはほとんどないはずだけど?
今まで大量にSwingアプリ作ったがLAFかえて問題が出る場合ってのはほとんどないよ。
むしろWinネイティブより楽。

566:デフォルトの名無しさん
07/12/12 21:35:29
>>565
推奨サイズって何?
カスタムコンポーネントなしのアプリしか作ったことないんじゃないの?

567:デフォルトの名無しさん
07/12/12 21:45:28
本気で言ってんのかコイツ

568:デフォルトの名無しさん
07/12/12 22:04:47
Swing使いが推奨サイズを知らないとは思えんが・・・・

569:デフォルトの名無しさん
07/12/12 22:18:38
きっと日本語ではなく preferredSize といえば通じるよっ。


570:デフォルトの名無しさん
07/12/12 22:47:58
生憎日本の会社で働いたことがないので。日本語のAPI docもたまに
見るけど気付かなかったよ。どこかに便利なサイズの表でもあるのかと思った。

571:デフォルトの名無しさん
07/12/12 23:23:41
今日もJava釣り君元気だな

572:デフォルトの名無しさん
07/12/13 00:25:17
>>570
つまり、preferredSizeを和訳できなかったわけだな。中国の会社の人?

573:デフォルトの名無しさん
07/12/13 02:30:49
インドだろう常考

574:564
07/12/13 02:58:31
>>564
もちろんそうしてるよ。JDK1.0のころからある普通のレイアウトマネージャを組み合わせてレイアウトしてる。
そりゃテキストエディタのようにツールバーとメニュー、オプション選択とOK/NOボタンしかないとか、
その程度なら問題ないだろうけど、複雑になるとたいがい問題でると思うけどな。
ただしまったく使えなくなるほど、ひどいことになるのは少ない。
レイアウトデザインには急所があってさ、絶対はずせないところってのがいくつかある。
そこがずれると一気にしまりがなくなってださくなるとこが。
そういうとこが狂うと、やめてよっていいたくなる。

LAFに応じて位置とサイズを調整するようなコードを書くとか、無難なデザインを適用する事はできると思う。
でもそういうのってなんか違うと思うんだよね。

575:デフォルトの名無しさん
07/12/13 03:27:33
ボケたか自演か?

576:564
07/12/13 03:52:46
>>575
>>565-573までは俺じゃないから。
罵りあって遊びたいならマ板にでも逝けよ。

577:デフォルトの名無しさん
07/12/13 08:46:37
推奨サイズを知らないバカと自分のレスにレス付けてるボケがいるスレはここですか?

578:デフォルトの名無しさん
07/12/13 11:04:12
レイアウトが崩れる例ってのを、出してみてよ
簡単なのでいいから

579:デフォルトの名無しさん
07/12/13 11:45:14
複雑になると問題が出るっていってるのに簡単なのでいいからっていうツッコミ、気の毒だな。

580:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/13 12:04:33
>>578
もう一つ例をあげると、Motifのメニュー操作法と、Windows,Metalの操作法は異なる。
これは使ってみればすぐに分かると思うけど。

それから、JSliderBarの操作法ね。Metalと残りのWindows,Motifでは振る舞いが異なる。
これもわかりにくいかもしれないけど使ってみれば分かると思う。

LaFは見かけ上の外観を変更するだけのはずなのに、操作体系にまで干渉したらまずいと思うんだけど。

582:デフォルトの名無しさん
07/12/13 12:57:22
ルック&フィールのフィールって何か分かってるか?

583:デフォルトの名無しさん
07/12/13 13:05:42
>>581
LaFはLook & Feelの略だよ。外見を変更するだけじゃない。

584:デフォルトの名無しさん
07/12/13 13:14:14
>>580
すまん、やってみたが、レイアウトは崩れないっぽいんだが…
なんか俺間違ってるのかも試練から
どこがどう崩れたのか教えて欲しい

585:デフォルトの名無しさん
07/12/13 13:31:58
>>582
単純思考のくせに傲慢そうなやつだな。w
feelは手触りだから、操作体系が異なるのは仕様のうちだとでもいいたいのか?w

しかしそれでは良くない場合のほうが多いんだよな。
アプリに無意味な混乱を与えるくらいならLAFをユーザに選択させないほうが俺は良いと思うけどね。
ボタンが数個しかついてないようなアプリならまーすきにすればだけど。

586:デフォルトの名無しさん
07/12/13 13:36:10
>>584
画像はいらないから、コードをコピペしてみて。
環境の違いもあるだろうし。

587:デフォルトの名無しさん
07/12/13 13:37:38
コードつーかソースね

588:デフォルトの名無しさん
07/12/13 13:48:37
Look and Feelのfeelには気分や雰囲気の意味もあって、必ずしも操作法を指すともいえないけどな。

589:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/13 14:56:01
あ、ちなみにこっちの環境はWin2KのJDK1.6.0_03

593:デフォルトの名無しさん
07/12/13 15:04:42
いつまで続くのこれ?

594:デフォルトの名無しさん
07/12/13 16:03:04
b.setBorder(null);
でどうよ?

595:デフォルトの名無しさん
07/12/13 16:32:49
>>594
その手があったかw

596:デフォルトの名無しさん
07/12/13 17:18:47
ボタンに限ったことじゃないだろうに・・・

597:デフォルトの名無しさん
07/12/13 19:13:03
たまたまMotif用の回避策があっただけのことでしょ。w
LAF別に癖があって共通の振る舞いをしないのはかわらない。

598:デフォルトの名無しさん
07/12/13 19:50:38
どう見てもコンポーネントの表示を制御し切れてないヘタレというだけで
レイアウト云々は関係ないと思うのだが

599:デフォルトの名無しさん
07/12/13 20:05:15
JButtonとかはサイズが指定してあると、Metal→Motifに変えたときにほんと崩れるよね。

普通にテキスト指定してJButton作っただけじゃ、OKとキャンセルボタンのサイズが違いすぎるから
キャンセルボタンにあわせるようにしてるんだけど、Motifはおかしいよ・・・

600:デフォルトの名無しさん
07/12/13 20:58:53
まだ続くの?

601:デフォルトの名無しさん
07/12/13 21:08:14
Swingの話題だから別にいつまでも続いてもいいだろ

602:デフォルトの名無しさん
07/12/13 21:25:37
そういやMotifだとマウスホイールも効かないよな。
そんな中途半端なのいれなきゃいいのに。

603:デフォルトの名無しさん
07/12/13 21:28:15
SystemLAFならLinuxとかでもWin並みのFeelが得られるの?
Win, Mac以外はLAFは何でもいいと思ってるのでお勧め教えて。

604:デフォルトの名無しさん
07/12/13 21:35:08
>>598で結論出たじゃん。

605:デフォルトの名無しさん
07/12/13 21:36:12
Linux では gtk使えるなら gtkじゃね?

606:デフォルトの名無しさん
07/12/13 21:39:41
>>598
ことLAFに関しては>>597でFAだと思うが。
切り替えて不都合がでるLAFがある時点で不完全なシステムだな。

607:デフォルトの名無しさん
07/12/13 21:40:05
正直Javaアプリ作ってもWinでしか使わないんだよね。
APIのバランスがいいし、今更.NET覚えるのはしんどいって理由で。
*nixやmacの挙動を調べるにはどうしたらいいんだろう。
LinuxならcoLinuxとか?

608:デフォルトの名無しさん
07/12/13 21:45:53
それ用にマシン用意するか、もってる人にテストを頼む以外なんかある?

609:デフォルトの名無しさん
07/12/13 21:46:51
Macごときに会社が金出すわけ無いじゃん。jk。

610:デフォルトの名無しさん
07/12/13 21:50:45
アップルに俺様の会社がMacでも動くアプリを作ってやったから、テスト用にMacを献上したまえといってみるとか。

611:デフォルトの名無しさん
07/12/13 21:54:18
Macごときに金ださんという会社は、JavaだろうがMacで動かす必要はないってことじゃね?

612:デフォルトの名無しさん
07/12/13 22:01:26
Macごときで動作しないなんてレポートが来られても困るし、
JavaクライアントでもMacは未対応ってことにしとけばいいか

613:デフォルトの名無しさん
07/12/13 22:22:42
そこはアップルの実装の問題だが、どうにも屑すぎる。
特に文字列処理。これはjavaに限った事じゃないけど。

614:デフォルトの名無しさん
07/12/13 22:34:26
たとえば文字列処理でどんなことが起きるの?

615:デフォルトの名無しさん
07/12/13 22:45:06
ワイド文字いい加減とか

616:デフォルトの名無しさん
07/12/13 23:38:24
仕事なら必要な範囲のアーキテクチャだけ動作保証するだけだし
趣味ならそもそも動作保証なんてしないから問題ないだろ…

617:デフォルトの名無しさん
07/12/14 02:37:15
趣味で作っても、友達がMac持ってることあるから問題あるだろ。

618:デフォルトの名無しさん
07/12/14 02:41:59
aho

619:デフォルトの名無しさん
07/12/14 15:36:51
例えば、undo,redo(WindowsだとCtrl+z,Ctrl+y)とかのデフォルトの
キーバインディングがOS毎に違ったりする場合、
LAF変更毎にjavax.swing.InputMapとかも変更すべきでしょうか?
javax.swing.plaf配下のUI委譲を見ても、そんなコードは見あたりませんが。


620:デフォルトの名無しさん
07/12/14 18:21:15
>>614
Unicode正規化まわりじゃないの?

621:デフォルトの名無しさん
07/12/15 12:54:25
LAF変えるたびに、それ固有の修正を施すなんてかなり馬鹿らしい話
これからいくらでも増えてくるだろうし

622:デフォルトの名無しさん
07/12/15 16:35:41
MacのredoのショートカットキーがWindowsと異なる
(Ctrl+Shift+zだったかな)ことを最近知って、
さらに「Motifだとマウスホイールも効かないよな」っていうのを見て、
ふと疑問に思った。

マルチプラットフォーム対応のソフト作ってる場合って、
やっぱり、そんなことも考慮する必要があるんだろうな。
LAF毎に固有の修正を施すなんてかなり馬鹿らしい話っていうのは同感なんですが。

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


623:デフォルトの名無しさん
07/12/15 16:44:56
キー設定とかは外部設定に追い出しておいてプラットフォームごとに
切り替わるようにするくらいは必須だろうねぇ。

うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。
(個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac)


624:デフォルトの名無しさん
07/12/15 17:27:21
>キー設定とかは外部設定に追い出しておいてプラットフォームごとに
>切り替わるようにするくらいは必須だろうねぇ。
やっぱり、サーバーサイドより面倒ですね。

>うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。
怒られるほどのことではない。
というか、個人的には、そのほうが便利になってる気さえしますが。
余計な文字列がデザイン的にウザイってことなんですかね。
よくそういうどーでもいいディテールに拘る人いますし。
特に官公庁に。

>(個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac)
へー。Macさわったことないから、全然知らなかった。
エミュレータでも買って、ちょっと弄ってみようかな。


625:デフォルトの名無しさん
07/12/15 17:45:03
そういえばMacのマウスはシングルボタンが基本だよね。
Winでは右クリでポップアップメニューが出る操作がよくあるけど、あれMacではどうなるの?

626:デフォルトの名無しさん
07/12/15 17:57:07
ふるーい mac だと ctrl + クリックでやってた記憶が……

ポップアップメニュー出す操作か、だけなら、
java.awt.event.MouseEvent#isPopupTrigger() みればわかるはず。

627:デフォルトの名無しさん
07/12/15 17:58:32
何も考えたくなかったらMetalで固定ってことかな。

628:デフォルトの名無しさん
07/12/15 18:14:39
macはボタン長押しでコンテキストメニューじゃなかった?
今のmacはマウスホイール付いてた気がする。
小さな玉が・・・。

629:デフォルトの名無しさん
07/12/15 18:22:21
シングルボタンの場合は、Ctrl押しながらクリック。
2ボタンマウスを繋いだ場合は普通に右クリックできる。

Mighty Mouseも見た目はシングルだが、右よりの部分を押すと副ボタンと
して扱える(デフォルトだと両方主ボタンになってるのはAppleの意地か?)



630:デフォルトの名無しさん
07/12/15 18:24:04
ノート型のMacだと、指を2本パッドに置いてクリックすると右クリック相当
だな。指2本でパッド上を滑らせるとスクロールとかも面白い。


631:デフォルトの名無しさん
07/12/15 18:28:50
MacのOS9時代まで使ってたけど、ctrl + クリックだったよ〜
まぁどうでもいいか。

632:デフォルトの名無しさん
07/12/15 18:41:56
理想的にはLaF毎に諸々切り替えるべきなんだけど…
結局どこまでサポート範囲にするかってだけだとな気がする.
ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ

633:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/15 18:52:14
>ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ
同感。Motifは単にSunの意地。
クライアントLinuxも趣味にはいいけど、
個人的にはサポートしたくない。

でも、数ヶ月前に21:00台のNHKのニュースで出てた、
どこか忘れたけど、ITじゃない大手企業の普通の職場で
SunのワークステーションでXが写ってた。
マジで使ってんの?って思ったけど。

635:デフォルトの名無しさん
07/12/15 19:19:05
ソラリスのMotifはそれなりにさまになってる感じもあるけど
Winでみるとダサイ・・・ってまったく同じMotifというわけでもなくMotif風というべきか。

636:デフォルトの名無しさん
07/12/15 19:25:33
MacでCtrl+クリックで右クリということは、WinでCtrl+左クリに機能を割り当てていると、
Macでは困ったことになる・・・のだろうな・・・

637:デフォルトの名無しさん
07/12/15 19:28:20
実機が手元にないから、あれだけど。
SolarisのMotifは、Sunのハードの色のグレーと紫と一緒になって、
初めて調和する感じがする。
だから、他のハードで単体でMotifのLAFだけを見るとかっこ悪さしか感じない。


638:デフォルトの名無しさん
07/12/15 19:43:52
LAFというか視覚デザイン系は深入りすると底なし沼だからなぁ・・・・
3Dソフトも今はなき?シリコングラフィックのあの癖のある筐体でみるのと、
DOS/Vの筐体でみるのではやっぱ違ってみえるよねw

639:デフォルトの名無しさん
07/12/15 19:44:18
いろいろ考えるとInputMapはFactoryクラスとかで一括管理すべきなんだろうなと思ってきた。

640:デフォルトの名無しさん
07/12/15 19:44:55
そういえばJTableはCtrl+左クリで複数選択機能があったはずだけど、Macだとどうなるんだっけ。

641:デフォルトの名無しさん
07/12/15 19:49:16
>シリコングラフィックのあの癖のある筐体でみるのと、
>DOS/Vの筐体でみるのではやっぱ違ってみえるよねw
それはありますねー。
Sunのマシンにsunの4つつながったロゴがないだけでも、
Motifは別物に見えそうだし。

データセンターでMacのハードやUIがあったりしたら、
違和感ありそうだし。。。

642:デフォルトの名無しさん
07/12/15 23:39:08
>>619
質問 ↓のコードでもmacとwindowsで兼用できなかったの??
KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());

643:デフォルトの名無しさん
07/12/16 02:36:30
619です。
>質問 ↓のコードでもmacとwindowsで兼用できなかったの??
>KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
Toolkit#getMenuShortcutKeyMask()メソッドは初めて知りました。
ありがとうございます。

興味本位で聞いただけです。
実際にやってみていない。というかmac環境がないので。試せません。。

URLリンク(tinyurl.com)のあたりをざっとみると、
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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/16 03:36:27
Mac OS XではCommand+Cとかになるからね。

getMenuShortcutKeyMaskの戻り値はEvent.META_MASKになる。

CommandキーはWindowsだとWindowsキー。

646:デフォルトの名無しさん
07/12/16 17:50:37
619です。
macの結果を教えてくださりありがとうございます。

macのショートカットキー一覧を見ると
「コマンド + C →「編集」メニュー コピー」と記載されているので、
つまり、getMenuShortcutKeyMask()を使用できそうということでしょうか。

ところで、macにはWindowsでいう「やり直し(Ctrl+Y)」
(元に戻すのを戻す?)は、ないのでしょうか。
私の言っている「Ctrl+Shift+Z」ショートカットキーは誤りですか?
たびたびすみませんが、時間がありましたら教えてください。

647:デフォルトの名無しさん
07/12/16 18:11:03
HIG(Human Interface Guidelines)
URLリンク(developer.apple.com)

Keyboard Shortcuts
URLリンク(developer.apple.com)

テキストエディット(メモ帳・ワードパッド)
GarageBand(作曲)
Pages(ワープロ)
Keynote(プレゼン)
Numbers(スプレッドシート)
BathyScaphe(2ちゃんねるブラウザ)
で見たら、「やり直す」はCommand+Shift+Zだった。


648:デフォルトの名無しさん
07/12/16 18:17:26
ちょっと古いけど
URLリンク(developer.apple.com)

やり直しはShift+Command+Zだね。

649:デフォルトの名無しさん
07/12/16 18:36:01
うお、Leopardでは「取り消す(cmd+Z)」と「やり直す(shift+cmd+z)」に変わったんだね。

プレビューではファイルメニューに、最後に保存した状態に戻す「元に戻す」があったりする。

650:デフォルトの名無しさん
07/12/16 20:20:32
>647さん
>648さん
>649さん
ありがとうございます。
URLリンク(developer.apple.com)
の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:デフォルトの名無しさん
07/12/16 21:00:00
Swing標準のキーバインドってなかったっけ?
あったらそれで良いと思う。

あれはLAFで決まるんだっけ?

652:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/16 21:48:11
>>633

654:_
07/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:デフォルトの名無しさん
07/12/19 15:17:46
いくつか突っ込みどころがあるから最初からやり直した方が早い。

656:デフォルトの名無しさん
07/12/20 03:59:56
最初からやり直すというか、紙の上で状態遷移を考えた方がいい。
自分の言ってる矛盾に気付けるから。

657:デフォルトの名無しさん
07/12/20 08:13:43
>Combo1でaかbが選択された場合はCombo2が有効で
>Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが

下のCombo2はCombo1の間違えだよね?

658:デフォルトの名無しさん
07/12/20 08:46:01
Combo1の間違えでした.

Combo1の状態に応じてCombo2の有効,無効が変化する
物をつくりたいんですが教えていただけないでしょうか

659:デフォルトの名無しさん
07/12/20 09:23:02
combo2.setVisible(false);
これでは駄目なの?

660:_
07/12/20 11:53:34
上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると
Combo2は無効にならずに有効のままになってしまいます.
同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます.
最初の選択では上手くいくんですが選択を変更すると変化してくれないんです。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4901日前に更新/252 KB
担当:undef