【初心者】 Java質問・相談スレ28 【大歓迎】
1 :
デフォルトの名無しさん :
03/07/17 11:19
Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。
よく見直してください。
Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02 を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。
クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html
いつもおまえらスレ立て人には、感謝してます 乙
と、せっかく
>>1 がよいスレ立てをしたのに
コイツ↓はお決まりのアノ質問をしやがります
15 :
デフォルトの名無しさん :03/07/17 11:44
あのう classファイルをjavaファイルに戻す方法ってあるのですか? 最近javaをやりはじめて気になります。 誰か教えてください
16 :
デフォルトの名無しさん :03/07/17 11:48
appletで何度やっても フィールドが見つからないエラーが出ます。 VMのバージョンが1.3で、Color.REDを使ってたのが原因だったのですが、 この部分をredに変え、コンパイルし直してアップロードしても動きません。 しかもコンソールを開くと、まったく同じエラーが出ています。 行番号を変えても、何もない部分にエラーがあるというのです。 どういうことでしょうか?
>>15 すっごく斬新な質問ですね
とくに「あのう・・」で始まるのがグッドですね
次の方どーぞ ,ィミ, ,ィミ, フ
彡 ミ 彡 ミ, ヤ |
,,彡 ミ、、、、、、、、彡 ミ, (⌒) レ |
彡;:;: ミ, ( ヽ ヤ
〜三;:;::::: 彡〜 ノ ノ レ
~~三:;:;:;::::: -=・=- -=・=- 三~~ ヽ ( : ;;
~~彡::;:;:;:;:::.. ___ ,三~~ ( ノ ,,,,, : ;;
~~彡;:;:;:;:;:;:;:. |┴┴| ,ミ~~ ノノ ;'" ,,ノ―、 ,;'
~~彡:;:;:;:;:;:;:;:;. ノ――| ---==ニノ ,;'′ >=ニ(二二二() ̄ ̄ ̄ ̄ ̄ ̄|
,...-''''""~~,::;:;::;::;::;::;' ミ,, ,;'′ ゝ--〈 | | Λ_Λ . |
____,;";;:;;;;;;;;;;;;;;;;;;;;;:;:;:;:;:;:;:; i! ミ,,,,;'′ `ー‐' | □ ( ´∀` ) |
::::ミミミ:;:;:;: ミ:: ,;' ̄ ̄ ̄| | いちごココア |
:::::ミミミ:;:;: ミ:::, ,;::''′ |. \______/
::::ミミミ:;:;:: ,;+''"~~゙+、~'''''~ | └─┘
::::ミミミ:;:;:;: ,+'" ミ::::: | ━┷━━━┳━━━━━
:::::ミミミ:;:;:;:;: >':;: ミ:: | ┃
::::::ミミミ:;:;:;:;:;../;:;:;: ;:" | ┃
18 :
デフォルトの名無しさん :03/07/17 11:50
>>17 そんなこと言わないで教えてください
いちごミルクの方がよくないですか?
19 :
デフォルトの名無しさん :03/07/17 11:51
>>15 ギャグコンパイラのこと言ってるんでしょうか?
はっきり言って完全な状態にはなりませんが
javapというのがあります
22 :
デフォルトの名無しさん :03/07/17 12:10
>>21 ギャグコンパイラって初耳です。
javapですか?ありがとうございます
インターフェースってゆうのは スーパーファミコンへファミコン、メガドライブ、PCE、セガマーク3、ネオゲオの カートリッジを投入可能にするようなアダプタのような存在でしょうか?
>>23 君の言っているのは、ハード的な話だ
どうでもいいが、インターフェースって使えない
必要ないよな
コレクションが重いだと? ふざけるなボケがぁ StringBufferつかってグルグルまわしてる方が よっぽど効率悪いだろうがボケェ コレクションが重いなんて おまえら、偏見ですよ 思い込みですよ じゃあ、いつコレクション使うんですかボケ 重いからって言ってたんじゃあいつまでたっても コレクション使えませんよ 「要素数がわからないとき」だぁ? おいコラ、教科書どおりじゃ プログラムは作れないんだよ
はい、次の方ー
こんなとこで質問しているやつで、ほんとうにそんな効率を必要としている香具師はいないだろうな。 いったい要素数いくつのでーたを諸利するのかと。
>>29 前スレ
976 名前:デフォルトの名無しさん 投稿日:03/07/17 09:37
豆知識として知っておきたいのですが、
基本型の配列型(int[] aryなど)に対して、
それを適当な文字列として返すメソッド等ありませんでしょうか?
例えば、
int[] ary ={1,3,5,4};
のとき、例えばの話ですが
Array.toString(ary);
とすれば
"[1, 3, 5, 4]"
が返るようなメソッドのことですが。
//配列でのやり方誰かが提示
996 名前:デフォルトの名無しさん 投稿日:03/07/17 12:12
おい、おまえら
こんなやり方があるのだよ
ちゃんと[ ]も表示されるしな
//ソースコード略
997 名前:デフォルトの名無しさん 投稿日:03/07/17 12:27
>>997 List等のコレクションクラスは重いので・・・
JJ an an vivi aljazeera journal
すいませんお助けを... util.zipを使いテキストが圧縮されてると初めから想定された ZIPファイルを展開しつつ、新しいテキストファイルを作り そこに書き出すという以下のような処理をしています。 ZipIntputStream zi = new ZipInputStream(new FileInputStream(InFile)); File OutFile = new File(出力ファイル名); ZipEntry ze; int buf_size = 512; byte[] buf = new byte[buf_size]; ze = zi.getNextEntry(); // 初めのエントリを明示 BufferedInputStream bi = new BufferedInputStream(zi, buf_size); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(OutFile)); while(bi.available() != 0 && (bi.read(buf,0,buf_size)) != -1) bo.write(buf,0,buf_size); bo.close(); bi.close(); zi.close(); これで圧縮を展開しながらファイルを書き出しているのですが 1000行程度のファイルを実行したところ全く問題がなかったのですが 10000行を越えたファイルを扱った途端、すべてのデータを吐き出し終えた後に ゴミデータが数行付加されるような現象が起こり、一向に取り除けません。 解決するにはどうしたらよいのでしょうか?
↑ 途中にOutFile.createNewFile()が入ります 抜けてました...
また、
>>32 では入力ストリームがBufferedInputStreamで
一度ラップされバッファされていますが、直接ZipInputStream
から流してもゴミは取れませんでした。
ゴミデータというのは、どうやらテキストの最後の数行のようで
すべてのテキストが吐かれた後に、繰り返して最後の数行が
途中から書き出されている様子でした。
>>32 バッファに完全に読み込んでしまってからファイルに書き出せば?
>>34 おいおい、そこまでわかってるレベルなら
デバッグぐらいしたらどうだ?
意外と、安易なミスかもしんねーぞ
>>32 テキスト出力はPrintWriterクラスを使えば文字化けしません。
同じ癖?に出会ったことある人いないかなぁと思って投げてみました...
すべてバッファリング後に書き出すという処置を試してみます。
どうも見てみたら最後のバッファが2度書き出されてるようでした。
よくわからんち。
とりあえず
>>35 さんの方法を試してみます、ありがとうございました。
>>37 文字は化けてはいないんです。
現に1000行程度では特に問題が出ませんでしたので。
あと、通常byteで受け取るべきものをPrintWriterに回すにはどうすればよいのでしょうか?
回答に質問すいません...
>>38 おまえさぁ解決する気あるの?
デバックしろよ
あくまで俺の予想bo.close(); ココでも吐いてんじゃないの?
問題です。 513 bytes のデータ扱うときはどうなるのでしょう。
>>32 40 が解答しているが、読み込んだバイト数だけ書き込め。
すいません、できました。 int insize; while((insize = bi.read(buf,0,buf_size)) != -1) bo.write(buf,0,insize); bo.flush(); bo.close(); 根本的に用意された配列の最後の行とは関係ない、 新データで書き換えられなかった領域も吐き出されていたようです。 成功バイト?を受け取ってそれをもって書くべきのようでした... お騒がせしました。
おれは考えた
なぜ
>>43 は 「36==27」だと分かったのだろうか
いや、わかるはず無い
俺は自分に言い聞かせた
>>43 全然、ドキドキなんかしてないもん
大丈夫だもん
怖くないもん
>>43 よ、よかったら何で分かったのか教えてくれないかなぁ
>>46 言葉使い。双方とも乱暴な描き方だから。
まだ書き込み数少ないから目立つんだよ。
そうか・・・
おれ、汚いんだな
俺は汚いんだな
っていうかよー
あまりひどい人はダメなんだ
宿題スレでは全てきちんと答えてんだけどな・・・
>>48 マジであてられますた
投稿に失敗したようなのでもう一度 JAVAで自分の作業ディレクトリの中身を見る方法はないでしょうか? 作業ディレクトリは見ることができたのですが、中にあるファイル名を とってくることができません。 Processでlsコマンドをうつと見られると思いますが、重くなるので できれば、JAVAだけでみたいのですが、よい方法を知っていたら 教えてください
52 :
デフォルトの名無しさん :03/07/17 22:22
Java3Dに関する質問なんですが ある物体を、z軸方向からある方向(ベクトル)に向けたいときはどうすればいいんでしょうか? ベクトルからz軸からの角度を計算して、x軸方向とy軸方向に 2回回転処理を行えばできるのですが、それを一回でやる方法はありませんか?
>>53 z軸ベクトル(0,0,1)をz、方向ベクトルをaとすると。
zとaベクトルとの外積をとって、
原点とその法線ベクトルで面を生成。
また、zとaの内積値より、回転角度αを計算。
んで、その最初に求めた面上でαだけ回転させる。
結局、計算量は変わらない。というかこっちの方が多い(笑)
一回で出来たら俺にも教えてくれw
55 :
デフォルトの名無しさん :03/07/18 00:34
win2000で動かすことを前提に、 任意の画像ファイルをデスクトップの背景に設定することはできますか?
56 :
デフォルトの名無しさん :03/07/18 00:37
>32 おながいだからtry{]catchしてくらさい。finally節でcloseしてくらさい。
>>56 >>57 もうしわけない。javaで作ったプログラムでそういう風な
ことができるかってことだったんです。
60 :
デフォルトの名無しさん :03/07/18 01:33
>>59 俺はこうしてる。
NativeMethod imp = new NativeMethod("user32.SystemParametersInfoA");
if(imp.isLoaded())
imp.Call(SPI_SETDESKWALLPAPER, 0, (void *)filename, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
NativeMethod クラスは自作してくださいね。
>>58 頼むからfinallyでcloseするのはやめてくれ、無知君w
・・・さて、次ー
>>60 NativeMethodクラスってどうやって作るのですか?
無知で申し訳ないです。
>>56 興味深い
>>61 どうでもいいけど、finallyにはreturnは書かないでくだちぃ。
try {
return 1;
} catch (Exception e) {
return 2;
} finally {
return 3;
}
>>61 finallyでストリームがぬるじゃないときにclose。
で、61はどうしたいんだ?
69 :
デフォルトの名無しさん :03/07/18 05:00
>>63 DLL側が60行程度、Java側が40行程度
70 :
デフォルトの名無しさん :03/07/18 05:11
すみません、どうしても分からないんで質問させてもらいます。 本を買ってjavaをやり始めたんですがいきなり最初からつまづきました。 ワードパッド等でプログラムを書き込んでコンパイルしようとすると、 「HelloWorld.java:1: 'class'または'interface'がありません」から始まって 不正な文字、文字リテラルが閉じられません等エラーが数十個見つかります。 本に書いてあるとおり何度もやってみたんですがやはりできません。 //サンプルプログラム class HelloWorld { public static void main( String[] args ) { System.out.println( “HelloWorld!” ); } } よろしくお願いします。
ダブルクォーテーション ( " ) を半角に汁
>>78 返信ありがとうございます。
もちろん「サンプルプログラム」以外半角です。
本には書いてないんですが半角スペースも 一つとして間違えるとコンパイルできないんですか?
はい
コンパイルできません。 だから間違っても、試して見ようなんていう馬鹿な考えを起こさないでくださいね。
>>77 public class HelloWorld{
じゃないから。
はずしてたらスマソ
ファイル名をHelloWorld.javaにしてないんじゃないの?
エラーの詳細キボンヌ
初心者で無知でスミマセン。
どうしても気になってねむれないので教えてください。
>>61 finally節でcloseするのは何がまずいのでしょうか?
私は、Stream系からSQL系から、総てそうしてしまっています。
粘着な様ですが、本当に分かりません。
宜しくお願いいたします。
88 :
JGreener :03/07/18 11:49
LinuxでJava使ってます。 現在実行されているカレントディレクトリを、ルートからのフルパスで取得するにはどうすればいいでしょうか? よろしくお願いします。 環境:Java2 SDK 1.4.1_02
>>87 finallyとfinalizeとを間違えたんだろw
気にすんな
>>88 System.getProperty( "user.dir" )
で返ってこなかったけ・・・
>>88 File current = new File(".").getAbsoluteFile().getParentFile();
System.out.println(current.getAbsolutePath());
ダメ?
>>84 再履修の必要あり
>>85 「HelloWorld.java:1」とエラー行に出ている
>>77 それをメモ帳で開いてみ。
>>93 スマソ(;´Д`)
>>ワードパッド等でプログラムを書き込んで
↑これみてなかった。
それじゃコンパイルできないわなw
97 :
JGreener :03/07/18 13:57
>>91 ,
>>92 ありがとう、できました(^^
ついでといってはなんですが、もうひとつ質問させてください。
SAXParserにInputStreamを渡して、タグと属性を切り出したいのですが、
このストリームに時間間隔をおいてデータが流れてくるので、そのたびに処理したいのですが、
どうやら、ストリームが閉じられるまで処理が始まらないようなのです。
これは仕様というか、もうどうしようもないのでしょうか?
またまた、よろしくお願いします。
環境:Java2 SDK 1.4.1_02
98 :
デフォルトの名無しさん :03/07/18 14:39
>>97 そんなことはないと思ワレ
関連するコードをうpして見たら
多数のスレッドから、同時にアクセスされる可能性があるファイルをロックするにはどうすればいいでしょうか? 最初に思いついたのは、こんなのですが import java.util.*; public class ThreadStoper { private volatile static Set ref = new HashSet(); public synchronized void lock(Object key) { while(ref.contains(key)) { try { this.wait(); } catch(Exception exe) { continue; } } ref.add(key); } public synchronized void ok(Object key) { ref.remove(key); this.notify(); } } サーブレットに適したものを探しています どうかおねがいします
volatileは意味なかった・・・。
あ、あと public static synchronized void lock public static synchronized void ok でした
あと、Stopperな。
(TДT)そうだった・・・
106 :
JGreener :03/07/18 15:18
>>97 こんなかんじです。
Process proc = Runtime.getRuntime().exec( "hoge" );
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXPArser();
parser.parser( proc.getInputStream(), new MyHandler() );
このhogeコマンドが、数秒〜数分間隔で、
<foo>abc</foo>
1秒何もなし
<bar>abc</bar>
こんな風に表示します。
かならず1行単位になっているとは限らないので、困ってます。
>>101 よ、それを実際に運営してみて問題が生じたのなら、ここで質問しなさい。
何をどうしてほしいのか分からんぞ
>>106 >どうやら、ストリームが閉じられるまで処理が始まらないようなのです。
あたりまえじゃんI/Oやってる間はブロックしちゃうんだ
>>109 ありがとうございます
実は方法がオカシイかどうか心配だったんです
最初はコレでやってみることにしました
113 :
デフォルトの名無しさん :03/07/18 21:27
純粋にjavaのみでウインドウズのプロセスの監視はできますか? 具体的に言うと、どのアプリが実行されているかを取得したいのです。 どなたか教えていただきたい。
114 :
デフォルトの名無しさん :03/07/18 21:33
>>113 取得したところで、Javaからは触れない。
何がしたいんだ?
ユーティリティーつくりたいなら、Cみたいに軽い言語じゃないと使ってくれないぞ。
目的が違う。
あくまで、実務向け言語だからね。
115 :
デフォルトの名無しさん :03/07/18 21:45
HttpURLConnectionでファイルをGETしているんですが User-Agentの設定はどうしたらいいでしょうか? こんな感じでやってみましたけどだめでした。 HttpURLConnection url; url.setRequestProperty("User-Agent", "Test)")
Cみたいに軽いというよりJavaのように重い言語じゃといった方がいいと思われ。 さらにJavaはネイティブとのインタフェースが貧弱だからこういう処理には不適格。
117 :
デフォルトの名無しさん :03/07/18 21:53
>>116 C#だと、構造体<=>structで値受け渡したり可能なのかな?
ま、俺には必要無い機能だ。
がんがって実装してちょ〜だい
応用ソフト(アプリケーション)向きであって基本ソフト(OS)向きじゃない、と。
>>117 > ま、俺には必要無い機能だ。
そう。お前は事務プログラムだけ作っていれば良い。
120 :
デフォルトの名無しさん :03/07/18 22:02
>>118 どこが一番重いのかな。
多分GCだと思うけど。
Perlで2万個の配列10個くらい作って、そのまま関数抜けると、
そこでFree処理が走るのか、30秒くらい停止する。。。。
こうはなって欲しくないけど、他の部分ではPerl程度のレスポンス
が欲しい。
>>118 お前定義は基本ソフトの範囲がすごく広そうだな。
122 :
デフォルトの名無しさん :03/07/18 22:07
>>113 どうもありがとうございます。
どんなアプリが実行されているかを見れるだけでもよいのですが
できればいろいろ制御(プロセスを終了したりとか)をかけることができればなぁと
目論んでおりました。
やはり、CやらC++やらで仲立ちしてるくれるような
dllでもつくってそっから値をもらうしかないんですかねぇ・・・。
丁寧な回答ありがとうございました。
123 :
デフォルトの名無しさん :03/07/18 22:07
JavaがもっさりしているのはヘボGUIライブラリ
124 :
デフォルトの名無しさん :03/07/18 22:08
>>121 何がしたいんだ?
リソースキットじゃ不満なのか?
2年前に作った、俺のDLL(Windows用)では、
STDCALL,_CDECLの関数は全て呼べるし、
3又は4の引数のAPIコールバックはJavaで定義可能。
俺のDLL(俺)は、NativeMethodクラスの作者。
Webで落とせるようにしていたが、
レスポンスが0だったので公開中止。
ここまでやってから文句言え。
正直WnidowsOSに対するつじつま合わせにしか使った事無いぞ。
126 :
デフォルトの名無しさん :03/07/18 22:10
> 俺のDLL(俺)は、NativeMethodクラスの作者。 わからないよ(T▽T) 俺が厨房だからか・・・
俺のDLLというのは人の名前なの?(T▽T)
129 :
デフォルトの名無しさん :03/07/18 22:13
>>126 落ち着いてないのはお前だろ?
ちゃんと読め。
>>127 > 俺が厨房だからか・・・
お前が厨房だからだ。
130 :
デフォルトの名無しさん :03/07/18 22:15
>>128 言葉たりんかったな?
オマエはノータリンだな?
Javaだけで、DLL呼べるように環境整えても、
その機能は、結局「WindowsOSに対するつじつま合わせ」程度しか使えない。
言語仕様に取り込まれなくても困らない。
Javaに向いているとか、向いていないとかの問題じゃなくて、
不要なんですよ。。。
リソースキットと、TaskManagerがあればそんな機能要らないでしょう?
俺のDLLは...の作者。
132 :
デフォルトの名無しさん :03/07/18 22:18
今度はリソースキットと、TaskManagerがあれば そんなAPIは要らないでしょうとか、ブラウザがあれば ブラウザコントロールなんか要らないでしょとか言いそう。 お 前 は 馬 鹿 だ !
クソDLLを作っといて反応がないのが 自分のせいだって認めたくないんだな。 よしよし(w
お 前 は 童 貞 だ !
>>130 こいつは何に対してつっこまれているのか分かっていないんだな(w
136 :
デフォルトの名無しさん :03/07/18 22:22
>>135 ちゃんと議論できるやつと出来ないやつを振り分けるためにわざと間違えた部分でつられてるのは誰ですか?
137 :
デフォルトの名無しさん :03/07/18 22:23
オマエラはJavaの崇高さがわかっていない。 技術力も俺に劣っている。 いくらほざいても無駄。
>>137 sageヨーネ
C言語知ってれば誰でも出来る事
ただし不要。
>わざと間違えた やっぱり間違いがあるんだ。 わざとなんだね。わざと。ぎゃははは。
140 :
デフォルトの名無しさん :03/07/18 22:25
試しに落としてみたやつもいないんだな・・・ 俺が落としてやるからもう一度公開してみな。
>>140 59DLくらいで、掲示板空っぽでした。
恥ずかしいので自分で作ってやってみて下さい。
無駄だって解ります。
> sageヨーネ もはやというかさっきから意味不明なことばかり(w
もうそろそろ自称DLL作りました野郎は放置した方がいいのではないか?
お前のDLL(お前)
アプリケーションにおいてのメンテナビリティって どういう意味なんですか?
ごめんなさい、パソコンを一家で共有しているもんで、
返事をくれたみなさん、遅れて申しわけありません。
>>84 まだpublic classは出てきてないんでそれはないです。
>>85 それはないです。頭が狂いそうなくらい確認作業しましたから・・・
>>86 エラー総数は56個です。
HelloWorld.java:1:'class'または'interface'がありません。
{\rtf1\ansi\ansicpg932\deff0\deflang1033\deftab840{\fonttbl{\f0\froman\fcharset0
Century;}{\f1\froman\fcharset128 \'82\'6c\'82\'72 \'96\'be\'92\'a9;}}
^
HelloWorld.java:1:\92は不正な文字です。
{\rtf1\ansi\ansicpg932\deff0\deflang1033\deftab840{\fonttbl{\f0\froman\fcharset0
Century;}{\f1\froman\fcharset128 \'82\'6c\'82\'72 \'96\'be\'92\'a9;}}
^
HelloWorld.java:9:'class'または'interface'がありません。
^
等です。エラーの番号?は1〜9まで出ています。
よろしくお願いします。
>>146 全角スペース使ってないか?
あとHelloWorldを半角の””で囲ってるか?
>>146 っていうかよく見たらclassにpublicついてないじゃん。
氏ねよマジで。
今書き直しましたけど変わらずです。 半角スペース、ダブルクォテーションも半角です。 さっぱり分かりません。。。
>>150 とりあえず書き直したの
ここにかきこんでみれ
>>150 だから
ノートパッドでソースを書くなと小一時間(略
メモ帳でそのソース開いてみろと・・・・
>>153 自己レス
ノートパッドじゃねーよ(;´Д`
ワードパッドでソース書くな!
ワードパッド、重要なとこは文字でかくできるし、便利そうだ。
>>153 メモ帳でやったらできました!
理由はよく分かりませんがかなり嬉しいです(^○^)
ほんとなんといったらいいか・・・
またjavaの勉強の続きをしたいと思います!
教えてくれた親切なみなさん本当に感謝、感謝です!
ありがとうございました!!
なんで理由がよくわからないんだよwアフォかw
「ああなるほど、だからワードパッドではだめなのですね。」 と理解してもらえる説明希望。(私には書けそうに無い。)
ワードパットではだめです。そういう仕様です。
ところでワードでコードを書くメリットってなんだ?
うざい機能が多いだけメモ帳よりたちが悪いと思うのですが・・・
何でwordでしてんの?
>>77
>>162 そういう略し方よくないかと。つーかマジボケ?
ワードとワードパッドは違うだろ
>>159 ワードパッドはデフォルトではRich Text Formatで保存するから。
ワードパッド使ってもテキストで保存すれば問題なかったのにね。
>>163-164 ははは。そうだったねまじでボケてるわー。
スマンチョ
>>77 んじゃフリーで軽いお勧めのエディタってナイデスか?
そんな俺は相変わらず秀丸かテラパッドなんですけどね。
じゃあ漏れはK2Editor
>>159 >>146 > エラー総数は56個です。
> HelloWorld.java:1:'class'または'interface'がありません。
> {\rtf1\ansi\ansicpg932\deff0\deflang1033\deftab840{\fonttbl{\f0\froman\fcharset0
> Century;}{\f1\froman\fcharset128 \'82\'6c\'82\'72 \'96\'be\'92\'a9;}}
> ^
> HelloWorld.java:1:\92は不正な文字です。
> {\rtf1\ansi\ansicpg932\deff0\deflang1033\deftab840{\fonttbl{\f0\froman\fcharset0
> Century;}{\f1\froman\fcharset128 \'82\'6c\'82\'72 \'96\'be\'92\'a9;}}
このエラーを見たらわかるだろ(;´Д`
ワードパッドだと、文字情報(フォントの種類やら、文字のサイズやら)もバイナリで記述されるから、
ワードパッドで見える文字だけが、実際のデータとして保持してるわけじゃないってこと。
テキストエディタとワープロの区別もつかないヒトがなぜこんな板に出入りしてるんですか?
>>177 それだけJavaの世界が広がったのです。
ホントか?
>>58 オリジナルではちゃんとやってますよ
ここでは見づらくするだけなので省きました。
184 :
デフォルトの名無しさん :03/07/19 10:19
昨日OSのプロセスの監視ができないかと質問したものですけど、 監視はけっこうむ理っぽいことは分かったのですが、 立ち上がっているプロセスの一覧の取得も難しいのでしょうか? もちろん純粋にjavaだけで。
>>184 Runtime.exec("ps -aux");
super() って何やってんの?
Socketを使ってStringのデータをやりとりしてるんですが、 IE標準のVMを使うと文字コードがうまく変換されるんですが、 Java Plug-inだと文字エンコードに"SJIS"などと指定すると失敗してしまいます。(IOException) 解決策はありませんか?
>>188 あるに決まってるので、
「無いかも知れない」などと心配なさらずに安心して探して下さい。
俺のDLL(俺)
Canvasを継承したスクリーンに他のウィンドウなどを重ねるとそのまま写りこんでしまいます。 直し方を教えてください。
>>196 単にpaint処理してないだけのような気がする。
>>197 public void paint(Graphics g){
g.setColor(Color.red);
g.fillRect(0,0,300,300);
}
こんな感じですがうまくいきません。
>>198 canvus?何がしたいのかワカランがゲームならpaint()内で無限ループすろ
>>200 何も提示しないお前にアホとか言われΤない
202 :
デフォルトの名無しさん :03/07/19 13:14
練習用としてgetImage()にローカルの画像をフルパスで指定したいんだけどできません。 これってそもそもできないの?
>>203 Image img=new ImageIcon("fgh.jpg").getImage();
質問者も回答者(?)も、ひところに比べて甚だしく質が低い
>>205 まず、今どうやってるのか出してもらわんと指摘のしようが無い
>>207 推測を元に回答できない時点でおまえのほうが質が低い
>>208 どこをどう推測しろってんだ、あぁ!?
プラットフォーム依存だろうが
>>199 Canvasなんですが、なぜかpaintメソッドが呼ばれていないようです。
どうすればいいんでしょうか?
classファイルと同じディレクトリに画像をおいて Image img = getImage(getDocumentBase(), "aaa.jpg"); 別のディレクトリにある画像を直接指定したいんだ。
214 :
デフォルトの名無しさん :03/07/19 13:44
Socketで接続しようとするときに、 TCP/IPの環境変数を作り直すことできますか?
俺も悪かった。
216 :
デフォルトの名無しさん :03/07/19 14:07
Java(TM) 2 SDK, Standard Edition 1.4.1_03を 入れたらJavaの開発環境はできるんですか?
>>216 できるがそれだけだと大抵苦労する。
まずはその苦労を知っておくのも経験のうちだ。がんばれ
219 :
デフォルトの名無しさん :03/07/19 14:15
大変苦労するのですか。 まぁ、意味がわかるまでこれでやってみます。
221 :
デフォルトの名無しさん :03/07/19 14:20
>>220 こんなところにわざわざ質問するような奴に言っても無茶
混乱させるか、IDE = コンパイラだと勘違いするバカ量産させるだけ
>>211 オレはjavaアプレットで何も作ったことないんだが
Image img = getImage(getDocumentBase(), "image/aaa.jpg");
みないにできない?無理だったらスマン、そして諦めろ。
>>211 >>223 アプレットでローカルファイル呼ぶなんて中途半端なことやめろ
getDocumentBase() なんかはずして、
getResource() するかフルパス入れろ
>>224 getDocumentBase()はリテラルでフルパス指定するよりはるかに適切。
確かに回答者のレベルが下がったな。
>>225 getDocumentBase() はアプレットでなければ動きませんが?
それに getResource() も挙げてるだろ
回答者の質が下がったかどうかはしらんが アプレットからローカルファイル呼び出しは おれもやめたほうがいいと思う
誰か教えてください。 Runtime.exec()でc++のバイナリを呼び出して、 Process.exitValue()で終了コードを受け取っています。 そのとき、なぜか不正な終了コードを受け取ることがたまにあるのです。 10とか11とか。 c++のバイナリは100回くらい連続実行しても全て正常終了(0)します。 javaから呼んだときのみに起こります。 javaのコードですが、 Runtime.exec() -> Process.waitFor() -> Process.exitValue() という流れです。 どなたか、同じような事象になった方おられませんか?
229 :
デフォルトの名無しさん :03/07/19 15:08
バイトコード書き換えて、JADをクラッシュさせたいんだが… gotoぶち込んでコードはガタガタにしてやったが、変数名はばればれ。
GraphicsかImageからピクセルを指定してそのピクセルの色を取得することをJava 1.1相当で実現できませんか? できたら方法を教えていただきたいです。
231 :
デフォルトの名無しさん :03/07/19 15:11
アプレットを表示しようとすると、 load class animation not found と出て表示されません。どうすればよいでしょうか? 前に作ったものや最初から入っているサンプルも同じようになります。 javaアプレットのスクリプトは有効になってます。
>>230 Image クラスそのものからは不可能。それは API を読んでも分かるよな。
getRGB できる Image がある。それを探して、どうすればいいか考えてごらん。
どうしても分からなかったら又おいで。ちゃんと試行錯誤してからね。
>>230 java.awt.image.PixelGrabber使えばint配列にピクセル情報を入れることができる。
Java1.1でできるかどうかはワカランが
219.111.85.231 231.85.111.219.dy.bbexcite.jp
235 :
デフォルトの名無しさん :03/07/19 19:32
JDKでコンパイルするとき、 DOSのところで何と入力すればいいのでしょうか。
>>235 あ、アプリケーションの場合な。
JSP:JSPCompile
Applet:AppletCompileIE
配列を初期化するときは String[] strs = { "a", "b", "c" }; とかけますが、 Mapを簡単に初期化する方法はありませんか?
>>238 そもそもプリミティブ型ってMapに入れられたっけか?
>>236 そういうバッチファイルを作ればいいのね。
>>238 このインターフェースを使えばいいよ。
public interface EasyInitable
{
public void easyInit();
}
242 :
デフォルトの名無しさん :03/07/19 19:55
解説書には cd \ディレクトリ名 javac ファイル名 ↑のように書けとあったのですが、うまくいきません
レスありがとう。
>>239 失礼。プリミティブ型ではなくてStringを入れるつもりです。
>>241 ちょっとよくわからないのですが、
演算子の多重定義みたいなことをやるということでしょうか?
>>238 map.put(A, B); <= これをクリップボードに入れておいて、
ペーストの連続。
コピペとか、自動的に生成するのがJavaの王道
245 :
デフォルトの名無しさん :03/07/19 19:58
どうしてもコンパイルできないんです。 javacは操作可能なプログラム、バッチファイルとして認められていません。 と出ます
すみません。 よく見てもどのようにパスを通すのか分かりません。 なんと入力したらいいのですか?(環境変数のとこ)
Javaハウスって何気にバカが多いな
>>248 ちゃんと読んでないだろ?
こんなの分からないとプログラムなんて絶対できないよ。
ささ、VBとかDelphiでもやってなさい
<version number>の ところに入れるのは Java(TM) 2 SDK, Standard Edition 1.4.1_03なら 1.4.1_03の部分ですよね?
当然違います。
>>251 エクスプローラでフォルダを開いて、アドレス欄をコピーするのだ。
>>238 Mapの初期化は
Map map = new HashMap();
最後の;
ツーかJavaではバイナリデータをぐりぐり弄くれないんだよね。
Javaアプリケーションはjar形式で配布する訳ですが、 その場合、Javaのバージョンは1.1とかもっとも古いのにすべきですか? マカーやPC詳しくない人に配っても動くようにしたいのですが。 ちなみに、配布したいアプリは大量のテキストファイルを一括変換するツール (GUIなし)なので、本当は1.4を使いたいんですがね・・。
バカにはね。
>>258 そういうアプリはどちにしても
JRE入れないと動かないんじゃないの?
JRE入れるってことは、どうせなら1.4入れるので
1.4でも問題ないかと・・・
>>260 なるほど・・容赦なく1.4でつね。参考になりました。
jarファイルにjarファイルを含めたいのですが、 含んだjarファイルをクラスパスに含めることができません。 どこかにパス情報を書き込むのでしょうか?
>>262 ああ、おれも複数のJARを一つにまとめればそのファイルCLASSPATHすればOKかなって思ったことがあったよ
多分これやりたい?↑
結局、そのやり方ダメだった
試してないけど一度全部展開して整理して
もういちどJARに固めれば出来るかなと思ったりもして・・・
266 :
デフォルトの名無しさん :03/07/20 02:15
>>264 ClassPath属性に、「自分自身が、中に含んでいるJar」って指定できたっけ?
いや、無理だと思いまつ
264は
>>263 が言ってるみたいな
クラスパスの設定をサボることが目的かと思って書いたんす
ほんとに一つのファイルにまとめたいなら
クラスローダ書きませう、ということで
268 :
デフォルトの名無しさん :03/07/20 02:51
>>267 あれ?
hoge/hige/jar:hage/huge
とかいうURI指定方法なかったっけ?
270 :
デフォルトの名無しさん :03/07/20 03:26
271 :
デフォルトの名無しさん :03/07/20 04:20
mysqlとjavaを使ってるのですが、日本語を扱うのがうまく行きません。 mysqlそのものだけを使った場合はきちんと扱えるのですが、javaからjdbcを 使って接続すると日本語が「????」という感じになってしまいます。 なにが問題なのでしょうか? ちなみにjdbcドライバのバージョンは3.0.8なので、2.0.14と違って日本語は正 常に扱えるということになってるのですが・・・
272 :
デフォルトの名無しさん :03/07/20 04:27
>>271 そういうときの基本:
byte[] array = resultString.getBytes("ISO-8859-1");
でとってきたarrayをダンプしてみる。
>>272-273 どうもありがとうございます。
原因がなんとなく理解できました。
なんか自分の頭の悪さにウンザリします。
相談なのですが・・・ あるメソッドで、メソッドの引数を無名インナクラス内で使おうとしています。 例) public void init(String message) { addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { new JDialog(owner, message); // <- ここ } // 省略 このとき、「messageがローカル変数 status は内部クラスからアクセスされます。final で宣言される必要があります。」 と、出るのでメソッドを public void init(final String message) としたらエラーは出なくなって、期待通りの動作をしているのですが、これってアリなんですか? アリだとしても、行儀が悪いとか問題点とかありますか?
エラーメッセージのとこ 「ローカル変数 message は内部クラスからアクセスされます。final で宣言される必要があります。」 でした _| ̄|○
277 :
デフォルトの名無しさん :03/07/20 06:15
>>275 普通です。
つうか、他に方法ありません。
そこにfinal書くのって気持ち悪い・・
ああ、俺もいまだに無名クラス時のfinalって気持ち悪いな なので、無名クラス自体あまり使っていない
280 :
デフォルトの名無しさん :03/07/20 07:12
「気持ち悪いから」などという理由で、便利な機能を使わないというのは いかがなものかと。もしかして、thisにMouseListenerをimplementする とか?そっちはネームスペースを汚染してる(メソッドシグネチャのコン フリクトが起きる可能性がある)ので、気持ちわるいどころじゃなくて有 害だと思うけど。
>>280 うーん「気持ち悪い」っていうのは
なぜ、finalしないといけないのか分からんのですよ文法的に・・・
あと、「thisにMouseListenerをimplementする とか?」
これはやってません、アクション自体もぼくの場合オブジェクトにしますから
>>281 ローカル変数をfinal宣言しない→ローカル変数が、初回に参照を
代入されたあとに変更される可能性がある→もし変更されるよう
なら、内部クラスの変数呼び出しは変更前、後のどっちを参照す
るのよ?ということかと。
ローカル匿名内部クラス程度で記述できるごく短い手続きを、遠く離れた 別の場所に書くのは、多少保守性が低下するかも、と思うなあ。 だけど、賢いIDEを常に使うなら、クラス間の参照関係なんか簡単に行き 来できるから、問題ないのかもモナー。 オイラは、あいだを取ってこうすることがおおいな。親クラスはinterface を継承しているわけではないから、好き勝手なメソッドシグネチャにできる ので、ネームスペース汚染はないですお。 public void init() { addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { handleMouseClicked(e); } } } //privateで書けるのです。 private void handleMouseClicked(MouseEvent e){/*何か*/}
>>283 MouseListenerをimplementsしてないクラスが突然MouseEventを引数にとったメソッド定義してるのは気持ち悪くない?
285 :
デフォルトの名無しさん :03/07/20 11:18
com.aa.bb というパッケージがあって com.aa.bbにあるクラスの親クラスは com.aaに書いておいたがいいとかいうのはありますか? 何がいいたいかというと、 親クラスがあって、子クラスがあるわけで、 おなじパッケージに継承元をおくよりも 一つ上の階層におかなきゃならんのかなーと 思ったのです。 そういうような慣習的なコーディングのルールってありますか?
>>284 283じゃないけど俺の使ってるIDE(SunOneStudio4)では
イベントのコードを自動生成させるとそう出力されます。
自作のInterfaceならともかく、リスナーごときでインプリメントなんてしない。
おれなら、 そういうイベントアクションをオブジェクトにする 今の場合なら MouseListenerをimplementsかMouseAdapterをextendsしたオブジェクト作っておく MouseAdapter action = new HogeAction(some);//some:アクションに関連つけるObject 複数 もしくは 何も無くてもいい コンストラクタで定義した引数 Component comp = new HogeComponent();//comp基本的にGUIなので何かの comp.addMouseListener(action); あるいは最初から別クラスでMouseListenerをimplementsかMouseAdapterをextendsしたComponent 作っておくとか 最初のやり方だと、ほかのComponeにも同じアクション設定できるしね
289 :
デフォルトの名無しさん :03/07/20 12:59
サープレットやjspがおける無料レンタルサーバを知ってたら教えてください。
290 :
デフォルトの名無しさん :03/07/20 13:07
WikiやStructured textなどの構造化テキストを処理するサーブレットを作ろうと思っています。どのような構造化テキストの記法でもよいのですが、構造化テキストのためのjavaライブラリってあるでしょうか?
>>290 俺は、WikiやStructured textまったく分からんので
勘で答えるがw
こういうときこそVelocityつかうとか?(ApacheだったけJakartaだったけ?)
292 :
デフォルトの名無しさん :03/07/20 13:18
>>291 これらでは、プレインテキストを使ってHTMLを表現できます。例えばstructured textでは
「*強調したい部分*」=「<strong>強調したい部分</strong>」
「_下線部をつける部分_」=「<u>下線部をつける部分</u>」
294 :
デフォルトの名無しさん :03/07/20 14:30
>>291 Velocity情報、ありがとうございます。しかし>292のような変換はできな
いようです。置き換えや簡単な繰り返しはできるんですね。
>>293 MobWikiは、私の欲しいライブラリ的なクラスを含んでいるようです。これ
からコードを眺めてみます。助かりました、ありがとうございました!
296 :
デフォルトの名無しさん :03/07/20 15:47
今までC/C++を使ってきて、最近Javaにも手をだし始めた者です。 文法などは一通り覚えたつもりですが、Java風のコードを書くには どうすればいいのか悩んでいるところです。 例えば、エラーが発生したときエラーコードを戻り値として返すような コードは書かず、例外を飛ばした方Javaっぽい?とか・・・ C/C++言語風にならず、いかにもJavaなコードを書くために 参考となるようなサイト・書籍等を教えていただけないでしょうか? (文法やらSwingの使い方やらを紹介しているだけのものではなく)
>>296 がんがん好きに作ればいずれ分かるよ。君にセンスがあればね。
標準API 使ってるうちに、「自分が誰かに提供するとしたらこうすればいいかな」
とか身に付くから。
298 :
デフォルトの名無しさん :03/07/20 16:20
J2SE1.4のLoggingとJakarta Log4Jって、どっちがパフォーマンスいいのかな?
とりあえずcommons-loggingで何とかしとくかな。
301 :
デフォルトの名無しさん :03/07/20 16:53
>>296 とにかくたくさん作るといい。
自分が便利だと思う方法が一番だよ。
あと、CとC++はかなり違う。
C++とJAVAはかなり似てる。
それから他人のソースを読むのもありかな。
JAVAならTomcatとかがいいかも。
CならLinuxとかがいいかも。
レスありがとうございます>all まとめてみると、 ・普通に使う ・気持ち悪いけど使う ・クラスに implements MouseListenerとかして別メソッドで実装する ・無名インナクラスから別メソッドを呼ぶ ・無名インナクラスではなく、別classにしてしまう 用途次第ってことでしょうか。 今回の私の用途に限っては、再利用とかしない上、 classが肥大化しつつあるためメソッド増やさず、引数にfinalつける方法でいきます。 どうもありがとうございました。 # MVC意識すると java.awt.Frameとか javax.swing.JFrameを継承したクラスって肥大化しないですか?
>>305 それほどでもないだろ?
ちなみにFrameはViewの用途で言ってるよね
>>306 いや、Viewだけの時もそうだけど、Controllerを兼務した時に、
Action用に出入り口たくさん作ったりしません?
いえ、ぼくの場合ActionはActionで別クラスにしちゃいますので、 Frameはボタンとかその他のコンポネを貼るだけのものです もちろん、どんなコンポネがあるのかとか、テキストフィールドなら入力されている文字はなんなのかとか、 どこかで知らないといけないので それを監視するクラスも作ります
309 :
デフォルトの名無しさん :03/07/20 18:33
JAVAをこれから学びたいと思っているのですが、 WindowsのソフトウェアをJAVAで開発するに当た って、スタンダード的存在となっている開発環境は ありますでしょうか。 もしよろしければ、教えてください。
311 :
デフォルトの名無しさん :03/07/20 21:00
JFrameで作ったフレーム内にもう一つJFrameを起こすことはできますか? 普通に作ってウィンドウが二つになるのを防ぎたいのですが。
言葉足らずなので付け足し syseditのウィンドウみたいに、ウィンドウの中にウィンドウが 複数存在するようにしたいのですが、それについて知りたいという意味です。
>>311 JDesktopPane を参照せよ。
中にできるのは JFrame ではないが。
(゜д゜( 人 ) =3 プ
315 :
デフォルトの名無しさん :03/07/20 21:28
よく書籍のサンプルなどで クラスAのなかでクラスAをインスタンス化するような 書き方をみるのですが、 自クラスのなかで自クラスをインスタンスするって いうのがよくわかりません。 どういうメリットがあるのですか? またどういう場面で使えばよろしいのですか?
俺も
>>316 う〜ん、そういわれてもなぁ・・・。
>>317 ドライバですか。
javaでドライバを作るときに活用するということですか?
>>320 シングルトンというのはなんですか?
>>315 そう言うことやってるのはstaticメソッドの中じゃない?←これマジでヒント
まあ、外部からnewするのと内部でnewするのと大して変わらん
JFrameを閉じるにはどうすればよいですか? 「JFrame 閉じる」で検索してもSystem.exit(0);でアプリを終了させる 方法しか出てきませんでした。
324 :
デフォルトの名無しさん :03/07/20 22:20
JFrameを継承したクラスをしようしてますが、 ウィンドウを最大化するにはどんなメソッドを使えばいいのですか?
>>321 ドライバ→クラス内のstatic mainメソッドでインスタンスを作る(単体テスト用)
シングルトン→インスタンス数を制限したいとき予め自分で作っておく
ただし、他人には作らせない(コンストラクタをprivateに)
>>323 WindowClosingイベントをEventQueueにポストする
>>324 setExtendedState(jdk1.4-)
>>323 非表示にするだけならsetVisible(false)
この場合イベント処理とかののスレッドは生きたまま
ウィンドウを本当に破棄するならdispose()
328 :
デフォルトの名無しさん :03/07/20 22:53
329 :
デフォルトの名無しさん :03/07/20 23:02
初歩的すぎる質問ですみません。 JFrame内でMenuBarを使っていたのですが、 Menubar→JMenuBarとしてソースを全て直したところ、 setMenuBarメソッドが適用できなくなりました。 しかし、setJMenuBarなんてメソッドもありませんでした。 JMenuBarをJFrameに設置するメソッドを教えてください。
すみません、ありました。逝きます。
331 :
デフォルトの名無しさん :03/07/20 23:10
初歩的すぎる質問 javaというものはきちんと使わなくなったオブジェクトは nullを代入したりdisposeしたりして 破棄しておかないといけないと聞きましたが、 JFrame内にボタンやテキストエリア等色々配置しているのに、 終了時は右上の×ボタンを押すだけ全てを終了してしまう 私のソースは間違いなんでしょうか? ×ボタンが押されたら、そのイベントを拾って あらゆるオブジェクトにnull代入なりdisposeなりする メソッドを用意しておくべきなんでしょうか?
> javaというものはきちんと使わなくなったオブジェクトは > nullを代入したりdisposeしたりして たいてえ不要です。
setJMenuBar(menubar); で無事コンパイルも通ったのですが、 何度やってもメニューバーが表示されません。 awtのMenuBar,Menu,MenuItemを全て swingのJ〜にしただけなのに・・・ どなたか、このアホに愛の手を・・・
>>334 メニューバーに項目追加しないと何も見えないよ
「ファイル」や「設定」といった項目追加
さらにそれぞれに「開く」とかまあ普通のアプリみたいにしないと・・・
一個一個追加していくしかない
>>337 関数の語源を知らないようだな。
面倒な部分はまとめて関数にする。
すみません、長いですが、ソース張らせてください menubar=new JMenuBar(); //ここからメニュー1 menu1=new JMenu("ファイル"); menuitem1[0]=new JMenuItem("開く"); menu1.add(menuitem1[0]); menuitem1[0].addActionListener(this); menuitem1[1]=new JMenuItem("hoge"); menu1.add(menuitem1[1]); menuitem1[1].addActionListener(this); menuitem1[2]=new JMenuItem("閉じる"); menu1.add(menuitem1[2]); menuitem1[2].addActionListener(this); menubar.add(menu1); //ここからメニュー2 menu2=new JMenu("help"); for(int i=0;i<menuitem2.length;i++){ menuitem2[i]=new JMenuItem("hoge"+i); menu2.add(menuitem2[i]); } menubar.add(menu2); //最後にメニューバーをフレームに設置 setJMenuBar(menubar); コンパイルもしっかり通っているのですが・・・表示されないのです。 初歩的ですが、どうか助けてください
>コンパイルもしっかり通っているのですが・・・ 当のファイルだけ修正以前のクラスファイルだとか・・・
>>338 あ?言ってる意味が分からんのですが?誤爆なの?
>>340 一応チェックしてみました。大丈夫みたいでした。
>>339 一応きいとくけど、メニューバーを貼っている相手のペイン(this)は、
画面に貼ってあるのか?
>>343 すみません、初心者ゆえ言ってることの意味が理解できません
main関数を持つのはJFrameを継承したクラスで、
このクラス内部で上記のような記述をしていました。
現在は改良して
getContentPane().add(menubar,BorderLayout.NORTH);
したのですが、また問題がおきております。
相変わらずMenuBarが表示されていないと思いきや、
ポインタを持って行き、クリックするとJMenuItemが
ずらっと出てくることが確認できました。
つまり、不可視ながら存在しているらしいのです。
ここで、JMenuのAPIを見たところ、コンストラクタは
引数無しのものしか存在しないのに、私の記述は
menu1=new JMenu("ファイル");
としている点が不可視を生んだのでは?と考えてます。
しかし、存在しないコンストラクタを呼んでいるのに
コンパイルが通るのが不思議だ・・・
この不可視問題を直す方法をご教授ください。
>>344 あるよ
JMenu(String s)
指定された文字列をテキストとして持つ新しい JMenu を作成します。
なんか本読みながらやったほがいいんじゃないの?
ど真ん中にテキストエリアをでっかく配置したら なぜか普通に動作するようになりました。 つまり、可視になりました。 お騒がせしてすみませんでした。
>>347 それはJMenuじゃなくてJMenuBarだろ
>>348 バタリ (o_ _)o 〜〜〜 †
ほんっとすんません。
しかしながら、Menuが不可視だったことと、
BorderLayoutの真ん中にでっかくテキストエリアを配置したら
可視になったことが永久に謎になってしまいそうです。
今日はみなさまお疲れ様でした。
また質問しに来ます。
くんにゃ
351 :
デフォルトの名無しさん :03/07/21 09:53
JAVAにPerlのGDやMAGIKのようなグラフィック関連の関数ありますか? GIF画像のグラフを作りたいんだけど。
352 :
デフォルトの名無しさん :03/07/21 09:57
GIFか・・・そういえば期限が切れたんだっけな。
353 :
デフォルトの名無しさん :03/07/21 10:21
java.utilにあるObservableはクラスになっていて、 別のクラスから継承しているクラスをobservableとして 使いたいときに困りました。 そこで、Observable interfaceを作ろうと思いましたが、 すると、Observerに通知する部分をimplemetsするたびに 書くことになってしまいました。なんかいい方法ありますか?
>>353 「UMLによるJavaオブジェクト設計」という本にいい方法が書いてあったような…忘れた。
ま、そういうときはオブジェクトコンポジションで解決するのが定石。
public class Mona{
private Observable observable;
public void notify(){
observable.notifyObservers();
}
public void setHoge{
...;
notify();
}
}
委譲メソッド(ここでいうMona.notify())を各クラスに書く必要があるが、
notify()を毎回実装するよりははるかによい。
IDEによっては委譲メソッドを自動生成してくれるので楽チンだよ。
>>354 なんと。私、「UMLによるJavaオブジェクト設計」持ってました。
読み足りなかったようです。
それでいってみます。
でも、こういうときC++みたいな多重継承ができたらいいなー、
とちょっと思ってしまいます。
特に害が出るような多重継承でもなさそうだし。
mainメソッドはなぜpublicでstaticでvoidなのですか?
何か玄人さんの抜き打ちテストみたいに見えるけど、挑戦してみる。
>>356 public : 外部から参照するから private にするのは当然。
もちろん、いちいち protected にするメリットも全くなし。
static : コンストラクタを private にしたい場合困る。
void : 実行中のエラーや結果の、判断とユーザへの通知は main より内側で完結すべきだから。
(※しかし一般的なアプリケーションと同じく OS 依存の方法で通知させたいときもあるから、
それは System.exit(int) で行う)
>>356 public
外から見えないと叩けない。
static
インスタンス生成してない状態から呼びたいから。
void
設計思想。
>>357 いきなり間違った・・・「private にしないのは当然」。
>>359 同じことだけど、「publicにするのは当然」と言おうよ。
ヘタレなのですが、SAXParserのparse()に String hoge = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>........"; を食わせたいときどうすればいいでしょか?
363 :
デフォルトの名無しさん :03/07/21 14:54
一番いいエディタはなんですか?
メモ帳
getBytes("UTF-8")とByteArrayInputStreamでできました〜 オジャマシマシタ
367 :
デフォルトの名無しさん :03/07/21 17:20
ちょっと気になったんだけど、Antを使いこなせてる奴って どの位いるのかな? 個人的には、ほとんどいないと思うんだけど。 みんなIDEでササッとビルドしちゃうだけ。 最近Antの勉強しててかなり面白かったもので。
368 :
デフォルトの名無しさん :03/07/21 17:25
継承について質問させてください class Super { public static int y = 10; } class Sub extends Super { Sub.y = 20; // static int y に代入 System.out.println( Sub.y ); // 20と表示 System.out.println( Super.y ); // 20と表示 } となってしまうんですが、static int yはSuperとSubの共通のものになるんでしょうか?
はい
>>368 正確には違うはず
yはSuperがもっている
で、今回Subはyという変数をもっていなかったので、
Super.yに代入された
ためしに以下を実行してみそ
class Super {
public static int y = 10;
}
class Sub extends Super {
public static int y = 20;
System.out.println( Sub.y ); // 20と表示
System.out.println( Super.y ); // 20と表示
}
>>370 Subでyを宣言すると、SuperのyとSubのyは別物として振舞いますよね?
ちなみに同じ名前のstaticメソッドをSubに宣言したらオーバーライドできました
「staticメンバーはオーバーライドできない」って本に書いてあったんだけどなぁ。。。
ちょっと混乱気味
>>370 すんません それと
>>「yはSuperがもっている
>>で、今回Subはyという変数をもっていなかったので、」
ってありますけど、Subはyを持ってないんですか?
つまり継承されてないってことでしょうか?
>>371 staticメソッドの場合、オーバライドと言わずに「隠蔽」と呼ぶそうだ。
ところでstaticメソッドとインスタンスメソッドのバインドの違いはわかってる?
staticメソッドはコンパイル時に、クラスの指定に応じて静的にバインドされるが、
インスタンスメソッドは実行時に、オブジェクトの型に応じて動的にバインドされる。
ちなみに変数のバインドもstaticメソッドと同じルールで
(コンパイル時に指定したクラスに応じて静的に)バインドされる。
ま、そんなことを注意するコードを書くことはないし書いちゃいかんので
気にする必要はないんだが。
>>372 そう。
継承はされていない。
static宣言すると、それはClassに固有の変数となる。
ただ、今回は
Subにyという変数がみあたらなかったので、
親Classに探しにいって、そこにたまたまstatic int y
があったので、それに代入された。
ちなみに、static メソッドはオーバーライドできません。
staticメソッドを呼ぶときは
Class名.メソッド名で呼ぶのが普通。
インスタンスから、呼び出した場合は、そのインスタンスの
Classメソッドが呼ばれてしまうのであたかもオーバーライドしたかの
ような振る舞いをしただけ。
>>374 >親Classに探しにいって、そこにたまたまstatic int y
>があったので、それに代入された。
継承されてるじゃん。
なるほど 自分でも調べてみてなんとなく理解できつつあります オーバーライドではなく隠蔽なのですね 373と374の文章コピペしてもう一度検証してみます サンクスでした!
>>374 インスタンスのClassメソッドではなくて、その変数の
型のClassメソッドが呼ばれるのか・・・
いまためしてみた。
これを実行してみたらよくわかるとおもう。
public class Super {
public static void methodA() {
System.out.println("this is Super methodA");
}
public void methodB() {
System.out.println("this is Super methodB");
}
}
public class Sub extends Super{
public static void methodA() {
System.out.println("this is Sub methodA");
}
public void methodB() {
System.out.println("this is Sub methodB");
}
public static void main(String[] arg) {
Super sub = new Sub();
sub.methodA();
sub.methodB();
}
}
378 :
デフォルトの名無しさん :03/07/21 18:43
これでちゃんと動かないのですが、なぜでしょうか? try{ String command = "awk '/keyward/{print $3}'" + file; //String command = "ls" + file; System.out.println(command); Process pr = Runtime.getRuntime().exec(command); pr.waitFor(); InputStream is = pr.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while((line=br.readLine())!=null){ System.out.println(line); } }catch (Exception e){ System.err.println(e); System.exit(1); } なお、コメントアウトしてある ls の方では正常に出力されるのですが、 awk の方では何も出力されません。 file は String 型で、コンソールで、awk '/keyward/{print $3}' file としたときには問題なく出力されます。
>>375 いやSubはSuperを継承してはいるけど
static int yは継承していない。
yはSuperに固有の変数
継承時のstaticメンバの扱いって結構みんなあやふやかもね もしstaticメソッドが継承されたとしたら mainメソッドも継承されてエラいことになるんじゃないか?
javaで簡易のデータベースを利用したいと考えています #他のDBMSを別途にインストールするほどではないので Javaのみで簡易DBMSを実装できるクラスのようなものは無いでしょうか?
>>381 えらいことになるか?
子クラスに親クラス用のドライバが付いてくる。
子クラスは親クラスのメソッドとフィールドが存在することは保証されるから問題なく動く(結果は知らんけれど)。
privateメンバーは継承されません
385 :
デフォルトの名無しさん :03/07/21 19:02
これからJavaを学ぼうとしている者です。C, VBの経験があります。 Javaの書籍でバイブルと呼ばれてるものは何ですか? 書店に行くと、様々なものが怒涛のように並んでいて何を買うのか迷ってしまいます。 Javaの基本的なことは理解しています。やはり、バイブル書籍は手元に置いておきたいものですね。
>>382 単純に、システムに現れるいくつかのオブジェクトを永続化したいとだけ
考えているのなら、「Java オブジェクト 永続化 Serializable」あたりを
キーワードにGoogleで探してみるといいよ。今やったらこんなの見つかった。
「vsd for Java」
http://cm55.cool.ne.jp/vsd/
390 :
デフォルトの名無しさん :03/07/21 19:26
文字列で渡される 文字整数2つを 割って比率を%(少数二位まで表示)で あらわしたいのですが、どのような方法がお手ごろでしょうか? なんだか頭が混乱してしまって・・。 シンプルなコーディングが思い浮かばないんです。
>>388 うん。ここまでやっても見えなかった。
public class SuperClass {
private int privateField;
}
public class SubClass extends SuperClass {
public static void main(String[] args) throws Exception{
SubClass class1 = new SubClass();
java.lang.reflect.Field field = class1.getClass().getDeclaredField("privateField");
System.out.println(field.getInt(class1));
}
}
実行するとNoSuchFieldExceptionが起きる。
>>385 あなたに合うかどうか分かりませんが
ブラックブックなんてどうでしょう?
いろいろ試してみると、 command の中に ' が入っているとうまく動かないようです。 String command = "awk /keyward/ " + file; としてやると、対応する行が表示されました。 この行の3番目の要素を得たいのですが、 String command = "awk '/keyward/{print $3}' " + file; としても、エラーにはなりませんが、何も出力されません。 なぜこのようなことが起こるのでしょうか? よろしくお願いします。
書き忘れましたが、 String command = "awk '/keyward/' " + file; でもダメなんです。 なので、' が原因なのはほぼ間違いないと思います。
>>394 UNIXでは``で挟まれたコマンドの結果がそこに入ります。
echo `ls`
↑
lsと同じ出力結果。
>>394 ぐだぐだ連続投稿してる暇があったらAPI嫁!
>API嫁! 何を訳の分からんことを?APIはアプリケーションから呼び出すもんですよ。
・・・・・APIリファレンス嫁・・・・・
>> 395 私が聞きたいのは、コンソールで awk '/keyward/{print $3}' file としたときの出力を java のプログラム中で取り込みたい、 ということなのですが、これと ` の用法とは関係なくないですか?
なくなくない?
どう関係あるのでしょうか?
>>382 Javaでデータベースをちょこっと使いたいってこと?
HSQL なんてどうかな? Java で書かれていて JDBC で接続できる。
構成も小さく、非常にシンプルで、自作のアプリケーションと一緒に
配布するのに向いていると思う。
VB作ったプログラムで、簡単なデータの保存に Jet(.mdb)データベースを
使うような感覚かな。 Javaアプリケーション + HSQL
>>389 回答ありがとうございます
今回やりたいことは
・組になったデータを登録する
・登録したデータの中からあるキーワードに一致するデータをすべて返す
ということです
自分で調べてみたところ、javax.swing.JTable が近いのですが
GUIではなく、処理の部分だけのクラスは無いでしょうか?
>>401 ごめん。よく読んでなかった。MessageFormat かと思った。
>>378 Runtime.exec()はシェルを通さないから
コマンドがうまく解釈されないって事だよね
sh呼ぶというのは駄目かな
>>378 ,406
シングルクオートはずせば動くだろ。
command = "awk /keyward/{print $3}" + file;
>> 406 それも考えました。 String command = "/bin/sh -c awk '/keyward/{print $3}' " + file; としてもダメでした。 どうすれば・・・?
>> 407 コンソールで % awk /keyward/{print $3} file として、正常に動きますか?
>> 410 もちろん、いろいろ調べています。 それでも、問題を解決できそうなものが見つからないので、 こちらでお伺いしました。 ご紹介いただいたページにも該当する内容は見受けらないと思います。 この程度のことであれば、即答できる方がいらっしゃると思ったのですが。
shで標準入力に突っ込む
お前ら、wardってなんですか?とどうして突っ込まないんですか?
>>378 awkがエラーで異常終了しているに10ward。
pr.getErrorStream()してその内容を表示してみろ。
>>411 わざわざお前ごときのために即答しなければならない理由は無い。
しかも「この程度のこと」などというのであれば自分で探して当然だ。クズめ。
手元の環境で標準出力のコマンドが動かないのでこれで試した。
runtime.exec("kterm -name SINEBOKE"); //成功
runtime.exec("kterm -name 'SINE BOKE'"); //失敗
String[] args = {
"kterm", "-name", "'SINE BOKE'"
};
runtime.exec(args); //成功
API嫁。じゃなくてAPIリファレンス嫁。
>>415 なんか、「適当な応対で悪いことしたかな」なんて思って一生懸命調べてあげて、
いざレスしようとしたら態度が悪いんで逆上したって感じだな(w
>> 415 わざわざ調べていただいたり、テストしていただいたようで ありがとうございます。 「この程度のこと」と書いたのは、これまでにも同じ問題に詰まった方が いらっしゃるものと思い、調べなくても分かるかと思ったからです。 配列でも試していたのですが、 String command[] = {"awk", "'/keyword/{print $3}'", file}; とした場合にも awk: 1: unexpected character ''' awk: 1: unexpected character ''' というエラーが出ていました。 が、 String command[] = {"awk", "/keyword/{print $3}", file}; としたところ、うまくいきました。 ということで解決しました。 レスを書いていただいた方、わざわざ調べていただいた方、 ありがとうございました。 #awk で ' がなくてもちゃんと動作するのはなぜだろう・・・。 #調べてみます。
>>415 口は悪いがいいやつ
の典型的な例でつね
>>417 OS の実装として、コマンド名、引数は上記の exec オーバーロード例と同様に、文字列配列で渡すのが決まり。
MS-DOS の exe の実装としては、配列の物理アドレスがOS から通知されるので、自分で個々に取り出す。
UNIX では確認までしてないが、類推するかぎりで同様だろう。
だからこそ C も Java も、main では一つのコマンドライン文字列ではなく、配列として渡されてくる。
つまり本来 '' で囲む必要など無いわけだ。
しかしシェルのコマンドラインでは続けて一行で書くほか無いので、
一つの引数として区切りたいところは '' で囲む。
これはシェルが '' を外して OS に渡す(シェル=OSだと勘違いすると、ここは分からないだろう)。
だから exec に渡す String[] では無用となる。と俺は見た。
>>417 > awk で ' がなくてもちゃんと動作するのはなぜだろう・・・。
ちゃんと説明しときゃ良かったが、コマンドってshellが起動する訳で、
そのときshellが$3みたいのを展開しないように、シングルクオートで
くくってるの。で、awkにはシングルクオートを取った物が渡される訳。
だから、shell以外から起動するならシングルクオートなんていらんのよ。
逆にシングルクオートがあると、それもコマンドの引数として渡されるか
ら期待した動作をしなくなる。
要するに、
Runtime.exec("awk '/keyword/{print $3}'"); ってのは、shellのコマンドで
awk '\'/keyword/{print $3}\'' と打つのと一緒
421 :
デフォルトの名無しさん :03/07/22 01:06
javaでちょっとしたimeを作ろうと思うんだが、どうやって開発するんだ? まぢ教えて もうね、すごく簡素なime
>>417 ちなみに、
>>408 は構文ミスだね。その方法でも動くよ。
String command = "/bin/sh -c \"awk '/keyward/{print $3}' " + file + "\"";
ってすればね。
StringTokenizerを使って文字列を分割してString[]に格納するんですが、 "hoge,hero,,moe" ↑ のように、途中で文字列が存在せずに文字列がない場合でも、 null文字を格納してくれるようにするにはどうしたらいいんでしょうか。 ○"hoge","hero","","moe" ×"hoge","hero","moe" nullで場合分けとかも出来ないし・・
なんか日本語おかしいし・・
>>423 空文字列とnull文字は違う。
Javaにはnull文字って概念は無い。
new StringTokenizer("hoge,hero,,moe", ",", true);
とかすれば "," も返って来るようになるからそれで判別すれば良いのでは?
ちょっと質問なんですが、RMIって、クライアント側(実行側)にサーバー 側で用意したプログラムを走らせる事ってできるんですか?言い換えると、 クライアント側にわざわざ計算プログラムを作って置いとかなくても、サーバ 側でいろいろな計算プログラムを用意すれば済むのか?という事です。 ちょっとしたパソコンクラスタを実現できたらいいなあと思うんですけど。
>>426 クラスタって何ですか?
RMIって何ですか?
>>426 できますよ。
クラスのバイナリをサーバーからもらってきて、クラスローダーで読んで、リフレクションで実行してやれば完了です。
429 :
デフォルトの名無しさん :03/07/22 05:01
質問です。 finalizeを実行している際にそこで例外が起きても 無視されてエラーメッセージすら出してくれないのですが これはJavaの仕様がイモだからということなのでしょうか? それともそこで落とさない根深い理由があるのでしょうか?
あと、もう一つ。 ファイナライザはC++のデストラクタと違って いつ実行されるかわからないようなのですが こういう仕様なのはどうしてでしょうか? 実行される時があらかじめわかっているほうがどう見ても便利そうなのですが。。。
431 :
デフォルトの名無しさん :03/07/22 05:15
太い線を使いたいのですがどうすればいいのでしょうか? 斜線を細い線を使ってえがくと汚くなるので。
>>428 クラスタって何ですか?
RMIって何ですか?
>>429 finalizeメソッドは別スレッドで実行されているから。
そこで落としても意味が無いからです。
>>430 Object o = new Object();
list.add(o);
map.put(o, o);
逆に質問ですが、このときは、いつ呼ばれると良いのでしょうか?
>>431 Java2D使います。
ハッチングの話であれば、より簡単な方法が用意されているはずです。
435 :
デフォルトの名無しさん :03/07/22 06:01
>>430 そもそもいつガベージコレクト(ファイナライズ)するかどうかはVMの気分しだいなので、
それを期待するような実装を書いてはいけないということなんでしょう。
436 :
デフォルトの名無しさん :03/07/22 06:04
>>432 クラスタ = たくさんのマシンで処理を実行すること
RMI = Javaの分散オブジェクト仕様
>>433 ,435
えーと、つまりじゃあ何のためにファイナライザがあるのかと言う事ですよ。
「メモリ以外のリソースを解放するため」と言っても
「いつか解放されればいい」じゃ困る事もある。
GC起動前にリソースが足りなくなってしまう可能性があるから。
さらに言うとrunFinalizersOnExitが推奨されなくなったから
終了までに実行される事すら保証されない。
つまりは自分でclose()なりを別に作ってファイナライザを使わずに呼び出せってことだよね。
するとファイナライザは(*・・)σ ⌒・ ポイッポイッ
存在する事がむしろ罪になってしまうような。
存在する必要性は「少ない」じゃなくて「ゼロ」のような。
まあ、1行ごとにGC起動じゃ無駄だから デフォルトでGCのタイミングがずれてしまう事は System.gc()使えばいいから認めるとしても、 System.runFinalization()が納得できない。 回収されたらファイナライズを実行してほしいのは当たり前じゃないか。 わざわざGCとファイナライズ時期を分ける理由がわからん。
>>438 たくらみに、JDKソースに、finalizeでgrepすると、沢山引っかかります。
全て、外部リソースの開放だけを行っています。
Javaでは、エラー処理と正常処理を分けて書く事が推奨されているわけで、
保険みたいな物でしょうねぇ。
try {
}catch(Exception e) {
}
この場合、Error系のエラーハンドラは呼ばれない訳で、
クラス構造によっては、try、catchとは違う形で、リソース管理する必要がある訳で、
要するに、mainスレッドのコードが醜くならないようにしているんですね。
>>439 gcの中で、Finalizeやってたら、時間がいくら掛かるか解らないでしょーに。
finalizeメソッドが定義されていたら、finalize予約のリストに突っ込む。
finalizeは別スレッドでゆっくり行う。
FinalReferenceが切れたら、再び回収を行う。
これでいいじゃん。
>>440 >Javaでは、エラー処理と正常処理を分けて書く事が推奨されているわけで、
>保険みたいな物でしょうねぇ。
エラー処理書かなくて良いという意味では無いよ。
あれ?2chでこの話題は難しかった?
>>440 うーむなるほど、保険か。
じゃあJava言語仕様に
「解放できない資源を解放する機会が、ファイナライザによって提供される」
なんて書くなよって思うが・・・
保険と言うともう本質的な理由じゃないしな。
つまり、そのクラスを自分でしか使わない&解放忘れない自信がある
ならファイナライザは「絶対的に」必要ない物だってことか・・・
それにそれに、 C++のデストラクタは例外発生時も必ず実行される。 Javaでそういうのがほしい場合はfinally使えばいいわけだけど つまりデストラクタの方が2倍の効果でおいしい。 あと、どのJavaの本見ても super.finalize()を忘れずに呼び出せとか書いてあるけど じゃあ最初から呼び出す仕様にしろって。 これもC++のデストラクタは勝手に呼び出してくれる。 なんかデストラクタの方がいいこと尽くめだ。 ていうか、記述を楽にするためにデストラクタと同じ仕様のもの (null代入orオブジェクト変数がスコープから出ると勝手に実行してくれるメソッド) をJavaに作ってくれればいいのに。
446 :
デフォルトの名無しさん :03/07/22 09:57
限りなく初歩的な質問なんですが、 StringTokenizerで "a:b:zzz::::::::hoge"←プログラムが適宜自動生成するようにしてある を『:』区切りで読み込むときに、 4番目〜10番目に読み込んだ文字列は空であって欲しいのですが、 4回目のnextTokenはhogeを返します。 私の要望を満たしたい場合はStringTokenizer以外にいったいどんなクラスが適してますか?
>>428 JAVAすごいですね。では、そんな事をやってるサイトとか知りませんか
?できればわかりやすく、(探したんですけどどれも難しくて・・・)
>>449 こういった物は一度やってみました。RMIの流れは簡単につかんでいる
つもりなのですが、クライアントにバイナリを渡すとかそういった事はまだ
よくわかりません。たびたびもうしわけありません。
>>450 あぁ失礼、質問したいのはリフレクションの方だけね。
・サーバ側では class ファイルを byte[] によみこむ。
・RMI でメソッド通して byte[] 渡す。
・クライアントで ClassLoader を自分で実装して、defineClass() する。
(リファレンス読んで、適当に protected を実装してみる。
自分の Class を拾った ClassLoader に委譲するとかなんとか)
・すると Class オブジェクトができあがるから、getMethod して invoke したり。
3 ステップ目をうまく実装することと
(前に実装したことがあるんだが、あろうことかどっかにいっちまった。
でも 1.1 ベースだったからあまりいい参考にはならなかろう)
4ステップ目で取り出す Method の取り決め
(abstract だけ先にクライアントのパッケージ内に渡しておくとか)
だな。
もっと推奨される方法あるかもしれないけどおじさん分かんないや。
>>451 Constructor から newInstanceして、
abstract なクラスでキャストするのが一番いいかな。
453 :
デフォルトの名無しさん :03/07/22 12:07
Imageが透明色を持つかどうか判定する高速な方法はありますか?
454 :
デフォルトの名無しさん :03/07/22 18:04
Imageオブジェクトの領域内で、 img.getdotColor(100,200); みたいな感じで、指定座標の色を取得する方法ってありますか? この欲求を満たすためにはどんなクラスを仕様するべきでしょうか?
455 :
デフォルトの名無しさん :03/07/22 18:24
>>441 どうせ別スレッドで行われているんだから
GCが発見すると同時に
(わざわざキューなんかに入れずに)
finalize実行しちゃえば良いじゃん。
あれ、でも別スレッドで行うって事は
同期の問題が出てくるよな。
staticフィールドにもアクセスできちゃうんだから。
>>453 高速かどうかは知らないので、俺を「無知」とののしる奴が出るまではこれ使え。
ImageConsumer ic = new ImageConsumer() {
public void setColorModel(ColorModel cm) {
cm.hasAlpha(); //これで分かる
}
//他は略
}:
ImageProducer ip = IMG.getSource();
ip.addConsumer(ic);
ip.startProduction(ic);
ip.removeConsumer(ic);
jpg なら false, png なら true ・・・残念ながら、必ず true 。
すいません。超初心者です。 テキストフィールドtf1の文字をint型に変えるのってどうしたらいいんんでしょう??
TextField tf=new TextField("初期値"); try{ int parameter=Integer.parseInt(tf.getText()); } catch(Exception e){ e.printStackTrace(); } まーなんだ、これくらい調べような。 ってかGUIか・・・がんばれよ
>>458 そもそもテキストフィールドの値を取り出す方法がわかってないのだな?
それでそういう質問になるのだろう。
問題の切り分けができるようになることが必要だ。
1. TextField から取り出す方法を探す→ getText() で String で取れると分かる
2. String を int に変える→API が提供してくれる機能は常にメソッドを介すのであり、
String クラスに見つからないなら、当然次は int 側で探すことになるが int はクラスではない。
こういう場合は Integer クラスで探す。
3. intValue() や parseInt() が見つかる。
あとは
>>3 の A2 からたどって読め。
>>459 早々にありがとうございます!!
頑張ります!!
>>460 見落としてしまってました。すいません。
丁寧にありがとうございます。
頑張ってみます。
463 :
デフォルトの名無しさん :03/07/22 23:34
464 :
名無しさん :03/07/22 23:51
数値を入力して、sinやcosなどの関数を用いて、座標を計算し、javaアプレットで図形を表示したいのですが、どのようにしたらいいでしょうか?
>>464 >sinやcosなどの関数を用いて、座標を計算し
なぜ座標計算に三角関数必要なん?
あと質問が抽象的過ぎて誰も答えないと思われ。
とりあえず
・どんな図形を描きたいか
・どんな数値を入力させるか
ぐらいかいてみれば?だれか暇な人がコード書いてくれるさ
466 :
デフォルトの名無しさん :03/07/23 00:05
>>458 ,464
初心者レスといっても何でもかんでも書くのはどうかとおもうけど・・・
まずは本読んで勉強しましょう。
464のようなことをするのならば
クラス作ってAppletを継承します。
そして、init()メソッドをオーバーライドして初期設定当を記述します。
Appletクラスのpaint(Graphics g)をオーバーライドしてそのインスタンス引数
であるgのメソッドで描画します。
アニメーションのよう動きを加える場合は、repaint()メソッドを使うと
ちらつきが緩和されます。
467 :
名無しさん :03/07/23 00:16
>>465-466 レスありがとうございます。
円形に表示させる部分があるんで三角関数が必要になってしまうのです。
もう少しクラスについて説明してもらえますか?
それから描画は静止画です。
>>467 円ってdrawOvalとかそう言うんじゃダメなのか?
>>444 >つまり、そのクラスを自分でしか使わない&解放忘れない自信がある
>ならファイナライザは「絶対的に」必要ない物だってことか・・・
そんな事いったら、「間違わない自信があるならオブジェクトのカプセル化は必要ない」
とか「一つしか作らない自信があるならsingletonパターンは必要ない」とかになって、
結局何も必要なくなるよ
房ですみませんがこれから伸びるぞって言語って何ですか?JAVAはどうなんですか?
メソッド名のつけ方で getHoge GetHoge 前者が主流みたいなことを本で読みましたが、自分は後者のほうがしっくりきます。 普通はどっちでやっていますでしょうか。好き好きといわれたらおしまいですけど
>>446 1.4以降ならStringのsplitかな。
String[] str = "a,,b".split(",");
for(int i = 0; i < str.length; i++){
System.out.println(i+":" + str[i]);
}
で、
0:a
1:
2:b
ってなるよ。
>>471 Javaなら前者。C#なら後者だろう
C#はほとんど知らないからどうだか知らないけど、
Javaは規則に従わないと困る事あるぞ
Beanとか
>>470 どの "言語" も特に伸びようはない。伸びるのは API やリソースの充実。
言語とはあまり関係ない。
>>471 Java でやるかぎりでは前者。人に見せるつもりなら合わせるべし。
>>471 Javaの世界でまともな人間の書いたコードの9割以上前者。
逆に、
C#の世界ではまともな人間の書いたコードの9割以上後者。
この程度のこと言語ごとに書き分けられない奴は何やってもダメ。
Cross-Languageなコードを書くとき以外は大勢に従っておけ。
どうもでした。 しばらくC#をやってて、JAVAはこれからなもので違和感はありますが、がんばります。
初心者ですが、JavaのことをJAVAって書くやつがいなくならないのはなぜですか?
480 :
デフォルトの名無しさん :03/07/23 16:54
アプリケーション作成で、 縦横スクロールペイン付の2次元の表を表示させるとき、 サイズを指定したいときはどうすればいいですか? あと、同じようなのをもうひとつ表示したいんですけど、 ウィンドウの構成ってどうやればいいですか? お願いします
481 :
名無しさん :03/07/23 16:57
ファイルから行列を読み込んで、2次元配列に格納したいと思うのですが、どのようなソースになりますかね?
ボールを放物線を描くように動かしたいのですが、うまくいきません。 ballMove()というメソッドを作って、これを呼び出すたびにボールの座標を更新するようにしたいのですが。 どなたか知恵をお貸しください。
>>481 結果的にその2次元配列がどのようになればいいんですか?
484 :
名無しさん :03/07/23 17:58
>>483 例えば
1 3 5 7
2 1 2 8
1 4 2 5
2 3 1 4
このような4×4行列をメモ帳などに書き込んであるとします。
これを読み込んで、2次元配列A[4][4]に格納したいと思っています。
結果は
A[1][1]=1
A[1][2]=3
A[1][3]=5
A[1][4]=7
A[2][1]=2
:
:
となります。
485 :
デフォルトの名無しさん :03/07/23 18:15
例外が発生しないのですが、なぜなんでしょう? Calendar cal = Calendar.getInstance(); cal.setLenient(false);//厳密チェック cal.set(2003,2,29); try{ java.util.Date date1 = cal.getTime(); } catch(java.lang.IllegalArgumentException e){ System.out.println("2003年2月29日は存在しません"); }
>>485 釣りですか?
cal.set(2003,1,29);
>>484 こんなかんじ?
String unko[][] = new String[10][10];
public void unko(File file) {
String value = null;
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(file));
for(int i=0;(value = in.readLine()) != null;i++) {
array[i] = value.split(/*/ 文字列と文字列を区切る文字 /*/,10);
}
} catch(IOException exp) {
System.err.println("無念ズバシュ");
} finally {
//めんどいから省略
11行目の配列、arrayじゃなくてunkoね
>>487 ありがとうございます。
Calendar.MONTHはゼロスタートだったのですね。
491 :
名無しさん :03/07/23 19:12
二次元配列使うの勘弁してくれよ、VBじゃないんだからw
二次元配列を使いたければ、虹板に逝きなさいってこった
2次元配列を使わないコーディングスタイルなんてもんがJavaにはあるんでつか? それともMatrixクラスなりで実装しろっていう意味か。
495 :
デフォルトの名無しさん :03/07/23 23:10
先ほど始めてjavaを触った次第でしてもしかするとおかしなことを聞くかもしれませんが・・・ アプレットを使う時、drawStringというのは文字列しか表示させられないのでしょうか? 下記の記述ではエラーがでてしまうのですがこの場合どうすればアプレットに4を表示させられるのかわからないです どうも本を読んでも要領を得ないもので、ご教授願えないでしょうか import java.applet.Applet; import java.awt.Graphics; /* <APPLET CODE="tatoeba.class" WIDTH=250 HEIGHT=100></APPLET> */ public class tatoeba extends Applet { public void paint(Graphics g) { int a,b; a=1; b=3; a=a+b; g.drawString(a,30,40); } }
すみません、ageてしまいました。 反省
>>495 質問上げるのはかまわんけど
aってStringじゃないじゃん?
がんばってStringに変換してくれ
(´-`).。oO(ニュー速+に誤爆った)
void String#drawString(String str, int x, int y)
void Graphics#drawString(String str, int x, int y)
アホでした 目から鱗でした 一から出直して来ます しょぼい質問に答えてくれてありがとう497さん
501 :
デフォルトの名無しさん :03/07/24 01:53
Javaで出会い系サイトを作るのは、簡単ですか? 1人で作るのなら、どの位時間がかかるんだろ。 Java初級者で。
>>501 いちいち Java 使うのは無駄。絶対向きません。
ちなみに、ちまたの自称Java初級者と同じく、
実は全ての言語の初級者であるなら、半年から1年くらいと見てください。さようなら。
504 :
デフォルトの名無しさん :03/07/24 04:15
よく「IBMのjavavm」って聞くんですけど、 それって存在するんですか? またそれはWinxpのプログラムのアクセスと規定の設定の javavmのところで選択してappletできるものなんですか? あるいはクライアントサイドアプリを走らせることができるんですか?
505 :
デフォルトの名無しさん :03/07/24 09:51
>>503 ありがとうございます。
それだけ分かっただけでも良かったです。
Javaじゃなければ、何を使うことが多いんですか?
初級者でも、半年から1年でできるなんて驚きでした!
>>505 一旦 WebProg で聞いて、理解してからム板の別スレ。
あるいは、帰ってくる必要ないかも知れん。
期間は、夜っぴて毎日やれば半年でも短いかもしれんし、
1日30分やって頭痒くなってきて寝ちゃうなら 10年かかるかも知れん。
507 :
デフォルトの名無しさん :03/07/24 10:49
スーパークラスの変数をサブクラスから呼ぶ場合 this でも super でも呼べるみたいなんですけど どんなときに使い分けるんでしょうか?
>>507 サブクラスに同じ名前の変数作ってみたら分かるよ
>>509 別変数にになりますね。納得しました。
そうするともしスーパークラスにしかない変数だとして、明示的に書くのであれば
super が正しい という感じですよね
511 :
デフォルトの名無しさん :03/07/24 11:42
class A { private int m_i; } A a = new A(); a.m_i=100; としてもエラーにならないのですが、何がいけないのでしょうか?
>>511 多分同じファイル内だから
君の書き方が悪いので多分としか言えない
そりゃClass Aの中に書けばprivateだろうがアクセスできるに決まっているさ
これなのですが、よろしくお願いします。 public class test { public static void main(String[] args) { class A { private int m_i; } //ここで定義するとprivateが作用しない? A a = new A(); a.m_i=100; System.out.println(a.m_i); } }
>>514 作用しません。
その private は、test クラス(大文字で名前つけるようにしましょうね)
の持つメンバやメソッドと、同格のアクセス権定義だと思って下さい。
誤解しやすいんですけどね。
「この m_i を public (=test 外からの public)にして、どうやってよそのクラスがアクセスするんだ?」
と思うかもしれませんが、こういう風にアクセスできます。
Object obj = new test().getInnerClassInstance(); // class A のインスタンスを返す
int x = obj.getClass().getField("m_i").getInt(obj);
あなたの例では private 定義されてますから、ここでアクセス権違反の Exception が出ます。
こんなこと滅多にしないでしょうし、私も「できるんだろうな」と思ってましたが、試したのは初めてです。
経験浅く造詣深くないので、どうしてこんな設計になったのかは説明できません。申し訳ない。
>>515 getInnerClassInstanceは見つからなかったのですが、その方法で
うまくいきました。512-515さん、ありがとうございました。
int x = 0;
try { x=a.getClass().getField("m_i").getInt(a); //m_i =100 private }
catch(IllegalAccessException e){}
catch(NoSuchFieldException e2){}//catch
System.out.println(x);//0
>>516 なになになに? ちょっと待て。
何をしようと思って俺が書いたのを真似したんだ?
何がしたくてそうなった?
>>511 の時点で何がしたかったんだ?
わかんねーー騙りのネタか?
518 :
514(=511,516) :03/07/24 17:54
>>517 511の時点でm_iは privateなFiledですよね。
a.m_i=100; がエラーになると予測してたのですが、なりませんでした。
でも、516なら予想通りにエラーが発生しました。
ということです。(m_iをpublicにしたらエラーは消えます)
ちょっと修正
try { x=a.getClass().getField("m_i").getInt(a); //m_i =100 private
} //<-これは次の行でした
どうしても消せないエラーがでる 一服してもう1度見てみよう・・・(´∀`)フー
過去ログ読んだですが該当するものがなかったので質問させてもらいます。 Javaで通信相手上のコマンドを実行することは可能でしょうか。 (Unix等のrexecコマンドのような機能) FTPプログラムはWebで調べれば検索に引っかかるのですが、 これはちょっとみつかりませんでした。 贅沢は言いませんので可能か不可能か、どちらかだけでいいので 教えて頂けないでしょうか。 お願いします
可能
>521 どうもです。 可能みたいなので、やり方がちょっとわからないのですが 色々勉強してみます・・
>>520 rexecはネットワークプロトコルなので、正しい手順で通信すれば
CのプログラムでもJavaのプログラムでも同じように実行できるよ。
きょうびrexecはセキュリティ上の理由でお薦めできないので、
どうせ覚えるならsshを覚えた方が役に立つ。
Java向けのsshライブラリを探してみたらこんなのがあった。
http://www.sshtools.com/ こんなのもありかな…
Process process = Runtime.getRuntime().exec("ssh an_user@otherhost /command/to/execute");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
out.write("password");
out.close();
あとは、自前でrexec相当のサーバと通信プロトコルを設計するとか。
rexecの貧弱なサブセットになる可能性が大きいけど。
ServletAPIみたいなフレームワークに乗っかると楽ができそうだ。
524 :
デフォルトの名無しさん :03/07/24 23:57
どうしても分からない事が有ります。 ThrowableでprintStackTrace()を呼び出すと各クラスファイルの 何行目でエラーが出たか分かりますよね。この”何行目”という情報を 自前で調べたいのですが、どのようにすれば良いのでしょう? log4jでも同様に行数を出力する機能がありますが、ソースを見てもどこで 行数を取得しているのか分かりませんでした。 だれか是非教えて下さい。
>>524 ソースの行番号とバイトコードの実行ステートメント位置の対応は、クラス
ファイルに書いてある情報で、API経由でのアクセス経路はないのです。
VMだけが見に行けるのです。その証拠に、スタックトレース文字列の作成
そのものはnativeメソッドです。
LOG4Jは昔、「スタックトレースの文字列から無理やり抽出」していました。
APIの上で実装する以上は、他に方法がないからです。今も同じですかね?
スタックトレースの書式は仕様デきまっているわけではないと思うんだけど、
マイナーなJVM上では問題起きたりしないのでしょうか?
クラスファイルのフォーマットは公開されているので、それを利用して無理
やり直接抽出するとか、JDIとか、方法がないわけではないですが、どちら
もめんどくさそうですのう。
>>525 ああ、JDK1.4以降なら、それで一発ですよね。
>>525 , 526
素早いお返事ありがとうござます。
>>525 なるほど、JDK1.4なら使えるのですか…。
今回は1.3.1を使用していますので使えそうにないっすね。残念。
すいません、URLまで張っていただいたのに。。
>>525 >LOG4Jは昔、「スタックトレースの文字列から無理やり抽出」していました。
言われて気付いたのですが、多分今もそうだと思います。
log4jのソースを解析している時にThrowableを弄りまわしている箇所が
有りました。(それが行数の為とは気付きませんでしたけど。。)
仕方が無いので私もスタックトレース解析します。
(解析というほどでもないか…)
みなさんありがとうございました。
はじめまして。 いきなりですが、ちょっとお聞きします。 今まで、クライアント、サーバともにC言語で記述していたのですが、 今 クライアントプログラムをJAVAで、サーバプログラムをC言語で 動かそうとしています。 クライアントのOSはWinsows、サーバのOSはRedHatLinuxです。 ソケットはつながっているようなのですが、 データの受け渡しがうまくいきません。 型の互換の問題だと思うんですが、どうしていいかわからないので 質問させていただきました。 サーバ側がC言語なので板違いになってしまうかもしれませんが・・・ サーバ側は char msg[1000]; if (recv(nsofd,msg,sizeof(msg) , 0 ) < 0) perror("recv"); のように受け取っています。 (ソケットは接続できているみたいです) msgをchar型、int型など変えていろいろ試してみたのですが、 いずれも、おかしな結果になってしまいます。 このような異言語間でのソケット通信は初めてなもので、 同じようなプログラムを作ったことがある方がいらっしゃれば よろしくおねがいします。
>>530 > 型の互換の問題だと思うんですが、どうしていいかわからないので
何が問題なのか肝心な部分が書いてないので答えようが無い…
とりあえず、期待する結果、現在の結果(試行錯誤の段階で調べた結果も全て)ぐらいは書いてくれ。
>>531 すいません、了解です
// host port などは定義済み
try{
// ソケット接続
Socket sock = new Socket(host,port);
DataOutputStream sockout=new DataOutputStream(sock.getOutputStream());
// 以下を変えてそれぞれ試してみました
sockout.writeInt(111);
sockout.writeChars(msg); // msg はString型
sockout.writeChar(chara); // chara はchar型
sock.close();
}
catch(UnknownHostException e){
System.err.println("Unknown host: "+host);
}
catch(IOException e){
System.err.println("IO error: "+e);
}
長くなるので、次に続き書きます。
>>532 の続き
C言語で、受信したときに
if (recv(nsofd,msg,sizeof(msg) , 0 ) < 0){
perror("recv");
}else{
printf("### %s \n",msg);
}
とすると、
###
としか表示されませんでした。
(受けとるmsgの型を、クライアント側の型int,char,Stringにあわせて行った全ての場合)
ためしに
while((recv(nsofd, msg,sizeof(msg) , 0 ) > 0)){
printf("##%s\n",msg);
}
としたところ、
int型123を送った場合
##0
##0
##123
##
char型Aを送った倍
##
##
##A
##
と表示されます
>>533 難しいな、一個一個つぶしていくか
サーバ側のプログラムは
相手がCの場合きちんと動く表示されるんですよね?
また、コレなんですが
int型123を送った場合
##0
##0
##123
##
char型Aを送った倍
##
##
##A
##
と表示されます
なんか似てますよね
>>535 書き忘れましたが、Cクライアント→Cサーバ
JAVAクライアント→JAVAサーバ
の動作は確認しました。
Cクライアント→JAVAサーバは試していません。
JAVAクライアント→Cサーバ
の場合のみこうなります。
JAVAクライアントからソケットでデータを送っているのは一回なのに
Whileが何度もまわるのは、やはりソケットプログラムの使用の違いからでしょうか。
世の中ではJAVA→Cはどうしているんだろうと悩んでしまう・・・。
サイトも結構探したんですけど、異言語間通信は割りとないんですよね…。
>>532 Java の char は Unicode の1文字を示すから、C で言うところの wchar_t とかに相当する。
C の signed char に相当するのは Java では byte だってのは分かってるよね。
> int型123を送った場合
> ##0
> ##0
> ##123
int 型で 123送って
> printf("##%s\n",msg);
で 0 とか 123 が表示されるはずがないのだが。
>>537 すいません、凡ミスで、char型の違いがあるのを忘れてました…(TーT)
指摘ありがとうです。
ちなみにInt型で送った場合
printf("###%d\n",msg);
に置き換えてましたので、表示されたんだと思います。
byte型に直してメッセージabcdefgの送信をためしてみました。
やはり一回しかメッセージを送ってないのに二回ループが回ります。
##abcdefgmain_name
##abcdefgmain_name ←そしてなにやら他のメモリ領域を侵してる模様…
ちょこちょこソースいじってみます。
>>538 > ##abcdefgmain_name
> ##abcdefgmain_name ←そしてなにやら他のメモリ領域を侵してる模様…
recv は ヌルターミネートしてくれんだろ。
recv 受け取ったデータのサイズ返すので
それ使って自分でヌルターミネートせんと。
>>539 > printf("%2x ", msg[i]);
printf("%02x ", msg[i]);
のが見やすいよーな…
>>540 ありがとうございます。
以下でうまくいきました。
送り側JAVA
byte seByte[] = new byte[1024];
seByte=msg.getBytes();
int len = SendB.length;
sockout.write(SendB,0,len);
受け側C
len = read(nsofd, msg,sizeof(msg));
if (len < 0){
perror("recv");
}else{
printf("read success.\n");
}
for(i = 0 ; i < len ; i++ );
p = msg; p += i; *p = '\0';
printf("%s\n",msg);
変なソースですいません↑
>>539 ,542
そちらのソースでも表示はうまくいきましたが、
サーバ側に汎用性を持たせたいので、JAVA側で文字をあわせることにしました。
今度は日本語データも渡せるようにしたいと思い、
try{
//データをEUC-JPとしてString型msgに格納
msg = new String(msg.getBytes(), "EUC-JP");
}
catch (Exception e){
System.out.println("EUCJPに変換できない");
}
byte SeByte[] = new byte[1024];
SeByte=msg.getBytes("EUC-JP");
int len = SeByte.length;
sockout.write(SeByte,0,len);
として、これでうまくいくと思ったんですが、甘かったっす…。
LINUX側で日本語部分のみ???と表示されてしまいます。
もうちょっと調べてみようと思います。
> msg = new String(msg.getBytes(), "EUC-JP"); 何やってるか理解してるか?
>>545 >>546 String型って格納するときにUTF8になりませんでしたっけ?
自分的にはデータをEUC-JPとしてStringクラスに渡してるつもりでした。
msg = new String(msg.getBytes("MS932"), "EUC-JP");
でも同じ結果でした
String は「Java の char」で構成される。 すなわち String は UTF-16 で持つ。(LEかBEかは実装依存。シリアライズされるときはBE) > msg = new String(msg.getBytes("MS932"), "EUC-JP"); > msg.getBytes("MS932") で msg を Unicode から MS932(MS拡張のShift_JIS) に直し、バイト配列で得る。 > msg = new String( MS932_bytes, "EUC-JP"); で MS932(MS拡張のShift_JIS)のバイト配列を 「EUC-JP のバイト配列とみなして」Unicode に変換する。 文字化けしないほうがおかしい。
> byte SeByte[] = new byte[1024]; > SeByte=msg.getBytes("EUC-JP"); > int len = SeByte.length; > sockout.write(SeByte,0,len); 誰かツッコんでやれよ… ちなみに一行で書けます。 sockout.write(msg.getBytes("EUC-JP"));
>>548 >>549 ありがとうございました!
ご指摘とメーリングリスト読みまくりで
文字化け対策うまくいきました…多謝!!!
(TーT)みんな すげえや
まだC言語も含めて経験1年くらいなので
これからがんばってここで質問に答えられるよう精進します!
それではまたです!
byte配列の値を整数値、または整数値を byte配列にするにはどうしたらいいんでしょうか…? 相当するメソッド等あるんでしょうか。 すごく既出な気がしますが宜しくお願いします。
今年、javaOneって日本で開催するの? 去年は、9月で一昨年は11月にあったけど、今年はやるのかしら?
>>551 > 相当するメソッド等あるんでしょうか。
標準APIで無理やりやるとすると
new DataOutputStream(new ByteArrayOutputStream())
new DataInputStream(new ByteArrayInputStream(b_array))
とかなるんかな…
普通は public static なメソッド自作すると思うけど。
554 :
デフォルトの名無しさん :03/07/25 20:41
質問です。 現在Javaの勉強をしているのですが、GUIに入ったところで 良くわからなくなっております。Javaをコマンドプロンプト上で 動かしていたときはMain関数(メソッドか?)を抜けると終わっていた ような気がするのですが、GUIの勉強のために本を読み、 コードを打ってみるのですがMainを抜けても終わらないのです。 Javaはメイン抜けてもGUIだと終わらないのでしょうか?
イベントドリブン
×Main ○main
GUIだってmainを抜ければ終わるわな。
558 :
デフォルトの名無しさん :03/07/25 20:58
>>555 なんですかそのセブンイレブンみたいのは?
ふざけるのも体外にしてください。
C++で書いていたときはWinMainをぬけると アプリケーションが終了したと思うのですが、 Javaの場合は終了しないのですか。 イベントドリブンについて具具って見ましたが 今のところそういったことについては説明しているところが 見つかっておりません。が、きっと多分終わらない と思ってよろしいのでしょうか?
抜けたらえきが出ますよ。
ガ━━ΣΣ(゚Д゚;)━━ン えきってなんだろ? こんな感じで書いてたんですが、mainの最後で待っててくれるんでしょうか? import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args){ Frame f = new Frame("Practice FrameTest"); f.setSize(300,300); f.addWindowListener(new FrameListener()); f.setVisible(true); } private static class FrameListener extends WindowAdapter { public void windowClosing(WindowEvent e){ System.exit(0); } } }
デバッグプリントしてみればよかろう。 GUIプログラムだってSystem.outつかえるよ。
563 :
デフォルトの名無しさん :03/07/25 21:14
Java1.0の処理系とAPIドキュメント、入手できますか?
>>562 はい、してみたんです。
mainの最後にSystem.out.printlnちゅうのを
入れてみたのですが一回しかコマンドプロンプトに
文字は表示されませんでした。
でも、作られた(何も書かれていないただの)ウィンドウは消えず、
Xボタンを押すまで(コマンドプロンプトの方でも)終了には
なっていなかったものですから
×System.out.println ○System.out.println
>>564 > Xボタンを押すまで(コマンドプロンプトの方でも)終了には
> なっていなかったものですから
unko
>>565 ここではフォントの関係上見やすいかと思って
そう書いたのですが、いかんかったみたいですね
すみません
>>451 メソッドを通してByteを渡すというのは、サーバからリモートのメソッド
を使って、引数にクラスファイルのByteデータを渡して、ファイルをリ
モートで作る。というように考えてよいのでしょうか?
なにぶん経験が浅いものでおねがいします。(いっしょうけんめい調べ
中です)
RMIってのはリモートのメソッドを使ったら、戻り値は、サーバにそのまま もどってくるの?普通のメソッドのように戻り値は使えると考えていいの ?誰かおせーて
570 :
デフォルトの名無しさん :03/07/25 23:47
メイテックの入社試験で、 g.drawLine(a;b;c;d みたいな記述があったんですが・・・ 引数の区切りはカンマで、最後の閉じ括弧とセミコロンを忘れないでほしい。
>>568 byte[]を引数に取るリモートメソッド定義すれ。
クラスファイルを渡せるよ。InputStreamインスタンス
を渡すという荒技もありかも。
>>569 クライアントにとっては、普通のメソッドコールと
大体同じさね。
>>570 アホですね。あんたの会社ではレビュー前にコンパイル確認
しないんですか?と聞いてあげてください。
禿げ
573 :
デフォルトの名無しさん :03/07/26 01:01
ヌルポって正式な名前なんていうんですかね
>>573 NULL POINTER EXCEPTIONです
>>554 GUIのオブジェクトをnewすると「イベントディスパッチスレッド」という、
「ユーザによるキーボードボタン押下とかマウスクリックとかのイベントを常時
監視して適当な処理にまわすという仕事を行うスレッド」が、見えないところで
自動的に1こ作られるのです。
これは、mainを実行したスレッドと同格のユーザースレッドとして扱われます。
JVMは大雑把に言うと「全てのユーザースレッドが停止するか、System#exit()
などで無理やり終了要求があると、終了する」という仕様になってます。
ということで、mainを実行したスレッドが終わっても、こいつが止まらない限り
アプリケーションは終了しません。
576 :
デフォルトの名無しさん :03/07/26 02:09
JavaPress31のサンプルに import xml.DocumentManager; っていうのがあるんですが これはどのJarファイルに含まれているのでしょうか? 指定のJarファイルはすべてクラスパスに追加してるんですが jaxen-core.jar jaxen-jdom.jar jdom.jar log4j-1.2.8.jar saxpath.jar xerces.jar xml-apis.jar junit.jar エラーになります(Eclipse上で「インポートxmlが解決できません」) で、コア、J2ee,JDOMなどのJavaDoc見たんですがこのようなクラスはありませんでした いったいどこから来たんでしょうか? 教えてください
すいません解決しました JavaPress作成のパッケージでした xmlパッケージなんて名前ついてるから 既存のパッケージかと思いました すいません
578 :
デフォルトの名無しさん :03/07/26 03:31
Javaで作成されたアンケートフォームのソースあるところ知りませんか?
そんな具体的なのは自分で作るしかないんじゃない? 要件詳しく出せば作りますよ
皆さんに質問あります アプリ作ってる途中で このメソッドは共通だから別クラスにしようとおもい 別のクラスにします で、このクラスをより汎用的にしていくと なんだよこれstaticメソッドでいいじゃん という具合になってstaticメソッドがいっぱいになります newしてそのメソッド叩いてもいいのですがそのクラスにフィールド持つ必要はないので、staticの方がイイのかなと思っていますが・・・ こういうのってどうすればいいんですかね? はっきりいってオブジェクト指向ではなくなってきています
>>574 ×NULL POINTER EXCEPTION
○NullPointerException
>>580 オブジェクト指向設計が出来てない予感。
×ヌルポ ○ぬるぽ
>>575 スレッドが勝手に作られているとは思いませんでした。
スレッドは自分で作るものだと思っていたもので
謎が解けて安心です。本当にありがとうございました。
俺はものを見ないと助言も出来ないわけですが、
>>580 のような設計に関する質問で、スバっと答え言える人いる?
初心者、中級者で、これって本当にオブジェクト指向になってるのか?
って疑問に思う人、沢山いると思うんですよね。
586 :
デフォルトの名無しさん :03/07/26 10:10
質問させてください 今までCを使用していたのですがJavaを 覚えなければならなくなり本を買ってやってみているのですが、 getContentPane().setBackground(Color.RED); という部分があるのですが、 関数の後のドットはどういう事なのでしょうか? getContentPane()というのはオブジェクトじゃないですよね? getContentPane()はコンストラクタなのかとも思いましたが いまいちはっきりしません どなたか教えていただけませんでしょうか
>>586 メソッドです
つか、C++ もやってませんね? ポインタはやりましたか?
いくらなんでも、知識範囲がそんな状態では、
ここに来たところで、あなたの助けになれる人はいません。
いちいちつきあってたら、
あなたの同程度の質問 100〜200 でこのスレが埋まってしまいます
薄くてもいいですから、本を一冊買って熟読してから来てください
>>587 そもそもJavaですよ。それ。
えらそうに初心者に説教たれる前にもっと勉強して下さい。
>>587 javaやる前にC++勉強する必要ないよ。なにいってるんだ?あんた。
>>586 そこら辺のことは、わざわざ掲示板にかきこみなんかしなくても、API仕様書をみればわかると思う。
j2sdkと一緒にダウンロードしなかった??
>>586 getContentPane() というのはオブジェクトではなく、メソッド(関数)ですね。
けれども、そのメソッドの戻り値は オブジェクト(インスタンス)なんです。
つまり、メソッドに続けて ドットを使うというのは 戻り値のオブジェクトに
適用されると思ってください。
>587-590 なるほど、納得です >589 してないのでこれからして来ます ありがとうございました
>>580 場合によるが、別にそれでもいいんでないの?
ユーティリティクラスなら、全部staticなメソッドでもいい気がするけど。
ただ内部的に状態やフィールドを持つ場合、マルチスレッド下での使用に不安があるが。
まさかただ単に static void main から呼びたいふがために全部スタティックにしているなんていうアホな話じゃないよな?
> まさかただ単に static void main から呼びたいがために > 全部スタティックにしているなんていうアホな話じゃないよな? Java覚えたてのときやるねw
>>592 >まさかただ単に static void main から呼びたいふがために全部スタティックにしているなんていうアホな話じゃないよな?
おい、バカにすんなよ
質問の仕方見てもそうでないことはわかんだろ
>ただ内部的に状態やフィールドを持つ場合、マルチスレッド下での使用に不安があるが。
だからよー「そのクラスにフィールド持つ必要はないので」って書いてるじゃんか
おい、バカにすんなよ
おい、バカにすんなよ
おい、バカにすんなよ
インタフェースって継承できますか?
できるよん
>>593 >Java覚えたてのときやるねw
てめえしかやんねーよバカ
俺もやってたったい
599 :
デフォルトの名無しさん :03/07/26 13:25
↑ 劣等生必死wwwww
がーん
俺もガーン
>>599 はずしてんじゃねーよバカ
そうやって、プリミティブな指定するから失敗するんだよバカ
ちゃんとアンカーで「
>>597 」とかやっとけよバカ
おまえの書いたソースもそうやって書いてんだろうなバカ
だから、修正個所が増えるんだよバカ
優等生余裕mmmmm ↓
まーな
>>593 >Java覚えたてのときやるねw
やんねーよバカ
>Java覚えたてのときやるねw
ふつうきづくだろバカ
>Java覚えたてのときやるねw
誰に同意求めてんだバカ
俺に
607 :
デフォルトの名無しさん :03/07/26 13:40
↑ 劣等生必死wwwww
>>607 はずしてんじゃねーよバカ
そうやって、プリミティブな指定するから失敗するんだよバカ
ちゃんとアンカーで「
>>605 」とかやっとけよバカ
おまえの書いたソースもそうやって書いてんだろうなバカ
だから、修正個所が増えるんだよバカ
609 :
デフォルトの名無しさん :03/07/26 13:42
↑ 優等生余裕mmmmm
610 :
デフォルトの名無しさん :03/07/26 13:44
↑ Java覚えたてのときやるねw
質問です Map hm = new HashMap(); と HashMap hm = new HashMap(); ってやったときと、どんな違いがあるんでしょうか
>>611 デメリット:Mapにしたとき
HashMap独自の機能が使えなくなる
メリット:シャンプー
上の場合、実体がHashMapでも、MapのAPIしか参照できない。 Java覚えたてのときやるねw
ママーン(ノД`)みんな可笑しくなっちゃったよー(^^;)
>>613 >Java覚えたてのときやるねw
覚えたてでやってたのか?スゲェ見直した
616 :
デフォルトの名無しさん :03/07/26 13:52
617 :
デフォルトの名無しさん :03/07/26 13:52
↑ 劣等生必死wwwww
>>617 はずしてんじゃねーよバカ
そうやって、プリミティブな指定するから失敗するんだよバカ
ちゃんとアンカーで「
>>615 」とかやっとけよバカ
おまえの書いたソースもそうやって書いてんだろうなバカ
だから、修正個所が増えるんだよ馬鹿
宣伝を煽っているw
>>616 >人気ビジネスランキング投票はENTRRをクリックしてください。
「ENTRR」がみつからねーよバカ
「ENTRR」ってなんだよバカ
↑ENTER必死wwwww
>>588-589 ちがう。
C++ をやらないで Java をやるなら、
今回がオブジェクト指向初見ということだろう。
オブジェクト指向が何たるか何も調べず聞きにくるな、と言ったんだ
ぜんまい煮漬けども、死ね
623 :
デフォルトの名無しさん :03/07/26 14:16
↑ 劣等生必死wwwww
ごまんなさい。
急にスレがのびたからどうしたかと思ったら、やれやれだぜ。
>>622 VBやってるかもしれないだろう??なにいってるんだ?あんた。
初心者以下で知ってる言葉並べ立ててるだけの奴が・・。
627 :
デフォルトの名無しさん :03/07/26 14:33
↑ ぜんまい煮漬けども、死ね wwwww
↑わらび煮漬けども、生きろwwwww
村田まり あの、藤田 正の元愛人の一人。 とにかく性悪女 次々女の子を、AV業界に送り込み、ギャラのピンはね 藤田 正が自殺しても、そのネタをいつまでも引き合いに出しては 売名行為をくわだてる。とにかく目立つの大好きで、アニータよりも ひどいです。目立てばなんでもいいんだってよ。
630 :
デフォルトの名無しさん :03/07/26 14:42
↑ 劣等生必死wwwww
631 :
デフォルトの名無しさん :03/07/26 15:52
public class A1{ public class A2{ } } class B2{ class{ A1.A2 test = new A2(); <= ココ てなことをやりたいのですが、何かエラーがでます。 どうやればいいですか?
public class A1{ public class A2{ } } class B2{ class{ A1.A2 test = new A2(); <= ココ } } すいません。みえづらくなってしまいましたのでもう一回。 皆さんよろしくお願いします。
A2をstaticにすればいいよ public class A1{ public static class A2{ } } class B2{ class B3{ A1.A2 test = new A1.A2(); } }
634 :
631,632 :03/07/26 16:03
>633 ヽ(゜∀゜)ノ!!! 即レスありがとうございます!! 早速試してみまつ。まじでありがとうです
A2がstaticにできないならこう public class A1{ public class A2{ } } class B2{ class B3{ A1.A2 test = new A1().new A2(); } }
>>631 おい、staticにしなくてもいいぞ↓
A1.A2 a2 = new A1().new A2();
>>636 おせんだよバカ
そうやって、確認しないで書き込むから失敗するんだよバカ
カッコわるくてみてらんないよバカ
おまえの仕事もそうとう遅いんだろうなバカ
ケコーンしちまえよバカ
↑ 劣等生必死wwwww
今までC++やってたものです・・・初心者質質問でスマン Javaの例外catchはStringとかは受け取れないんですか? コンパイル通らんコード↓ String err_msg = ""; try{ err_msg="err"; throw err_msg; }catch(String msg) { .... }
640 :
631,632 :03/07/26 16:57
>635、636様、 重ね重ねありがとうございます。 とりあえず今staticで試したところうまくいきました。 もうひとつの方法も今後のために覚えておきます。。。 ところで、もうひとつ伺いたいのですが、 コンテナにオブジェクトを追加するとき、配置の設定はどうやってやるのでしょうか? North、South等を使っているんですが、思うようにいきません。 希望の配置としては | Table1 | | −−−−−−−−−-| グラフィック | Table2 | | 見たいな感じです。たびたび申し訳ないですがお願いします。
>>639 直接文字列はなげられないけど
例外クラスってのがあってそれに持たせることができるよ
public class Poi{
public static void main(){
String err_msg = "";
try{
err_msg="err";
throw new Exception(err_msg);
}catch(Exception e) {
e.getMessage();
}
}
}
>>641 そ・・・そう言う事だったのかぁ・・・。目から鱗な感じ・・・。
ありがとぉございます。
643 :
デフォルトの名無しさん :03/07/26 18:07
JDK1.5から何が変わるんですか?
ていうか、
>>639 のようなスコープなら,
catch の中でも err_msg 使えるだろ?
そーいやそーだな
646 :
デフォルトの名無しさん :03/07/26 20:42
Javaクラスファイルからexeファイルを作りたい!! 教えろヴォケ!
なんですか、その態度は
>>640 俺だったらこうする。
Table1 と Table2 を GridLayout を設定した Panel に配置。
Panel をWEST に配置。
グラフィックを CENTER に配置。
C++ でいうところの,vector<int> に当たるものが欲しいのですが,何か いい方法はありますでしょうか. とりあえず ArrayList を使うというのが候補だと思うのですが,ArrayList を 使うと,例えば C++ で x[i] = 3; と書けたものを x.set(i, new Integer(3)); のように長ったらしく書かなければならず,また,x[i] の値を読み出すときは, ((Integer) x.get(i)).intValue() のように,これまたややっこしいことを 書くしかなさそうなのですが,もっと簡単な方法はあるでしょうか. 御教示のほど宜しくお願いします.
Object[]
>>650 APIにはないです。確か誰かがそういうの作ってWebで公開していたはずなので、
探してください。または自作とか。
プリミティブ値のラッパの生成コストとかが問題にならないなら、ArrayListの
単純なラッパを適当に一個作って使う、でいいんでないの。
毎回同じようなコード書くの面倒くさくなったら、クラスなりメソッドなりに
するというのは、普通でしょ。
public class IntList{
private ArrayList impl;
public void add(int i){impl.add(new Integer(i));}
public int get(index i){return ((Integer)impl.get(i)).intValue();}
//以下いろいろ
}
JDK1.5以降のautoboxing実装を待つ、でもええかもしれんが。
オペレータオーバーロードの機能はないので、どうやってもこれ以上は 単純には出来ないですよ。 JDK1.5以降ならIntListを自作しなくても、Generics+AutoBoxingで ArrayList<Integer> list = new ArrayList<Integer>; list.add(5); int val =list.get(0); という感じで、ほぼ同じことができるようになるらしいのですけどね。
やはり,API にはないということですね. とりあえず自作することにします.有難うございました.
自作するほどのことなのだろうかと思うが・・・
CMPがJDBCより10倍遅かった。 速くする方法はないものか。ちなみにサーバーはWebSphere、カスタムなし。
658 :
デフォルトの名無しさん :03/07/27 01:25
javaはあまりクラス変数は使わない方がいいのですか? またクラス変数から値をとるときは そのクラス変数がそのクラスでしか参照されない場合でも getほにゃらら() ってメソッドを作成して取得した方が良いですか?
659 :
デフォルトの名無しさん :03/07/27 01:27
if だけ覚えればどんなプログラムでも作れるよな
>>657 ちゃんとローカルインターフェイス使ってるか?
>>658 private staticならいらんと思うけど。スレッド間同期
が必要ならvolatileでいいし。
661 :
デフォルトの名無しさん :03/07/27 01:31
>>657 >>660 WebSphereって、明示的にローカルインタフェース使わないと
最適化されないの?WebLogicやJBossはリモートインタフェースでも
同一VM上だったらコンテナが勝手に最適化してローカル参照で動作するよ。
>>660 レスありがとうございます。
staticの場合は直で見に行くようにしています。
会社で
某のコードを見てもらったときに
クラス変数を多用しすぎていることと、
意味のある使い方ができてないって言われたもんで。
実際どのような場合に使うかがこまりまっす。
全部引数で値のやり取りをするのは面倒だし、
戻り値が二つ欲しいときは
片方をクラス変数に入れたりしてたり・・
jdkのサンプルソースを見てたりすると
たしかに某の使い方には
なんか違和感覚えるんすよね。
はぁ、明日も仕事だ・・。
663 :
デフォルトの名無しさん :03/07/27 01:38
>>661 それってWeblogicやJBossの独自仕様だよね。
勝手にやるのは標準ではないような。
>>662 クラス変数→staticフィールド
インスタンス変数またはオブジェクト変数など→非staticフィールド
>>662 > 全部引数で値のやり取りをするのは面倒だし、
クラス変数で受け渡すのはスレッドセーフな処理書くとき面倒引き起こすのでは?
> 戻り値が二つ欲しいときは
> 片方をクラス変数に入れたりしてたり・・
引数用クラスとか戻り値用クラス使えってのが FAQ だよね…
665 :
デフォルトの名無しさん :03/07/27 01:53
class HogeEngine{ /** * Hogeを行う */ public HogeResult execute(HogeParameter param){ //HogeParamからデータを取り出して処理を行い、 //HogeResultを作る } }
>>665 Result と Parameter 分ける必要があるならそーするしかないけど。
> 戻り値が二つ欲しいときは > 片方をクラス変数に入れたりしてたり・・ もし何かの理由でDataBeanを作れないとしても せめてコレクションか配列使うくらいは思いつけよ・・・
668 :
デフォルトの名無しさん :03/07/27 01:59
class HogeEngine{ /** * Hogeを行う */ public void execute(HogeParameter param){ //HogeParameterからデータを取り出して処理を行い、 //HogeParameterの中に結果を書き込む。 } }
ところで、何で HogeParameter.execute() じゃいかんのだ?
670 :
665=668 :03/07/27 02:10
省略コード相手に突っ込まんといてーな
直列化(シリアライズ)はどういうときによく使われるものなのですか?
672 :
デフォルトの名無しさん :03/07/27 09:21
>>663 EJBの仕様ではないのは百も承知。EJBの仕様だとは一言も書いていない。
WebLogicやJBossではやっているが、WebSphereではやってないの?
と聞いているのだが。どうなの?
674 :
デフォルトの名無しさん :03/07/27 11:21
IBMJavaのディベロプメントキットってどこからダウンロードするの?
675 :
無料動画直リン :03/07/27 11:38
677 :
デフォルトの名無しさん :03/07/27 12:58
Axisとかの質問はココでいいのか?
>>671 データを抱えたオブジェクトを、その状態のままファイルに保存/読み込みしたり、
ネットワークの向こうにオブジェクトの内容を全部送りつけるなど。
使いすぎると重いかもしれんが、かなり便利だ。
679 :
デフォルトの名無しさん :03/07/27 13:38
680 :
デフォルトの名無しさん :03/07/27 13:38
Javaでは?(上の続き)
681 :
デフォルトの名無しさん :03/07/27 15:16
>>679 Relaxer、Castor、JAXB、java.beans.XMLEncoder/XMLDecoder。
方法がいっぱいあるって事は、流行ってんじゃないの。
682 :
デフォルトの名無しさん :03/07/27 15:34
プログラム実行中に クラスを動的に定義してインスタンス化するのって どうやればいいんでしょうか? クラス名とかフィールド名とその型アクセス指定子、メソッド名(戻り値、引数含む)とか こういうのをプログラム実行時に作りたいのですが・・・
683 :
デフォルトの名無しさん :03/07/27 15:43
>>682 動的に作成した型 dynobj = ナニカの方法;
というコードが書きたいってこと?「動的に作成した型」という型名を
ソースに「静的」に書かなきゃならんことについてはどう思うよ?
動的に作るインスタンスを受けとる変数の型は、インターフェイスで静的
に定義する、という方針であるという前提で、java.lang.reflectパッケ
ージのDynamic Proxy APIを使用せよ。
InvocationHandlerとProxyが、それをやる手段。動的に作ったクラスに
対して、いちいちリフレクションでメソッドコールしないで済むじょ。
すいません。昨日お世話になった640です。
ありがたいことに
>>648 さんから構成方法を教えていただいたのですが、
>Table1 と Table2 を GridLayout を設定した Panel に配置。
というのがよくわかりません。
GridLayoutとPanelをどう絡めて記述すればいいのでしょうか?
お願いします。
>>684 panel.setLayout(new GridLayout(...)) しろって事では?
686 :
デフォルトの名無しさん :03/07/27 17:42
/三ヾ`丶 ////,r‐'、ミヾヽ . ,'///,r'_,._ ヾ、:!} j !|r'リ ━━━━リ イ|:!ト 、_' /′ ノノ川 \ `´/ < 吸われて、舐られますた f゙`丶、_`7´、 /‐-、 /'ヽヽ`┐ / `ヽ ∨―'ハ| ト、 . ,' ; ヽヘ' jー、 . ! i.;:-‐ \ヾ、\ | j::.:.:.. ヾ, `:., l ./:::::.:.:.:.:.:.:..... . . . . ....ノ
>>686 頭がぶっ飛んでいる女。と言うことですね?
/三ヾ`丶 ////,r‐'、ミヾヽ . ,'///,r'_,._ ヾ、:!} j !|r'リ * *.リ イ|:!ト 、_' /′ ノノ川 \ `´/ < めがね、めがね f゙`丶、_`7´、 /‐-、 /'ヽヽ`┐ / `ヽ ∨―'ハ| ト、 . ,' ; ヽヘ' jー、 . ! i.;:-‐ \ヾ、\ | j::.:.:.. ヾ, `:., l ./:::::.:.:.:.:.:.:..... . . . . ....ノ
>>682 ・Type Object パターン使う
・動的にソースを生成して裏でコンパイルする
などの方法がないこともないが、そもそも Java で
そういうことをやろうと思うのが間違ってる。
インターフェイスによる多重継承がいまいち理解できないのですが たとえば、AクラスとBクラスを継承したいCクラスを作るとしたら インターフェイスD(Bクラスの宣言)を定義して class C extends A implements D といった具合なのでしょうか?
691 :
デフォルトの名無しさん :03/07/27 21:26
>>690 > インターフェイスによる多重継承
そんなものはない
「哺乳類」クラスと「魚類」クラスと「海棲」インタフェースがあって 「めだか」クラス 継承:「魚類」クラス 実装:「海棲」インタフェース 「鯨」クラス 継承:「哺乳類」クラス 実装:「海棲」インタフェース
693 :
デフォルトの名無しさん :03/07/27 21:43
「かいせい」だろ。 広辞苑には載ってなかったけどな。
>>691 すいませんでした。では普通に 多重継承 といえばいいのですか
>>692 実装=implements ということですか?
めだかクラスは、海棲インターフェイスを通して魚類クラスを継承してるってことでしょうか?
あら?そうすると哺乳類クラスは継承できてないな
なんだかこんがらがってきた。
692さんもう少し言葉をいただけませんか?
オナニーでもして落ち着きます。
>>693 えーと私の考え方では
クラスはオブジェクト
インターフェイスはオブジェクト宣言みたいなものかと考えています
698 :
デフォルトの名無しさん :03/07/27 21:53
>>696 Javaは多重継承できない。言語仕様がそうなっている。
>>696 インタフェースは多重継承できますが何か。
>>690 interfaceはオブジェクトの"機能"の宣言です。
>>698 それはわかってますが、インターフェイスを用いて回避できるみたいなことをよんだので
多重継承と書きました。国語力で何とか理解してください。
ちなみにどう表現すればいいのでしょうか?
多重継承といっても機能を組み合わせたいだけなんだろ? コンポジションを使え。
>>700 そうすると抽象クラスみたいなものと考えて大ジョブですかね?
クラスは物 データと振る舞いがある インターフェイスは振る舞いだけ しかも振る舞い方の名前だけで中身はないんだったような (処理が書いてないんじゃなかったか?) 人クラスにたいして 右腕を振るっちゅうインターフェイスがあったとしたら 足すと 右腕を振る人になるが、右腕をどのように振るのかについては きまっちょらんのでその中身は自分で書かんといかん 右腕を振るって言っても行進の時のように振るのか 殴るように振るのかなどの実際の行動を自分で書くのが インターフェイス 人+右腕振る+左腕振る+足を動かす 等のようにくっつけることが出来る。 間違ってたら修正よろ〜
705 :
デフォルトの名無しさん :03/07/27 22:09
>>697 ぜんぜん違います。
クラスは値と命令の集まり。Cでいう構造体の中に関数が入っているもの。
オブジェクト指向では、クラスとは雛形なので実態にしなければいけません。
その実態がオブジェクトです。
インターフェイスとはメソッド(Cでいう関数)の名前と戻り値しか定義していないので
実装先でその中身を追加(オーバーライド)して使います。
さらにインターフェイスのフィールド値は必ず定義しなければいけません。
----------------------------------------------------------------
インターフェイスによく似ているものでアブストラクトがありますが、
これは立派なクラスですので、多重継承はできません。
>>705 もあまりわかってないように見えるが、まあいいか
先生!人クラスで「右腕を振る」を定義しないことはどんなメリットがありますか?
質問撤回 多重継承ができる、できないの問題なのですね
709 :
デフォルトの名無しさん :03/07/27 22:16
でも、インターフェイスにはstatic finalな変数は定義できるよね・・・・・
>>704-705 ちょいわかりにくいかな。わからない奴に1,2レスで説明しようとするチャレンジ精神は賞賛。
オブジェクトのインタフェイス(*)を中心にして考えるが吉。 この責務を果たしてもらうので、このメソッドが必要と考える。 class が interface を implements するということは、 その class は interface が意図している責務を果たすことが義務付けられる。 (が、意図はコード上には現れないのでドキュメントを読むしかない) # implemets ActionListener したならアクションリスナとしてきりきり働けというわけだ。 どうやって責務を果たすかというと method を実装することによって。 # implemets ActionListener したら actionPerformed を実装しなくてはならない たまたま、あるクラスと責務がほとんど被っている場合は、 そのクラスを継承して、継承したクラスの機能を暗黙的に利用するわけ。 * Java の interface ではなく、オブジェクトに責務を果たしてもらうための界面。 つまり、オブジェクトが理解するメッセージ群。 要は、オブジェクトが持っているメソッド群。
711 :
デフォルトの名無しさん :03/07/27 22:19
712 :
デフォルトの名無しさん :03/07/27 22:32
質問です。数式と値をを入力すると、式に値を代入した答えを返すプログラムを 作りたいのですが、何かうまい方法はないでしょうか? たとえば、入力 : x^2 + x + 1 1 出力 : 3 みたいなものです。 プログラム内部で、+,-等の演算子をどう表現すればいいのか悩んでいます。 最終的にはsin(x)とかにも対応したいんですけど・・ よろしくお願いします。
>>710 「界面」なんて言葉見たの久野セソセイ以来だにゃあ。
>>712 感嘆には、デザインパターンの「インタープリタパターン」を探せばそういう例題見つかると思う。
ちょっと探してみていますが、なかなか・・ もうちょい探してみます。
>>703 抽象クラスは"機能"のほかに"実装"(内部構造)を持つので違う。
具体的に言うと、すべてのメソッドがabstractだとしても
Objectクラスを継承しているのでObjectクラスの実装を持つ。
ひとつの機能に対して、何種類でも実装はありえることに注意。
>>712 大げさにいうと新たな言語を作るようなもんだから結構しんどいよ。
Interpreter パターンでもいいけど JavaCC でも使ってみたら?
>>717 JavaCC、ウチだと使えないんですよね。
なんか「OFF」ってでて終わっちゃうんですよ。なんでだろ?
学校いってやろうかなぁ。
>>719 うわ、まんまです。最高です。
いまから読んで理解してみますー(できるかな)
ありがとうございましたー。
やっぱ検索のスキルからして違うなあ。
721 :
デフォルトの名無しさん :03/07/27 23:24
実装てインスタンス生成のこと?
723 :
デフォルトの名無しさん :03/07/28 03:48
JavaからWindowsAPIを呼びだすにはどうしたら良いんですか?
725 :
デフォルトの名無しさん :03/07/28 04:42
JNIって、Cの知識が要るんですよね? Javaから直截呼び出すわけにはいかないんですかね? それに、データ型や型チェックとかでCと違いが出たりしませんか?
>>725 そもそもJNIが何をやるものかわかってなさそうな聞き方だが・・?
727 :
デフォルトの名無しさん :03/07/28 10:30
生意気な回答者だなぁ・・・
誰もJNIを知らないから答えが出ない。クプププ
729 :
デフォルトの名無しさん :03/07/28 10:47
Java流では ファイルとかDBとかで明示的にclose()しないでスコープから外れたとき 勝手にクローズするのに任せた方がいいのかな? (close系はいっさい使わない) 例外でずばっと戻るようなときのこと考えるとそんな気がする。
>スコープから外れたとき勝手にクローズするのに任せた方がいいのかな? いつオブジェクトが開放されるかなんてお前解る?
>>729 て言うか例外が発生するならfinally使えよ。
>>729 > スコープから外れたとき勝手にクローズ
勝手に close() する保証はどこにも無いと思うが…
733 :
デフォルトの名無しさん :03/07/28 11:12
>730 いや、わからないけど。。 >731 いえ、今はちゃんとfinallyの中にclose書いてるけど そのcloseもまたtryで括らないといけないみたいで なんかでこぼこになってソースが汚いんすよ。 だからJava流と外れてるのかなと思いまして。。 >732 確かに保証はないんですが リファレンスにガベージコレクトされるときに自動的にクローズされます って書いてあったんでそういうものなのかと。。 あと、sunのサイトにあるsample見ても ちゃんと全部クローズしてないんですよ。一番大元のconnしかクローズしてない。 一個クローズしてないのがあってもOKなら 全部クローズしなくてもOKそうじゃない?
>だからJava流と外れてるのかなと思いまして。。 Javaって綺麗なコードを第一目標にしてるんだっけか?
少なくとも綺麗なコードが書きにくいというのは間違ってない。
綺麗というのは何と比べてなのか。 関数型言語に比べると綺麗ではないが、 手続き型言語に比べると綺麗だろ。
>>733 ソースを読め。
一番おおもとを close すると連鎖的に全部 close される。
>>736 >手続き型言語に比べると綺麗だろ。
メソッド単位ではJavaとて手続き型言語。
>メソッド単位ではJavaとて手続き型言語。 違いが判ってるじゃんw
740 :
デフォルトの名無しさん :03/07/28 14:11
>>736 > 関数型言語に比べると綺麗ではないが、
> 手続き型言語に比べると綺麗だろ。
何を比べて言っているんだ?(藁
Javaはメソッドだけじゃありませんが、何か?
743 :
デフォルトの名無しさん :03/07/28 17:05
javaのバージョンが違うとソースが同じでもコンパイルできないことはあるんでしょうか?
ある
java駄目じゃん(藁
746 :
デフォルトの名無しさん :03/07/28 17:53
そりゃJavaに限った話じゃないと思うけど・・・。 昔から延々とあった問題だし、これからもふつーにあるでしょ。
748 :
デフォルトの名無しさん :03/07/28 18:35
メジャーな言語で一度も言語仕様が変わっていない言語なんてあるのかyo!
>>743-745 言語仕様が変わってコンパイルできなくなるパターンで
新予約語assertに引っかかる以外になんかあったっけ?
assertもコンパイルオプションで無効にできる
(っていうかいまんとこデフォルトは無効)じゃなかったか?
んでも、例外処理(のいちおう一部)であるfinallyの中で、 例外を処理するために起きた例外もtry-catchしないとだめなのは、なんだかなあ。 人工的な例だけど、おいらはあまり好きくない。 try { // foutは一時的なファイル while ((line=fin.readLine()) != null) fout.println(line); } catch (Exception e) { ... } finally { try { fout.close(); } catch (Exception e) { // 保存に失敗したから、ゴミファイルの残さないように削除 try { fout.delete(); } catch (Exception e) { ... } } }
752 :
デフォルトの名無しさん :03/07/28 19:51
GUIの勉強を始めたところなのですが、描画のところがよくわかりません。。 すみませんが、どなたか教えてください。。 下のようなプログラムについて 1.paintメソッドはどこが呼び出しているのでしょうか? 2.paintメソッドが実行される時のGraphics型の引数gには、何が与えられているのでしょうか? (質問がおかしかったらごめんなさい) import java.awt.*; class Draw extends Canvas { Frame frame; public void paint( Graphics g ) { g.drawString( "あいうえお", 20, 20 ); } Draw() { frame = new Frame( "フレーム" ); setSize( 100, 30 ); frame.add( this ); frame.pack(); frame.setVisible( true ); } public static void main( String[] args ) { new Draw(); } }
Pure Java の C++コンパイラとかありませんか?
>>750 でも、finally節で例外が起きたらじゃあどうするのといわれると、他に方法も無いだろ?
>>733 > 確かに保証はないんですが
> リファレンスにガベージコレクトされるときに自動的にクローズされます
> って書いてあったんでそういうものなのかと。。
メモリがたっぷりあるマシン上だと
一生クローズしないかもしれないぞ。
大本のコネクションをクローズすればそこから取り出したレコードセットとかも
クローズするのはJDBCとかDBエンジンの仕様だろう。
1つのコネクションでは同時にレコードセットを1つしか扱えない場合も
多いから使い終わったレコードセットをこまめにcloseする癖を付けておくのは
悪いことじゃない。
> メモリがたっぷりあるマシン上だと > 一生クローズしないかもしれないぞ。 メモリが足りなくなるまでガベージコレクトしないんですか?(藁
>>751 > 1.4から無形パッケージに属するクラスのインポートが出来なくなってる。
Sun 曰く、それも言語仕様の変更では無いらしいですね。
超カメレスですまんが
>>611 の時のメリットは、Mapを継承したたくさんのhogeMapとかfooMapとかを
まとめるときにMap型配列にぶっこめるというというのでいいですかね。
まあ使うときにそれぞれ狭くキャストせんといかんけど。genericでこれをなんとかできるらしいがよくわからん。
760 :
デフォルトの名無しさん :03/07/28 20:37
>>755 ,756
使われなくなったか、NULLが入った時点でガーベジコレクションの対象に
なる。
じゃなかったけ???
>>754 いや、別の解決法がどうとかの話じゃなくて、
例外の中の例外の...が好きくないという話。
こんなの考えると、例外も万能じゃないんだなと。
>>760 ガベージコレクトの対象になる、ってのと
即座にガベージコレクトされる、ってのでは全然違うので。
764 :
デフォルトの名無しさん :03/07/28 20:49
>>762 JavaってVMが勝手にガーベジコレクションをするので、PGが任意にすることは
できないって習ったけど。
System.gc();をしても、VMのスレッドの上位にガーベジコレクションの処理が入るだけで
OS全体の優先度は保障されないので、即座のガーベジコレクション実行は保障されていないと
習ったよ。
単なるうんちだよね。
>>763 うん。グチみたいな日記。
掲示板に書くと管理者に嫌われるもの。
ここで何言ったって何かが変わるわけじゃないから。
767 :
名無し@沢村 :03/07/28 21:17
ていうか、DBへのConnectionやFileのOpenは、 物理的なリソースと結びついているのだから、 使い終わったら、すぐにclose()するのは、プログラマーの責任。 ガベージコレクションを待っていたら、先に物理的なリソースを使い果たしてしまうぞ。
769 :
デフォルトの名無しさん :03/07/28 22:11
2つのスレッドで 片方のスレッド[自身]に対して runメソッド内で互いにsynchronized文を使ってみたんだが、 joinで終了を待つときに 先に終わる方を待たないとデッドロック起きるね...。
しつこくてごめんなさい。もう一度だけ言ってみます。。
どなたか
>>752 教えてください。
instanceof演算子を使ってこのクラスの参照型変数とGraphic型を比較してみてもfalseと出ますし、
一体paintメソッドのGraphic型の引数には何が与えられているのでしょうか。。
解説の載っている書籍を教えていただけるだけでも結構です。よろしくお願いします。
>>770 =752
たしか paint は必要な時に自動的に呼び出されるんだったと思う。
772 :
デフォルトの名無しさん :03/07/28 22:57
質問です。ちなみにWinじゃなくてMac使ってる方にお聞きします〜。
Winは圧倒的にコンパイルとかする時どこが間違ってるか出るじゃナいっすか?
それがMacでは出ない。そこでいい解決法がある場合教えていただきたいです。
それと、
ttp://www.hcn.zaq.ne.jp/no-ji/reseach/20020521.htm 上のプログラマー's研究所にうpされてるシルビスといシューティングゲームなんすけど、マックで起動させるにはどうやればいいんすか?
普通に実行してもできません;;。
やっぱアプレットにしたほうがマックでは使いやすいのかな、、、。
それとこの中にソースが入ってるんすけど、そのソースをそのままコンパイルしてもエラーが出ます。
マックとウィンではやっぱ違うところがあるのでしょうか?
ぎゃああああ!。 マジスマソ! アゲテモウタ。 逝ってきます、、、
>>771 ありがとうございます。
つまり、Canvasクラスを継承しているクラスにpaintメソッドを書いておけば、
自動的にその内容が実行されると考えていいでしょうか?
もう一つどうでもいいことなのかもしれないのですが、paintメソッドが受け取っている
Graphics型の引数がどれなのか気になっているのですが、、paintメソッドが書いてある
クラス自身の参照型変数ではないようですし、、一体何なのでしょうか。。
775 :
デフォルトの名無しさん :03/07/28 23:23
Canvasクラスのpaint()の説明文です。 このキャンバスをペイントします。 Canvas をサブクラス化するほとんどのアプリケーションでは、 便利な操作を実行するためにこのメソッドをオーバーライドすることに なります。キャンバスのカスタムペイントが典型的な例です。 既定の操作は単純なキャンバスのクリアです。 このメソッドをオーバーライドするアプリケーションでは、super.paint(g) を呼び出す必要はありません。 つまり、デフォルトコンストラクタを呼ばずに勝手に実行してくれると書いてあります。 --------------------------------------------------------------------------------- paint(Graphics g){} paint2(){ int i;} でpaint2のiをpaint2の引数にしたい場合はどうしますか? paint2(int i) ですね! つまり単なるGraphics の変数をpaint内で使うのであらかじめ宣言をしようと 決まっているだけです。たとえGraphics を使わなくてもです。
777 :
デフォルトの名無しさん :03/07/28 23:29
↑ もっとわかりやすくいえば、paint(Graphics g){} はpaintメソッド内でしか使用できませんよね! paint2(){int i}も一緒です。
778 :
デフォルトの名無しさん :03/07/28 23:34
>>775 >>777 さん
変数の宣言をしているだけだったんですね。。
ご丁寧にありがとうございます。わかって安心しました。
>Canvasクラスのpaint()の説明文です。
わざわざすみません。これからはよくJava_docを読むようにします。
780 :
デフォルトの名無しさん :03/07/28 23:53
↑ さらにいえば、オーバーライドの条件として、メソッド名が同じで、アクセス修飾子がオーバーライド元より ゆるくなければならず、そして、引数の数、順序が同じでなければいけないので、 Canvasクラスでpaint(Graphics g)となっている以上こう書かなければエラーが出ます。 ただし、引数名は自由に変更可能です。
781 :
デフォルトの名無しさん :03/07/28 23:59
半角の数字を全角の文字数字にするにはどうしたらいいですか? やっぱり int hankaku = 1; String[] zenkaku = {"0","1","2","3","4","5","6","7","8","9"}; String result = zenkaku[hankaku]; とするしかいないんでしょうか? 変換したい文字の候補が1000近くある場合は "1000"を1文字ずつ分解して zenkakuから該当する倍角文字をもってくるしかないんでしょうか・・・?
782 :
デフォルトの名無しさん :03/07/29 00:16
Unicodeで全角数字って隣接してたっけ?もしそうならこんなので。 public String toDBNum(String number){ StringBuffer result = new StringBuffer(); for(int i = 0; i <number.length();i++){ resutlt.append((char)('0'+number.charAt(i)-'0')); return result.toString(); }
783 :
デフォルトの名無しさん :03/07/29 00:57
>>782 どうもありがとうございます。
参考にさせていただきます。
>>761 try {
Connection conn = xxx.getConnection();
try {
connに対する処理(conn);
} finally {
conn.close();
}
} catch (XxxException e) {
例外処理();
//またはthrow new YxxException(e);またはthrow e;またはcatchブロック無し
}
「こんなところで例外が起きてしまったらどうせたいしたリカバリは出来ないだろう」
「でもリソースの開放は確実に行うべし」「ソースもそこそこきれいに」
という思想に基づいています。
これが嫌いな人もいるけど俺は大好き。
785 :
デフォルトの名無しさん :03/07/29 01:27
>>781 遅レスですが、おっしゃる通りにintを受け取って全角に直す作業のメソッドを作っちゃっても、
重いプログラムにはならないのではないでしょうか?
こんな感じ↓でクラス作ってnewして、メソッドにint渡すのでいいんじゃないでしょうか。
class Change {
final private String[] zenkaku = {"0","1","2","3","4","5","6","7","8","9"};
public String CahgeToZenkaku(int i){
String stg = String.valueOf(i);
StringBuffer stgb = new StringBuffer();
for(int pos=0; pos<stg.length(); pos++) {
String keta = String.valueOf(stg.charAt(pos));
stgb.append(zenkaku[Integer.parseInt(keta)]);
}
return stgb.toString();
}
}
と言ってる私も初心者なので、回りくどいプログラムになってしまいました。。
どなたか改善点を指摘してくださると勉強になりますので言ってください(便乗ごめん)。
スレ違いかもしれませんが、どなたかご教授下さい。 javaappletで作成されているHPを取り込むにはどうしたらいいのでしょうか? もう少し詳しくお話しますと、1分刻みぐらいで、javaappletで作成された表が 更新するページがあるのですが、どうにかしてこの表をテキストとしてエクセルに 貼付けたいと考えています。 わかりにくい説明だとは思いますが、どなたか宜しくお願いします。
質問なんですが、RMIってファイヤーウォールはさんでも大丈夫です か?(接続さえしてしまえば)
>>785 そういうユーティリティなお仕事はそっち系担当のクラスを作って
static なメソッドにするのがよいのではないでしたっけ?
Integer.toString()みたいにいちいち new しないでいいように。
>>785 のソースで言えば zenkaku と ChangeToZenkaku に static くっつけたりして。
自分も勉強中の身でOOP的にいいのかとかはよくわかりませんのでだれか識者のかた
あとは頼みます。
OOP的かどうかはおいといて、 ユーティリティクラスを作って static メソッドにするのは正しい。 ただし java 的には ChangeToZenkaku という名前は ・changeToZenkaku ・toZenkaku あたりにした方がいいな。
すいません。antの質問もよろしいでしょうか? もしまずいようならば適切なスレを教えて頂けると嬉しいです。 antでbuildに挑戦中なんですがjspcの部分でエラーが出ます。 jspc: [mkdir] Created dir: D:\Office\test\work\war [unwar] Expanding: D:\Apache Tomcat 4.0\webapps\test.war into D:\Office\test\work\war [mkdir] Created dir: D:\Office\test\work\jsp [jspc] Compiling 19 source filesD:\Office\test\work\jsp [jasperc] java.lang.NoClassDefFoundError: org/apache/jasper/JspC [jasperc] Exception in thread "main" パスの設定のようだと言う事までは色々と調べてわかったのですが classpathの設定は以下のようになっています。なにか間違いはあるのでしょうか? D:\>set classpath CLASSPATH=C:\j2sdk1.4.0\jre\lib;D:\j2sdk1.4.0\lib;D:\j2sdk1.4.0\lib\tools.jar;D:\Apache Tomcat 4.0\common\lib\servlet.jar; tools.jarにパスが通っていないのが原因なのかもという推測のもとなんですが。。。。 j2se1.4 + Tomcat 4.0 + Ant 1.5な環境で、WinXP使っています。
>>789 >>790 zenkakuは外部から参照する必要のない定数なので、staticをつけずにfinal privateだけにしました。
ですが、ChangeToZenkaku(綴り間違った。。
>>785 ではチャゲToZenkakuになってます(汗))メソッドは
staticにした方が確かに便利ですよね。
でもChangeToZenkakuだけstaticにしてしまうと、非スタティックな変数zenkakuを参照できなくなるので、必然的にzenkakuも
staticにするしかなくなるわけで。。。
つまりメソッドも変数もstaticにする、ということでいいんでしょうか???
それに加えて、オーバーライドされないようにメソッドにfinalをつけるべきなんでしょうが、、、それ以前にクラスに
final修飾子をつけるべきでしょうか??
OOPを私もまだまだ理解していません。。。どなたかご教授下さい。。
>ただし java 的には ChangeToZenkaku という名前は
>・changeToZenkaku
>・toZenkaku
>あたりにした方がいいな。
メソッド名の最初は小文字が推奨されているんでしたね(お恥ずかしい)。
toZenkakuで良かったですね。無駄に長いメソッド名でした。。
>>792 zenkaku に関してはstatic final private にすれば大丈夫だと思います。
final 修飾子はどうなんでしょうね。
先の例でいえば負号も全角「−」でしたい、なんて拡張も考えられないことも
ないし厳格に final にすることもないかなーと思いますけど。
>>785 のソースの int を String に String を int にってとこが解せなかったので
こんな感じにしてみました。
class ZenkakuUtillity {
static final private char[] zenkaku = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
static public String intToZenkaku(int integer) {
int place, x;
if (integer < 0) // いまんとこ負号は考えないー
integer *= -1;
for (x = integer, place = 1; x > 9; place++, x /= 10); // 桁数を計算
char[] result = new char[place];
for (int i = place - 1; i >= 0; i--) {
result[i] = zenkaku[integer % 10];
integer /= 10;
}
return new String(result);
}
}
>>784 try {
Connection conn = xxx.getConnection();
try {
connに対する処理(conn); //ここで例外Aが発生する
} finally {
conn.close(); //ここで例外Bが発生する。
}
} catch (XxxException e) { //catch 出来るのは例外B
}
好き嫌いの問題じゃなく、それだとダメな事もあるので。
なんかこうすごいマイナーで誰も手をつけてないようなJavaの技術ってない? んで、それに関するHP立ち上げたいの
797 :
デフォルトの名無しさん :03/07/29 09:16
jspで、チェックボックス、ラジオボタン等の値を 取得するにはどのようにしたらよいでしょうか?
チェックボックス <input type="checkbox" name="fluit" value="apple">りんご <input type="checkbox" name="fluit" value="banana">ばなな <input type="checkbox" name="fluit" value="lemon">レモン 値の取得 String[] fluits = request.getParameterValues("fluit");
799 :
デフォルトの名無しさん :03/07/29 10:40
ファイルから1行ずつ読み取る方法を教えてください
Calendar クラスを使って、 二つのインスタンスの日付差分を正確に出すには、どんなやり方がお勧めですか? 1932/4/3 は 1975/2/1 の何日後か。 YEAR と DAY_OF_WEEK を組み合わせる以外ないでしょうか?
? 間違えました、DAY_OF_YEAR です。。
>>800 (cal1.getTimeInMillis() - cal2.getTimeInMillis())/(24*60*60*1000)
803 :
デフォルトの名無しさん :03/07/29 12:16
>>794 Cぽくやるとこんな感じ。
public static final String toZenkaku(String sTarget)
{
if(b_fast_mode_ok){//クラス内のstatic初期化ブロックで前提条件をチェックする
char[] cResult = sTarget.toCharArray();
int iLength = cResult.length;
int iDistance = '0'-'0';
for(int i=0;i<iLength;i++){
char tmp = cResult[i];
if(tmp >= '0' || tmp <= '9'){//前提条件1
cResult[i] += iDistance;//前提条件2
}
}
return new String(cResult);
}
else{//前提条件がつかえない環境の時... }
}
if(tmp >= '0' && tmp <= '9'){ だな
あのう JAVA3Dの話なんですが 直線を回転させたいのです。 直方体を回転させるサンプルプログラムを元に やっているのですがさっぱり動く気配がありません。 public BranchGroup createSceneGraph(){ BranchGroup objRoot = new BranchGroup(); objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objTrans); objTrans.addChild(createLight()); Point3d[] vertex = new Point3d[2]; vertex[0] = new Point3d(0, 0, 0); vertex[1] = new Point3d(1, 1, 1); objTrans.addChild(Point3d[]);←ここがやヴぁいっぽい objRoot.compile(); return objRoot; } これじゃダメっすか?
// 改行大杉になるのでコメント省いた public class Conv { private int searchBegin; private int searchEnd; private int plusCode; public static final Conv TO_FULL = new Conv(0x21, 0x7e, 0xfee0); public static final Conv TO_HALF = new Conv(0xff01, 0xff5e, -0xfee0); public static final Conv TO_FULL_ONLYNUM = new Conv(0x30, 0x39, 0xfee0); public static final Conv TO_HALF_ONLYNUM = new Conv(0xff10, 0xff19, -0xfee0); private Conv() {} private Conv(int begin, int end, int plus) { searchBegin = begin; searchEnd= end; plusCode= plus; }
public static String convertStr(String str, Conv kind) { if ((str == null) || (kind == null)) return null; StringBuffer buf = new StringBuffer(); for (int i=0; i<str.length(); ++i) { int code = str.charAt(i); if ((code >= kind.getBegin()) && (code <= kind.getEnd())) { buf.append((char)(code + kind.getPlusCode())); } else { buf.append((char)code); } } return buf.toString(); } int getBegin() { return searchBegin; } int getEnd() { return searchEnd; } int getPlusCode() { return plusCode; } }
>>806 >objTrans.addChild(Point3d[]);←ここがやヴぁいっぽい
objTrans.addChild(vertex);
test.java:27: javax.media.j3d.Group の addChild(javax.media.j3d.Node) は (javax. vecmath.Point3d[]) に適用できません。 objTrans.addChild(vertex); ってエラーがでます public class test extends Applet implements KeyListener{ public TransformGroup objTrans; public BranchGroup createSceneGraph(){ BranchGroup objRoot = new BranchGroup(); objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objTrans); objTrans.addChild(createLight()); Point3d[] vertex = new Point3d[2]; vertex[0] = new Point3d(0, 0, 0); vertex[1] = new Point3d(1, 1, 1); objTrans.addChild(vertex); objRoot.compile(); return objRoot; }
private Light createLight(){ DirectionalLight light = new DirectionalLight( true, new Color3f(0.0f, 0.0f, 1.0f), new Vector3f(0.0f, 0.0f, -1.0f)); light.setInfluencingBounds(new BoundingSphere(new Point3d(), 100.0)); uviverse.addBranchGraph(scene); } public void keyTyped( KeyEvent evt ) { Transform3D rotation = new Transform3D(); rotation.rotZ( Math.PI/6.0 ); Transform3D original = new Transform3D(); objTrans.getTransform( original ); rotation.mul( original ); objTrans.setTransform( rotation ); } public static void main(String[] args) { new MainFrame(new test(), 256, 256); } }
812 :
デフォルトの名無しさん :03/07/30 00:45
publicでstaticなメソッドやフィールドは newしなくても参照できるんですよね? これって内部的にnewしてるんでしょうか? 複数回 public staticなフィールド等を参照するときは newしておいたがレスポンス的には良いとかいうようなことって ありますか?
813 :
デフォルトの名無しさん :03/07/30 01:39
ビット演算とはどのようなときに使うと有効ですか? いまいち使い道がわかりません
>>812 newしてないしょ。クラスファイルを参照してるだけじゃない?
インスタンスからクラスフィールドにはアクセスできないからnewしようが関係ないと思われ。
815 :
デフォルトの名無しさん :03/07/30 01:58
アプレットで出来る面白いゲームってどんなのが考えられますか? 最初マリオみたいのを作ろうとしたんだけど、限界を感じました。
816 :
デフォルトの名無しさん :03/07/30 02:00
>>806 =810
何度も言わせんな!
objTrans.addChild(vertex);
がダメなんだよカス
>>813 暗号、符号化かな?(MD5とか)
あとは処理速度早めたり、メモリ節約したいときとか。
new byte[4]; このとき、ヒープ領域に占めるメモリは本当に4バイト(8bit*4)なんですか? それともbyte型1つに対して、32bitの領域が一つ割り当てられるんでしょうか?
>>819 ヒープ領域を占めるのは 1byte * 4 + オブジェクトヘッダに必要なバイト数
new boolean[8] は 1bit * 8 + オブジェクトヘッダに必要なバイト数
でなくて 1byte * 8 + オブジェクトヘッダに必要なバイト数 になるけど。
821 :
デフォルトの名無しさん :03/07/30 09:43
先月からjavaの勉強を初めて 買った本の通り一通りアプレットの方をやって 今ウィンドウアプリの勉強をしてるのですが ウィンドウ内に四角を表示させようと、windowのソースを書いて アプレットと同じ要領で public void paint(Graphics g){ g.drawRect(1,1,180,180); } の一文を加えたのですが全然出てきません 本の方を読んでみたのですがアプレットメインの本のためか ウィンドウアプリについてはちょこっとしか触れて無くて書いてませんでした やはりjavaアプリでは使う命令が違うのでしょうか? その場合何という命令を勉強すべきなのでしょうか?
>>821 「全然出てきません」の内容を30倍くらい詳しく書いてから出直してこい。
とりあえず直感で答えると、WindowかFrameオブジェクトのsetVisible(true)を
読んでないから、かも。
線分を何千何万と表示させたいのですが エラーが出て長すぎ?多すぎ?みたいなこと言われます。 どうすればいいでしょうか? 考え方?ヒントを教えてください
すいません、激しく説明足りませんでした コンパイルは通って実行も出来、ウィンドウは表示されるのですが 四角の図形だけが出てきません setVisible(true)は多分問題ないと思うのですが… やはり別の本買ってくるべきでしょうか(´・ω・`)
>>825 だから説明不足なんだって┐(´д`)┌
setBackgroundなんかで塗りつぶしてんじゃないの?
>>825 質問ってのは、
>>826 が言う例のように、たいてい質問者本人が勘違いしてるわけ
つまり問題点は、質問者が「間違ってない」と思い込んでる所にある
だからそんな説明いくらした所で、なかなか解決には結びつかん
ストレートに言うとだな。四の五の言わずにソース貼れ
>>820 boolean型であろうと、byte型であろうと
メモリはバイト単位で確保されるわけですね。
ありがとうございました。
>>828 820ではないが、それは違うと思う。
new double[8]やlong[8]は2byte使うから2×8+(メモリ管理に必要なヘッダ領域)のはず
booleanは例外。(というか仕様に明確に書いていなければ、VM依存の可能性もあるな)
ところでメモリをどれだけ食うかがそこまでシビアに必要になる場面ってあるの?
832 :
デフォルトの名無しさん :03/07/30 15:08
javaでタイピングソフト作ってるんだけど、 「し」とかの場合siでもshiでもいけるようにしたいです。 今は文字列からcharAtで文字を取ってきてそれを打った文字とを比較しているのですが。 どうしたらよいでしょうか? なにかヒントをください。
>>829 long,doubleは64bitsの8バイトじゃなかったっけ?
だからnew double[4]は8×4の32byteっしょ。
スクロールバーから取得した値をrotationの角度に入れたいのですが scrollbar.addAdjustmentListener( new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { float value = (float)e.getValue(); rotation.rotX(value); ←←← textField.setText( Float.toString(value) ); } }); public void keyPressed( KeyEvent evt ) { Transform3D rotation = new Transform3D(); rotation.rotX( value ); Transform3D original = new Transform3D(); objTrans.getTransform( original ); rotation.mul( original ); objTrans.setTransform( rotation ); } ←の部分のやり方ではダメなのでしょうか?
836 :
デフォルトの名無しさん :03/07/30 18:27
>>821 Appletにmain(String args[])がないのは知ってますか?
とりあえず下に記述したものをコンパイルして実行するとうまくいきます。
import java.awt.*;
class Test extends Frame{
Test(){
setSize(400,400);
setVisible(true);
}
public void paint(Graphics g){
g.drawRect(20,40,180,180);
}
public static void main(String args[]){
new Test();
}
}
これでなぜ動くのか?自分で勉強しましょう!!!
838 :
デフォルトの名無しさん :03/07/30 19:14
>>835 rotation.rotX(value); ←←←が作用しないと言うことですか?それともエラーがでる?
public void keyPressed( KeyEvent evt ) {
Transform3D rotation = new Transform3D();
rotation.rotX( value ); //ここは作用するのでしょうか?
なにがどうダメなのかよくわかりません???
PS
Transform3Dを探すのに苦労しました。今まで一度も使ったことがありませんが(なのであまり信用しないで!)
public void rotX(double angle)となっています。引数がdouble型ですが、自動で格上げ
されるので問題ないと思います。
>>835 ソースコードは問題ないが、まず間違いなくあなたが思ったとおりには動かないはず。
rorXは角度を指定しなければいけないはずなのに、getValueの戻り値をそのまま使っているのが問題
>>838 >Transform3Dを探すのに苦労しました。今まで一度も使ったことがありませんが(なのであまり信用しないで!)
google検索のトップにきていますが何か?
返信ありがとうございます。
C言語は少しかじったのですがJavaは最近始めたばかりでいろいろ戸惑い試行錯誤しています。
>>838 rotation.rotX(value);
の行すべてにシンボルを解決できません。というエラーがでます。
>>839 rotation.rotX(Math.PI/value);
にしてもエラーがでます。
間違っているのでしょうか・・・
質問ばかりですいません。
842 :
デフォルトの名無しさん :03/07/30 19:51
>>841 シンボルが解釈できません。とは変数rotationが見えていないという意味です。
Transform3D rotation = new Transform3D();を
グローバル変数で宣言します。書き方は
Transform3D rotation;
rotation = new Transform3D();
と書きます。
843 :
デフォルトの名無しさん :03/07/30 19:51
845 :
デフォルトの名無しさん :03/07/30 20:19
>>841 すべての行にでる!パッケージをインポートできていない可能性もあります。
846 :
デフォルトの名無しさん :03/07/30 20:41
class Test5 { static /*final*/ int num; Test5(int num) { this.num = num; } int getNum() { return this.num; } } 2行目のfinalのコメントを外すとコンパイルできなくなります。 なんていうかfinalなstatic変数使いたいんですけど どうすればいいのですか? 環境変数とか起動がとにかく超重いオブジェクトとかを複数のインスタンスで 同じのを使いたいですが。。わかりますか?
>>846 コンストラクタで定数に代入しようとしている…。
>>846 君は本物のバカだな。
いやー夏ですね
this.num ←これ、ひょっとしてstatic変数指してるつもり?
849 :
デフォルトの名無しさん :03/07/30 21:00
>>848 >this.num ←これ、ひょっとしてstatic変数指してるつもり?
ビンゴ!補完力抜群だね。いいSEになれるよ。
this.numをTest5.numに書き直しました。
final 変数 num に値を代入することはできません。
て出る。。。
コンストラクタで一回だけ設定したら
後は定数として使いたいんですけど。
一応、俺のJava歴は言う必要ないと感じている。
やるならこうだ。 class Test5 { final int num; Test5(int num) { this.num = num; } int getNum() { return this.num; } }
class Test5 { final int num; Test5(int num) { this.num = num; } int getNum() { return this.num; } }
class Test5 { final int num; Test5(int num) { this.num = num; } int getNum() { return this.num; } }
すげっ。ケコーンするか?
854 :
デフォルトの名無しさん :03/07/30 21:10
final変数は一度値を入れると変更できません。
static final int num;
だとnumにデフォルト初期値0が入り変更ができません。
デフォルト初期値はコンパイルのときに設定されるので、プログラムが
動作する前にすでに決まっていて、変更はできません。
---------------------------------------------------------
static変数はstaticメソッドからしかアクセスできません。
コンストラクタはstatic修飾子がつけられません。
でも非staticコンストラクタからstatic変数へのアクセスではコンパイルエラーがなぜかでまん。
そのまま無視されます。
-------------------------------------------------------------------
>>849 まさかわかってわざと書いた???
それとも単なる「へぼ」か???
>>一応、俺のJava歴は言う必要ないと感じている。
ぜひ聞きたいですね!!!!
>>854 >ぜひ聞きたいですね!!!!
8年半。
>>854 >ぜひ聞きたいですね!!!!
10分。
857 :
デフォルトの名無しさん :03/07/30 21:15
java一番乗りですか??? でもそこまでスキルがあれば同期(synchronized)で発生する デットロックでなぜかとまってしまいますとかの質問とかを聞けばいいのに??? たぶんここの人たちオタクが多いから答えてくれると思うよ。 ちなみに私は3年半でつ・・・
>>857 >ちなみに私は3年半でつ・・・
まぁ、そんなもんか。お痛派ほどほどにしとけよ。
あるデータ型を自作するときclone()メソッドはどのようにオーバーライドすればよいでしょうか? 各フィールドの参照型に対してはすべてclone()メソッドを適用すべきでしょうか? String型はclone()を使わずとも=を用いるだけで大丈夫だそうですが、 それはどうやって判断すればいいでしょうか?
860 :
デフォルトの名無しさん :03/07/30 21:47
一件落着したところ申し訳ないのですが。 final変数って最初に一回だけ設定できるって習ったんだけど 違うわけ? #define とか const みたいな感じ? 「コンストラクタで一回だけ設定したら 後は定数として使いたいんですけど」を実現するには コンストラクタで一回だけ設定して 後は絶対変更しないように気をつけて作る ということ?
>>842 おおおおお
できました!
ありがとうございます
>>860 なぁ、値の設定はコンストラクタでやってその変数に対してセッタを提供しなけりゃ良いんでは?
>>860 >final変数って最初に一回だけ設定できるって習ったんだけど
>違うわけ?
あってる。
ただし static の場合はクラスが読み込まれたとき (=コンストラクタが呼ばれる前) に
初期化してやらないといけない。
だから値を設定するには宣言と同時にするか
static initializer (static{} ブロック) で初期化してやればよい。
>>849 >コンストラクタで一回だけ設定したら
>後は定数として使いたいんですけど。
上記の理由で、コンストラクタで設定することはできない。
>>846 ==
>>860 だよね?
final変数はconstと同じ。
#defineはコンパイル時に決まるが(というか置き換えられる)、
finalは実行直前,または実行時に決まる。
コンストラクで一回〜の答えは
>>862 だね。
だから static にこだわるとしたら class Test5 { static final int num; static { num = 5; } int getNum() { // static int getNum() でもよい return Test5.num; } }
>>868 それは質問者の
>コンストラクタで一回だけ設定したら
>後は定数として使いたいんですけど。
の部分がごっそり無視されてるぞ。
public class Hoge { private static int foo; public Hoge(...) { ... if (foo != 0) { foo = zzz; } } public static int getFoo() { return foo; } }
>>869 865と合わせて読んでくれよ。
コンストラクタで static final な変数の設定はできないって書いてあるだろ。
だから static にこだわるとしたら 868 にするしかないって書いただけだ。
if (foo == 0) { foo = zzz; } だね。0の部分には「設定されていない」という意味を込めて0ね。
>>871 OK。ワカタ。
static final変数の初期化に複雑な処理が必要な場合、
staticブロックがあるよ。
って質問者に言いたかったわけね。
874 :
デフォルトの名無しさん :03/07/30 23:09
>>873 呼び名はstaticブロックではありません。
staticイニシャライザです。
>>874 あっ、そうなんだ。何の違和感もなくブロックって呼んでたよ。
>>875 オタクの話に付き合う必要はない
そんなもんどっちだってかまわん
大体そういうやつは
HPって言う言葉にもイチャモンをつけるやつらだからな
>>876 その辺は分かってますがな、知識として持っておいて
これからもstaticブロックって言うでしょう。普通に通じますし。
ちなみにHPと言えば俺はホームページですが、
ここの板の人はhpが多いかな。ヒットポイントはゲーム板?w
>>859 私なら clone は使わない。
今あるオブジェクトと同じ*オブジェクトをもう1つ作りたいなら、
コピーコンストラクタを書く。
どうしても clone したいなら、EffectiveJava という本の
「項目10 clone を注意してオーバーライドする」という記事を
理解してからに汁。
(*「同じ」ってのも、あれだな。どれくらい同じか、っていう程度問題だな。)
いやそうではなくて、 「Web」あるいは「Webページ」と呼べ! と、言うだろうそういうやつらは
WebとWebページはちげえよハゲ
肉じゃがは関東と関西で肉が違うよハゲ
882 :
デフォルトの名無しさん :03/07/30 23:57
そうそう! 上京して知ったんだけど、 こっちでの肉うどんとか肉そばの肉って豚肉なのよね。 地元だと牛肉なのよ。 この差はおおきいわよ
関西と関東ではエスカレータの並ぶ側が違うのは有名なことだが、 関東は左側で日本の交通ルールと同じ、 関西は右側で、こっちがよりグローバルだといえる。 関西では万博が開かれたのが影響したらしい。
>>878 正確な型がわからないけど clone したいってときも、
コピーコンストラクタでOKですか?
885 :
デフォルトの名無しさん :03/07/31 00:16
>>884 OKOK。大丈夫。心配ない。
イジワル。(T_T)
>>884 「正確な型」が若干意味不明だけど、
cloneメソッドは普通はそのクラスと同じ型のインスタンスを返すものですよ。
ちなみにコピーコンストラクタ使うならば、型は必然的に決まります。
継承云々なら、キャストすればいい話だと思いますし。
>>885 スレ違いで非常に申し訳ないが、その英国式になった理由分かります?
豆知識として知っておきたいです。
>>887 刀を差している侍同士がすれ違ったときに刀をぶつけないように。
>>859 >String型はclone()を使わずとも=を用いるだけで大丈夫だそうですが、
>それはどうやって判断すればいいでしょうか?
StringはImmutable(オブジェクト構築後、値を変更できない)だから。
>>859 >String型はclone()を使わずとも=を用いるだけで大丈夫だそうですが、
>それはどうやって判断すればいいでしょうか?
どんなインスタンスだって、代入演算子 = を使って、あるインスタンスへの
参照を別な変数に代入できる。
これは、java.lang.String 型に限ったことではない、と思うが。
私の「大丈夫」の意味の捉え方が、間違ってるのかな。
あらら、拍子抜け
>>893 >私の「大丈夫」の意味の捉え方が、間違ってるのかな。
はい。
>>String型はclone()を使わずとも=を用いるだけで大丈夫だそうですが、
は、多分「Stringは例えば b = a.clone();の代わりに b = a; としても問題ない」という意味。
Stringはclone()を使わなくても参照のコピーだけでclone()と同じ効果が得られる。
これは何故かというとStringがImmutable(不変)だから。(clone()の実装が { return this; }でも良い)
ImmutableなオブジェクトであればStringに限らず同じことが言える。
このようなクラスは例えばIntegerやLongなどのプリミティブ型のラッパークラスとか。
逆に、自分で作ったクラスをImmutableにすれば、clone()を実装する必要は無い。
or実装しても return this; だけで良い。
ここで聞くより「java イミュータブル」でぐぐれば浅海さんの解説が見つかるよ
つまり変更できないオブジェクトってのは見ることしかできないわけだから コピーがいくつあったとしてもまったく区別できないわけで、 (b = a.clone() とした b がその後の操作で !b.equals(a) になることはありえない) それだったら実体をコピーせずにおんなじものを見てれば問題ないわけだ。
>849 バカだね。 インスタンスが1つしかつくられないなら、それでもいいが、 2つ目のインスタンスが作られたとき、 static finalな変数numに再び代入されてしまうぞ。 コンパイラがそれを見逃すわけないだぞ。
>896 それは static 変数の話でコンパイラが見逃していないのは final 宣言 されてることだろ。
JAVA3Dで外部ファイルから座標データを読み込みたいのですがさっぱり分かりません。 Point3d[] vertices = new Point3d[100]; vertices[0] =new Point3d(x1, y1, z1); vertices[1] =new Point3d(x2, y2, z2); x1,y1,z1にデータの数値を入れたいです。 googleで調べてみたのですがセキュリティの関係でできないと書いてあるのを1つ見つけましたが 本当でしょうか?
replaceAll で "+"記号を置換したいのですが、 "\+"と書くと、"エスケープ文字が不正です"でコンパイルエラーになってしまうのですが 賢明なみなさまはこういうときどうするのでしょうか。
あーわかったかもです・・めんどくさ・・
\\ アホ必死だな(藁
902 :
デフォルトの名無しさん :03/07/31 11:04
interface Itest{ void test(); } class hoge implements Itest { void test(){ System.out.println("TEST"); } } このときコンパイルエラー Itest から継承されたメソッドの表示レベルを下げることはできません。 が出ますが、エラーメッセージの意味がわかりません。おせえて
Random rand = new Random(); rand.nextInt() & 0x3f; ↑で乱数の値は0〜1023までになってるでしょうか? 初心者ですいません。おしえて下さい
>>903 rand.nextInt(1024)
とか、
rand.nextInt() % 1024
とかじゃだめ?
いいんですが903のやつでできると 言いはってる知り合いがいるので知りたいんです。
intの範囲全部が対象になるみたいでつね。 まぁ、丸められるんだとは思いまつが、負の値の時とかの処理がアレなので、一定の分布となるかは疑問。 頼れる兄貴の回答を待って下さいでつ。
ああああああああああああああああああああああああああああああああああああああああああああああああ
>>902 インターフェースのメソッドは
何も書いてなくてもpublic abstractがついてると思ってください
(いや、実際ついているんですが書かなくてもOK)
public > package > protected > private
なのでpublicより上の広い修飾がないので
実質、public以外書くとエラーになる
あなたが書いたclass hogeのtest()はスコープがpackageなのです
なので
public void test(){・・・・・}
と書いてください
了解。 てふてふんありがとうでつた
禿げっ
>>903 実際に試していないけど、それじゃ全然なってない。
0〜63になる気がする。
>>908 > public > package > protected > private
public, protected, 無指定(package private), private
どーせ書くなら正確に。
おいおい0x3FFだろ。
あ、そう。03FFです。 すんません。出る確率って一様に同じと言えますか?
0x3FF です。ほんとスンマソ
>>915 >出る確率って一様に同じと言えますか?
気持ちわかる。要するに両端部分の数字のことを言ってるんだろ?
(この場合0が選ばれる確立が他よりも若干少ないかも・・・)
俺も昔悩んだけどね
あれ?1023かな?まあいいや
920 :
JGreener :03/07/31 13:40
すいません、
>>97 なんですが未だに解決してません(汗
>111がおっしゃるように、ブロックしてしまってどうしようもないのでしょうか。
お知恵を拝借させてください。
>>920 で、たとえばスレッド使ったり試してみたの?
質問なんですが PrintWriterなどのストリームと最終的な出力の間で どんな値がやり取りされているのか見たい&データ加工したいのですが どうすればいいでしょうか? たとえば、PrintWriter outって言うのがあって 最終的な出力先は標準出力だとします out→<見たい&データ加工>→標準出力 って言うのがやりたいのです で、Pipeストリームが使えるんじゃないかと思いましたが このやり方だとどっからかInputのストーリームを持ってこなければいけないので 出来ないのです。 つまり上の例で言うと ↓のような位置にPipeストリームを持ってこないといけないということです in→Pipe→out→<見たい&データ加工>→標準出力 コレじゃ意味ないのです で、今しかたなくやってるのは out→<一時ファイル書き出し>→<一時ファイル読み込み>→<見たい&データ加工>→標準出力 っていう、やり方です。あきらかにまずいです。 outストリームの内容をキャッチできるようなものないでしょうか?
>>920 つまりね、
>>111 が言うように
I/Oやってる間は他のことが出来ないんだよ
だから、読み込み終わるまでその処理にプログラムは専念する
でちょっと話は変わるが、
>>97 のやりたいことは読み込みながら随時処理したいってことだと思うけど
相手が、XMLファイルって言うのが厄介だな
DOMなら完全に無理だろうし、
SAXならどうなるのかわからないよ
>>924 SAXはタグのイベントを取っているだけなので、逐次処理でもできる気がするんですが・・・。
ちなみにSAXのかわりに自分で簡単に組んだ方では、逐次処理できました。
以下のような感じです。
Process proc = Runtime.getRuntime().exec( "hoge" );
InputStreamReader reader = new InputStreamReader( proc.getInputStream() );
BufferedStreamReader buf = new BufferedStreamReader( reader );
これでbufを逐次処理でデータをとることができました。
PAXでも同様にできないでしょうか。
>>925 まず、SAXつかってXML的な処理をしたいって言うのは
間違いないよね?
だったら、
>DOMなら完全に無理だろうし、
>SAXならどうなるのかわからないよ
っていうこと
だってさ、途中まで読み込んだXMLっていうのは
終タグのないXML、つまりXML文書としては不完全な形だよね?
SAXが不完全な状態のXMLファイルを読み込んだ場合
どうなるのかな?俺は試してないけど・・・
もしこれで、ずーっと止まったままあるいはエラーになれば
いくらタグイベントで処理するSAXでも無理ってことになる
ためしに、途中まで書いたXMLファイル作ってみてそれでやってみれば?
自作の方はただ単に読みこんでるだけだからOK
>>898 Appletじゃなければ、普通にローカルファイルから座標データを読み取ればいいのでは?
Appletなら、Appletと同じディレクトリに座標データファイルを置いて、
getClass().getResourceAsStream("データファイル")でストリームを
取ってこれなかったっけ?
torqueの質問はここでいいですか?
930 :
デフォルトの名無しさん :03/07/31 15:52
JTableのセルの中身を外から書き換えるのはどうすればできますか?
>>930 外からっていうのは直接書き込むのではなく
他から値をぶっこむって言うこと?
もしそれで解釈あってるとしたら
俺以前にやったような・・・ちょっと探してきます・・・
>>932 言葉足らずでスマソです。TextFieldの様に、実行してからそれを編集できないかということです。
>>933 それなら、普通に出来るよ
まだ、プログラム組んでないのなら
とりあえず組んでみてわからなかったらまた聞いて
>>934 いや、今実際に組んでみて試しに書き換えてみて、
外面的には書き換わっているんですが、
そのあとで中から読んで表示させてみると、
書き換える前のデータなんです。
>>935 >そのあとで中から読んで表示させてみると、書き換える前のデータなんです
なんとなく言ってる事わかりますが、もうチョイ詳しく
「そのあとで」・・・いちど非表示にしたあと?
「中」・・・中とはどこのこと?
「表示」・・・どういう風に表示?
それから書き込んだデータは一度どこかに保存しないと消えます
保存って言うのは、クラスのフィールドとかに保持しておくって言うことですが
どうでしょうか?
私は930ではないですが、 TableModelListener を実装したクラスで、 テーブルへの変更の通知を受け取って、 どこがどう変更されたかを調べて、それをどっかに 保存しておけ、っていうことでしょうか。
>>936 たびたびどうもすいませんです。。。
アプリケーションの流れ上入力した後ボタンを押すとセルの内容を表示させるようになってます。
System.outで表示させてるので編集に使っているeclipseのコンソールウィンドウに表示がでます。
//簡単にちょっと作ってみました。入力したあとフォーカスが離れないと反映しないようです //試してみてください import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class TableTest { public static void main(String[] args) { JFrame f = new JFrame(); final DefaultTableModel m = new DefaultTableModel(); JTable t = new JTable(m); m.addColumn("COLUMN1"); m.addColumn("COLUMN2"); String[] data={ "初期値1","初期値2"}; m.addRow(data); JButton b = new JButton("OK"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {System.out.println(m.getValueAt(0,0));} }); Container c = f.getContentPane(); c.add(t, BorderLayout.CENTER); c.add(b,BorderLayout.SOUTH); f.setBounds(100, 100, 300, 300); f.setVisible(true);}}
いま仕事を引き継いでいるのですが、 protectedなgetter,setterを多用してるソースを眺めてます。 getterとかは、フィールドを隠蔽するために用いると覚えていたので クラス内のフィールドにアクセスするのに わざわざgetterを準備するモノなのかと思いました。 確認のためそのgetterの中身などを見ましたが、 単純にフィールドを返すだけのものだけでした。 Javaのスタイルで言うとこれは普通のことなのでしょうか? それとも趣味の問題なのでしょうか? 私からすると、すごく助長なコードになって嫌すぎです。
>>940 サブクラスには読み込み専用で・・・とかやりたいならまぁ・・・。
>>939 わざわざ作っていただいてありがとうございます。
今試してみました。思うとおりの動きになってます。
助かりました。ありがとうございます!
>>940 Javaってかオブジェクト指向で言うところの"隠蔽"
ってのは、あくまで外からは隠すってことなので、
普通そんなことしない。
普通にフィールドに直接アクセスするよ。
945 :
デフォルトの名無しさん :03/07/31 18:01
protectedと修飾無しの違いがいまいちわかりません protectedは同パッケージまたはそのサブクラス とありますが ”またはそのサブクラス”ってどういういみでしょ?
946 :
デフォルトの名無しさん :03/07/31 18:06
>>945 そのクラスを継承して作られたクラスのこと
>>945 class A extends B
の関係だったらBはAのサブクラス
ところで、
修飾なしは「同パッケージ内からのアクセスのみ可」
protectedは「そのクラスとそのクラスのサブクラスからのみアクセス可」です
訂正:AはBのサブクラス
ん? そりはC++では? Javaのprotectedは同一パッケージ内および派生クラスからアクセス可能でしょ。
950 :
デフォルトの名無しさん :03/07/31 18:15
>>946 違います。
protectedは修飾子ですからクラスではありません。アクセス権が違うだけです。
protectedは違うパッケージのサブクラスからも呼び出し可能ですが、
修飾無は同じパッケージのサブクラスからしか呼び出せません。
>修飾無は同じパッケージのサブクラスからしか呼び出せません。 ???
private => 同一クラス内からアクセス可能 修飾なし => 同一パッケージ内からアクセス可能 protected => 修飾なしの場合に加えて、別パッケージのサブクラスからもアクセス可能 public => どこからでもアクセス可能 C++とは違うんだってば。
クラス内クラスはどうなるの?
954 :
デフォルトの名無しさん :03/07/31 18:23
なんだか混乱を招いている奴がいるぞ。
>>949 すいませんまとめます
private package protected public
○ ○ ○ ○ 同じクラス
○ ○ ○ 同じパッケージ内のサブクラス
○ ○ ○ 同じパッケージ内の非サブクラス
○ ○ 他のパッケージ内のサブクラス
○ 他のパッケージ内の非サブクラス
ずれてなければいいが・・・
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。 ?
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。 ??
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
>>950 修飾無は同じパッケージのサブクラスからしか呼び出せません。
○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
え〜950も過ぎましたので、恒例のあのコーナー行きたいと思います
【初心者】Java質問・相談スレ28【大歓迎】
ナイスなスレ ノミネート作品(投票結果発表は
>>1000 あたり)
その1
>>43-49
googleで検索してみてファイルから読み込む方法は分かったのですが どうしても代入できません・・・ どうすればいいのでしょうか try { BufferedReader myReader = new BufferedReader(new FileReader("aaa.txt")); String line; int i; Point3d[] vertices = new Point3d[1000]; while ((line = myReader.readLine()) != null) { for(i = 0; i < 1000; i++){ vertices[i] = ここが分かりません } } myReader.close(); }
964 :
デフォルトの名無しさん :03/07/31 20:01
コンパイラは何が一番いいですか?
965 :
デフォルトの名無しさん :03/07/31 20:02
966 :
デフォルトの名無しさん :03/07/31 20:02
968 :
デフォルトの名無しさん :03/07/31 20:21
アプレットでインターネットランキングに対応させる方法が詳しくのってるサイトってないでつか?
969 :
デフォルトの名無しさん :03/07/31 20:24
>>966 他のコンパイラあんのかよ。
IBM JDKのコンパイラとsunのjavacぐらいだろ。
あとは自作ってか?
>>969 > 他のコンパイラあんのかよ。
↓
> IBM
971 :
デフォルトの名無しさん :03/07/31 20:27
>>966 は
eclipseとか答えてほしかったんじゃないの?
まあ、正確に言えばあれはコンバイラじゃないけど。
972 :
デフォルトの名無しさん :03/07/31 20:30
>>970 「IBMコンパイラ」って答えを期待してたのか?
それで、javacと答えられたから「 まじめに答えろクズ 」なわけ?
こんなことで、議論してる俺たちって・・・
964!=966
jikes って答えてほしかったのでは?
>>963 せめてaaa.txtがどのように書いてあるか
教えてくれ
Forte for Java に付いてる fastjavac とか。 ネイティブコードで書かれたコンパイラなり。 バグはjavacより多いらしいが普通に使える。
unko
>>976 0.00 0.00 0.00
1.00 1.00 1.00
といった少数の羅列です
あのう a.javaというファイルから b.javaの関数を呼び出すにはどうすればいい?
壊滅的にアホですね
>>979 コンパイルしとらんから違ったらすまん
でも多分こんな感じ
BufferedReader myReader = null;
try{
try {
myReader=new BufferedReader(new FileReader("aaa.txt"));
String line;
int count=0;
Point3d[] vertices = new Point3d[1000];
StringTokenizer st=null;
while ((line = myReader.readLine()) != null) {
if(count==1000)break;
st=new StringTokenizer(line," ");
double[] temp=new double[st.countTokens()];
for(int j=0;st.hasMoreTokens();j++){
temp[j]=Double.parseDouble(st.nextToken());
}
vertices[count]=new Point3d(temp[0],temp[1],temp[2]);
}
}
catch(Exception e){
}
finally{
myReader.close();
}
}catch(Exception e){
}
あっすまん早速countを足し忘れてたw while文の最後にでも++しといてちょ。
>>981 そんなこと言わずに教えてくれよ!
986 :
デフォルトの名無しさん :03/07/31 23:12
987 :
デフォルトの名無しさん :03/07/31 23:12
988 :
デフォルトの名無しさん :03/07/31 23:13
∧_∧ ( ・∀・ )つ ( つ / | (⌒)どどど・・・ . し' 三 ∧_∧ ⊂( ・∀・ ) . ヽ ⊂ ) (⌒) |どどどどど・・・・・ 三 `J /ヽ /ヽ / ヽ___/ ヽ / \ | ■ ヽー/ ■ | ターミネーター3まだぁ? \ ∨ /
>>989 なんだ。それならそうと言ってくれればいいのに a.javaってファイルを実行しようとしたらメソッド?が65kよりでかくて無理ってエラーがでるんです。 それを解決するために分けようとしたんだけど全く見当違いだったのか
壊滅的にアホですね
>>991 あなた981? もしかして僕をからかってる?
>>992 俺は991じゃないが親切で教えてやる。
そういうコードは一般的にクソと呼ばれる。
だから、そういうクソコード書く奴は壊滅的にアホで妥当。
>>993 ごめんなさい。 C言語だと関数使えるからその癖でさ・・・ 皆はこういうときどうしてるの?
996 :
デフォルトの名無しさん :03/07/31 23:35
Javaの限界が垣間見えます。
997 :
無料動画直リン :03/07/31 23:38
小さいクラスつくれ。
999 :
デフォルトの名無しさん :03/07/31 23:41
記念カキコv(^o^=)
1000 :
デフォルトの名無しさん :03/07/31 23:41
1000げっと♪v(^o^=)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。