1 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:10:53 ] 過去ログ、関連スレッド、よくある質問とその回答、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド100【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1175317038 /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 次スレは>>980 あたりで。
116 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:46:42 ] >>112 >B,C,Dは異なる実装ですが、同じ機能を提供します。 ここまで分かってるなら理解してるような気がするけど、 機能が同じでも実装が違えば返ってくる値が違うってのは理解してる?
117 名前:112 mailto:sage [2007/05/03(木) 14:54:11 ] >>116 さん ご返答有難うございます。 >機能が同じでも実装が違えば返ってくる値が違う Aから継承したメソッドをA型参照から呼び出しても、 それがBのインスタンスであるかCのインスタンスであるかによって、 実行される処理が変わるということでしょうか?
118 名前:112 mailto:sage [2007/05/03(木) 14:55:19 ] 115について、自分が考えたのは、 1.AにstaticなA型ポインタをメンバとして加える。 2.Aにstaticなインスタンス生成用のメソッドを追加する。 3.2のメソッドは1のポインタにB,C,D何れかのインスタンスを生成して参照(代入)させ、 1のポインタを返す。 4.B,C,Dのクラスまたはコンストラクタのスコープをパッケージで閉じてしまう。 5.↑によって、B,C,DのインスタンスはAのメソッドを通してA型としてしか取得できないようにする。 これってなんかおかしいでしょうか・・・。
119 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:59:44 ] >>115 排他的でシングルトンなファクトリクラスを作れば良いかな。 シングルトンの管理は色々出来そうだけど A,B,C,D,ファクトリを同じパッケージにしてB,C,Dのコンストラクタはパッケージープライベートにする。 んで、ファクトリはAのサブクラスのインスタンスを一度でも生成したか どうかのフラグを持つ。B,C,Dのインスタンスを返すメソッド(ファクトリメソッド)内でフラグ立てる。 フラグが立ってれば以降はインスタンスを返さないか、 または生成済みインスタンスを返す。 大雑把だけどかんな感じか。
120 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:45:19 ] >>117 そう。これサンプル。 ttp://www.vipper.org/vip499966.java 抽象クラスと継承については理解してるよ。 やろうとしてる事は それとはあんまり関係ないきがする。 デザインパターンかも。
121 名前:112 mailto:sage [2007/05/03(木) 16:11:50 ] >>119 さん,120さん 有難うございます。 デザインパターンについて少し調べてみることにします。
122 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:13:16 ] APIのメソッドのソースをEclipse上での見方を教えてください。 「ソースが見つかりませんでした。」 となるのですが・・。 どこからかDLすれば見れるようになるとかいうことでしょうか? 宜しくお願いします。
123 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:15:27 ] APIソースはJDKに入ってる。 仮想マシンの設定あたりにソースzipを指定する箇所があるよ。
124 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:18:46 ] 構造体の2次元配列ってどうやって定義すればよいの? こんな感じで使いたいのです。 myName[0][0].sei = "性" myName[0][0].mei = "名" ちなみにこんなふうにしてみましたがダメでした。 class StructName { String sei; String mei; } StructName myName[][] = new StructName[5][5]; myName[0][0].sei = "性" ← 代入しようとするとエラーになる。
125 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:26:37 ] まずそれは構造体じゃない で、最初に初期化しなきゃだめ for〜〜 for〜〜 myName[i][j] = new StructName(); あとお前はコンストラクタでググるべきだ
126 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:23:52 ] コンストラクタでググる前にjavaの教科書を頭から読み直すべきだな
127 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:44:55 ] オブジェクトが存在するかどうか調べるにはどうすればいいでしょうか。
128 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 05:27:42 ] もすこし詳しく
129 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:19:42 ] int[] vec = new int[2]; このような1次元配列vecを2次元配列としてメソッドに渡したいのですが、どうしたらいいのでしょうか? 今は下のように書いているのですが、キャスト専用の変数を作るのとコードが冗長になってしまうのとが気になってしまって もっとシンプルに書く方法ってありませんかね? int[][] temp = new int[1][2]; temp[0] = vec; method(temp);
130 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:36:03 ] >>129 new int[][]{ vec };
131 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 16:10:19 ] >>130 即レスありがとうございます 期待した通りに動かすことができました
132 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:24:54 ] java入門したばかりで言語より考える方について質問ですが割合を出す方法を式で書くとどうなのかお尋ねします。 例えば、製品数a(1000個)の内、不良品b(200個)あると良品数c(80%)ですよね。 *a,bは決まった数字じゃありません
133 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:29:08 ] それ算数の問題だからjavaとか関係ない
134 名前:デフォルトの名無しさん [2007/05/04(金) 20:03:54 ] C系では、メソッドやクラスの左かぎ括弧は改行するけどJavaではしないよね。慣例なの? 【C系】 public class SampClass { } 【Java】 public class SampClass{ }
135 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 20:23:20 ] Javaの場合、Sunが自身のコードで使っているとされるコーディング規約が文書化 されていて、その中に java.sun.com/docs/codeconv/html/CodeConventions.doc5.html#381 というものがある。実際JDKのライブラリソースはこれに則っている感じ。 もちろん外部の人間が従う義務はない。ただ、Javaの黎明期には参考になるコード はJDKのライブラリソースくらいだったわけで、この頃から一般人もJDKのソース の書き方を真似て、カーリーブレースの前で改行しないスタイルが定着したのだろ うと想像する。
136 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 20:24:35 ] >>134 Sun のコーディング規約だと後者に近いってだけじゃね? C言語でも改行しない人は一杯いるしね。 プログラミング言語C++ とかでも switch { やら struct hoge_tag { では改行してないし。 GNUコーディング規約だと if とか while とかでは改行+インデントして括弧つけたりするし。
137 名前:デフォルトの名無しさん [2007/05/04(金) 21:08:13 ] これ、コピペ多用する言語なのか? なんだかその悪寒がしてきたんだが
138 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 21:10:05 ] >>137 なんで?
139 名前:デフォルトの名無しさん [2007/05/04(金) 22:31:55 ] javaでExcelを作れるが、そのExcelにVBAコードを挿入できる??
140 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 22:59:48 ] >>136 各言語でそういう規約があるのね。 eclipseの自動生成や、書籍を見てて改行してなかったから、慣例だと思ってたよ。 まぁ俺はクラス・メソッドは改行、制御文は改行なし、でいつもやってるんだがなぁ。 ま、javaは規約に従うとするか・・・。約1行、節約になるしw
141 名前:140 mailto:sage [2007/05/04(金) 23:00:27 ] >>135 もサンクス。
142 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 23:07:36 ] コンストラクタの実行に時間がかかるクラスを作ったんで、カウンタ設置してその値に応じてJProgressBarで経過を表示しようとしたんだが、コンストラクタの実行中はバーが全然更新されなくて、実行終了後に更新されてバーがMAXになる。 どうすれば・・・
143 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 23:20:44 ] >>142 今週のJavaクイズ(6):ボタンを押すとどうなる? blogs.sun.com/javaev/entry/%E4%BB%8A%E9%80%B1%E3%81%AEjava%E3%82%AF%E3%82%A4%E3%82%BA_6_%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E6%8A%BC%E3%81%99%E3%81%A8%E3%81%A9%E3%81%86%E3%81%AA%E3%82%8B 「Java SE 6完全攻略」 第27回 Swingでマルチスレッド - SwingWorker その1(上記の解答編っぽい) itpro.nikkeibp.co.jp/article/COLUMN/20070413/268205/
144 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 23:39:00 ] >>143 まじでサンクス! 明日早速なおしてみます。
145 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:06:07 ] マルチにも回答がやってくる恋の季節
146 名前:デフォルトの名無しさん [2007/05/05(土) 14:27:24 ] このエラー何ですが、どうしたらなおるでしょう? シンボルを解釈処理できません。 シンボル: メソッド equals (char) 位置 : java.lang.String の クラス if("\t".equals(tmpStr.charAt(i))){
147 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 14:30:27 ] >>146 > if("\t".equals(tmpStr.charAt(i))){ if("\t".equals(tmpStr.substring(i, i+1))){
148 名前:デフォルトの名無しさん [2007/05/05(土) 14:36:12 ] >>147 ありがとうござます。iが原因みたいですた。
149 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 14:42:51 ] >>147 if('\t' == tmpStr.charAt(i)){ でも良かったのでは?
150 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 14:49:48 ] 別のプロセスにオブジェクトを渡したいのですが、どんな方法がありますか?
151 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 15:14:19 ] コピペ
152 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:47:24 ] >>150 java越えて共有メモリにしたいとか、そういう事?
153 名前:デフォルトの名無しさん [2007/05/05(土) 17:36:07 ] オブジェクトを構成する全てのパラメータを エクスポート、インポート出来るようにして・・・ってそういう事でいいのか?
154 名前:デフォルトの名無しさん [2007/05/05(土) 18:07:51 ] Javaのクラスでつまずいている者です。 ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29366 このようなソースの場合、 class Employeeの、 public Employee(String n, double s) { name = n; salary = s; id = 0; } や public String getName() { return name; } はどういった役割をしているのでしょうか? また、 public void setId() { id = nextId; // set id to next available id nextId++; } もどういった役割なのでしょうか? なぜ、getとsetを設定するのかが分からず、混乱しています。
155 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:16:17 ] 新しく犬を飼おう 名前はポチにしよう(setName) このわんちゃんの名前なんていうの? ポチだよ(getName)
156 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:19:58 ] 何でポチって名前なの? ポチって首輪に書いてあるから ポチって犬小屋に書いてあるから ポチって焼き印wが押してあるから ポチって俺が名付けたから 何でポチかは自由。知りたいのは何故かではなく名前だけ。
157 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 20:33:01 ] fukumori.org/oo/why_use_getters_and_setters_j.html
158 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 21:13:24 ] >>154 ただの変数だと、制限がかけられない。(現実的にありえない数値が入ったりする) そこで、セッターを作り、引数をチェックし、ありえない数字が来たら例外を発生させる。 void setHoge(int foo) { if () { }
159 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 21:16:41 ] ↑途中で送信してしまった。 if で引数チェックして、例外発生させるの。 そしたら、変数が適切な値だと保障することができる。 クラスや例外ない言語の場合、 関数呼んだあと、戻り値でエラーチェックしたりするのが めんどくせえぞ。
160 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 21:36:51 ] オブジェクトってのは変数が賢くなったみたいなもん。 箱にボタンがついたみたいなもん。 自販機を考えてみれば、箱の中身の仕組みを知る必要はなく、 お金を入れて、ボタンさえ押せばジュースが返ってくる。 クラス(設計図)に中の仕組み書いて、 new クラス名でインスタンス(実体/オブジェクト)を作るってだけ。 クラスの外からは、中のメソッド(ボタン)の仕組みを知る必要はなく、 何が必要で、何が返ってくるかだけ知っていれば良い。
161 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:33:02 ] jarファイルというのを作って実行してみたのですが、 プログラムは正しく動作するのに、画像が表示されません。 classファイルと同じディレクトリにgif画像はあるのですが、 どういった原因が考えられますか?
162 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:35:38 ] >>161 正しく動作してんなら何の問題もないよね。 次の質問どーぞー
163 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:36:13 ] >>161 エスパー募集キター
164 名前:161 mailto:sage [2007/05/06(日) 01:19:20 ] ああ、そうですね。矛盾してますね。 パッケージに纏める前は正しく動作して画像もきちんと表示されていました。 しかしjarファイルを作った後にプログラムを実行したところ、画像は表示されないけど、 それ以外は前と同じ動作をしているように見えます。
165 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:40:57 ] >>164 ClassやClassLoaderのgetResourceで画像ファイルのURLを求めてそのURLから読み込むようにしていないか 大文字と小文字の区別をつけられないファイルシステムを使っていて上手く動くような気になって その区別をつけるjarの中の画像ファイル名を正しく指定していないか
166 名前:デフォルトの名無しさん [2007/05/06(日) 02:33:56 ] Javaのawtってボタンとかの配置を座標で指定できないの? それっていくらなんでも不便じゃない
167 名前:デフォルトの名無しさん [2007/05/06(日) 02:40:42 ] >166おれにもおせーて
168 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:44:43 ] つ ILikeTroublesomenessLayout implements LayoutManager2
169 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:48:16 ] JNIを使ったクラスライブラリを書いているのですが、 ネイティブなファイルをjarに含めて動作させるにはどうしたら良いのでしょうか。 ぐぐるとBundle-NativeCodeなるものが見つかったものの 書いても何も変わらず、loadLibraryがネイティブなファイルを見つけてくれないのです。
170 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 04:31:56 ] 携帯電話向けJavaでは、 使いまわされないデータ型だけのクラス(構造体)なんかは、 メインのクラスで内部メンバとして書いたり、 ステップ数が多い処理を、メソッドを使わずインラインでガリガリ書いたりと、 独特の流儀があるようです。 以前の携帯は実行ファイルサイズ制限があって、 このような方法が主流みたいですが、 今は実行ファイルサイズの制限は緩和されたようです。 とすると、上のような携帯Java独特の、 およそJavaらしからぬコーディングスタイルには意味はあるのでしょうか? 例えば、単一のデータ構造を参照するのにインナークラスを使わずに、 呼び出し元のメンバとして参照する事で、速度的なメリットがあったりするのでしょうか?
171 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 05:12:58 ] >>170 それはもう過去の話。心配しないで関数にしておk
172 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 05:13:46 ] 単一クラスでがんばる、とかは?
173 名前:デフォルトの名無しさん [2007/05/06(日) 07:25:37 ] ライブカメラ全般たとえば「東京ストリート チャンネル」などが見れなくなってしまった のですが、何が原因なんでしょうか。 javaを再インストールしたがダメです。
174 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 10:08:54 ] >>166 一応、java.awt.Component#setLocation()
175 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 10:12:10 ] >>166 つ null layout
176 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:09:04 ] >>170 食らうヒープ量が全然違うので関係大あり。
177 名前:デフォルトの名無しさん [2007/05/06(日) 11:17:24 ] JAVAでロボット動かせるって本当ですか
178 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:20:22 ] >>177 ロボットにJava仮想マシン載せれば
179 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 12:26:10 ] ウインドウアプリケーションを作ろうと思っています。 Appletクラスの継承を用いてアプレットを起動する場合には、 htmlファイルの中に <applet code="XXX.class" width=256 height=256> を記入すればいいと思いますが、Frameクラスの継承を用いた場合、 同様にインターネットエクスプローラーから起動させるにはどうすればいいのでしょうか?
180 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 12:27:53 ] >>179 Java Web Startでぐぐる
181 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 12:31:51 ] >>174 これ使ってもうまくいかなかった。 ていうかJavaは用意されたレイアウトを組み合わせることでGUI部品を配置していく 仕組みを奨励してるのかな。面倒だよな。配置の仕方に限界がありそう。 なんで他言語のようなリソースエディタがないのだろう。 GUI部品のレイアウトをいちいち回りくどく記述するなんて古いよ
182 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:05:13 ] 同一環境でしか動かさないつもりなら別にいいが そうでないなら絶対座標指定のほうがよっぽど限界があるわ。
183 名前:179 mailto:sage [2007/05/06(日) 13:08:21 ] >>180 ありがとうございます。ちょっくらやってみます。
184 名前:170 mailto:sage [2007/05/06(日) 13:09:16 ] >>172 >>176 速度的な面はどうなんでしょうか…?
185 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:15:40 ] >>184 実測して計ってみるのがいいでしょう
186 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:17:02 ] >>181 >>175 は見たか?
187 名前:161 mailto:sage [2007/05/06(日) 16:08:50 ] 知識が乏しくて恐縮ですが 自分が使っているファイルシステム?ってのはどうやって調べられるのでしょうか。
188 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 17:39:17 ] 現在専門学校生なのですが、学校と同じ環境を作りたく設定で悩んでいます コマンド プロンプトで、terapad ----.javaと打てばterapadが立ち上がるようにしたいのですがどうすればいいのでしょうか?
189 名前:デフォルトの名無しさん [2007/05/06(日) 17:40:16 ] JFrameで質問があります。 Core Javaのボールオブジェクトが跳ね返るプログラムの応用で、 JFrame内に存在するオブジェクト(この場合、四角です)をD&DでJFrame内なら 自由に移動出来るJavaプログラムを作成しているのですが、 JFrameの外(見えない部分)にも移動でき、そうした場合、オブジェクトが見えなくなるので、 強制終了する以外終了する方法がないという意味のないプログラムになってます。 どうすれば、オブジェクトをJFrame内のみ移動可能なプログラムにする事ができるのでしょうか?
190 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:00:13 ] >189 どうしてボールが跳ね返る(ようにみえる)か考えてみたら?
191 名前:デフォルトの名無しさん [2007/05/06(日) 18:23:56 ] 遠坂凛に質問です。 宝石製のバイブでオナニーすると、魔力を溜めることはできるんでしょうか?
192 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:30:00 ] >>189 ズバリ解答を言うと、端に来たらD&Dでき無くすればおk
193 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:35:55 ] >>188 exploreのオプション->ファイルタイプ で.javaにそのterapadとやらを割り付ける だけど、なんでterapadなんだ? terapadとかcpadとか、わけわからん
194 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:47:37 ] >>188 java関係ないがterapadをパスの通った場所に置けば良いじゃん。 てか、start XXX.javaじゃだめなん?
195 名前:189 [2007/05/06(日) 19:25:24 ] >>190 Core Javaを参考にして、dx を -dxにしてみたのですが、上手くいきません。 >>192 それはどういう風に設定すればいいのでしょうか? 一応、ソースをサラしておきます。 ttp://a-draw.com/uploader/src/up22130.txt
196 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:13:45 ] >195 全然無関係のところをまねしてどうする? やるべきことはShapeに渡す値を描画エリアのサイズ内に調整すること
197 名前:189 [2007/05/06(日) 20:54:32 ] >>196 shapeBeingDragged.moveBy(x - prevDragX, y - prevDragY); の部分を調整すればよいのでしょうか?
198 名前:デフォルトの名無しさん [2007/05/06(日) 20:58:22 ] >>181 つ NetBeans
199 名前:デフォルトの名無しさん [2007/05/06(日) 21:07:42 ] eclipse使ってたらなんか上書きモードになっちゃった。 どうやったら治るの
200 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:13:30 ] >>199 デフォルトのキーバインドなら insertキー
201 名前:デフォルトの名無しさん [2007/05/06(日) 21:17:39 ] >>200 インサートキーってどうやってonにしたりoffにしたりできるの?教えて
202 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:24:07 ] これはひどい
203 名前:デフォルトの名無しさん [2007/05/06(日) 21:25:38 ] eclipseでお勧めの本おしえて
204 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:27:24 ] >197 そう 元のCore Javaのソースはしらないけど ボールが描画エリアの端にあたってはねかえるのは 端の座標を越えたら増分を反転させているから そしてこの場合はDnDだから(つまり人間が操作しているから) 増分を反転させるのではなくそこの座標に制限する 言葉で説明するの面倒になってきたので コードで書くとこんな感じかな if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = shapeBeingDragged.width - cs.width; int maxh = shapeBeingDragged.height - cs.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); repaint();
205 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:45:49 ] >197 わるい逆だ なれない変数名だったので混乱した int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height;
206 名前:189 [2007/05/06(日) 21:50:16 ] >>205 ありがとうございます。 ソースに組み込んでみたのですが、クリックをするとはぐれメタルが逃げるかのごとく、 画面上からオブジェクトが右下に消えてしまいます。
207 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:57:30 ] >206 mouseReleased()の方の実装もかえてね mouseDragged()と1行違いだから共通部分を切り出して 別メソッド呼び出しにすればいいかな if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); shapeBeingDragged = null; repaint();
208 名前:189 [2007/05/06(日) 22:07:18 ] >>207 こうでしょうか? synchronized public void mouseDragged(MouseEvent evt) { if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); repaint(); } synchronized public void mouseReleased(MouseEvent evt) { if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); shapeBeingDragged = null; repaint(); } ttp://a-draw.com/uploader/src/up22134.txt
209 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:14:49 ] >208 いいんじゃないかな 逃げ去るってことはその他にタイマー処理が行われているって 可能性が考えられるけど元のソースのボールの処理が残ってない?
210 名前:189 [2007/05/06(日) 22:39:11 ] >>209 タイマー処理は行われていません。
211 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:10:12 ] >210 moveBy()で加算しているようだから以下のように書き換えてみて left = dx; top = dy;
212 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 12:40:08 ] 二つのクラスがあったとして Class1のテキストフィールドにClass2のメソッドの処理結果を表示させたいんですがどのような方法が ありますか??メソッドは引数をもたないものとして
213 名前:デフォルトの名無しさん [2007/05/07(月) 12:45:05 ] SocketChannelでreadで-1が帰ってくる以外に正常切断を判断する方法はありますか。 FINで終わったのかどうかが知りたいです。
214 名前:213 [2007/05/07(月) 12:47:44 ] Class1のインスタンスをClass2に事前に持たさせておいて Class2のメソッドの処理結果がでたタイミングで Class2で保持しているClass1のインスタンスのテキストフィールドに表示させる
215 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 14:25:23 ] >>214 ありがとうです class2{ class1 cls=new class1 処理 cls.text.setText(処理結果);} このようにやってみたんですが表示してくれません・・・ エラーはないんですがどこが間違ってますか><?
216 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 14:41:05 ] >>215 class1でのテキストフィールドのsetTextはちゃんと働いてるの?