【初心者】Java質問・相談スレ47【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath
前スレ
【初心者】Java質問・相談スレ46【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1085129540/l50
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc2.2ch.net/hp/ */
0412デフォルトの名無しさん
NGNGファイルを開くことができるよ。
0413デフォルトの名無しさん
NGNG試してみたけど、情報が欠損してるわけではなさそうだね。
<root>aaaa...</root>
のデータでaaaa..が10000バイトあるとする。
この場合、
1.startElement(root)
2.characters(8192バイト)
3.characters(1808バイト)
4.endElement(/root)
#2は自分の実験では、ch.length==8193 start==48 length==8145
の順番で呼びだされるので、
2と3の結果を結合すれば望みの
出力が得られることになるはず。
で、その処理を行うにはcharactersがどの要素内で呼び出されたかを知る必要がある訳だが...。
自分が過去に似たようなことを行ったときは、スタック構造を利用して、
startElementでpush、endElementでpop、charactersで判定を行うようにしてたな。
0414デフォルトの名無しさん
NGNG無理。
でも JNI かなんか使ったライブラリがあればいいだけの話 (だから pure java ではない)。
そういうのがほんとにあるかどうかは知らん。
0415デフォルトの名無しさん
NGNG一応それらしいもののリンク張っとく
詳しく知らないから
全然無関係かもしれない。
http://www.tolstoy.com/samizdat/jconfig.html
0416デフォルトの名無しさん
NGNGSNMPについて調べな。
0418デフォルトの名無しさん
NGNG関連付けられたエディタではないが、たとえば
Runtime.getRuntime().exec("notepad");
とすればWindowsではメモ帳が開く。
これを使えば強引ではあるが、少なくても任意のテキストエディタでは開けるかな。
0419デフォルトの名無しさん
NGNGNTかXPなら
Runtime.getRuntime().exec("cmd.exe /C hoge.txt");
で、txtファイルに関連づけられたプログラムが起動する。wordやhtmlも可。
98は知らないのでパス。
0420デフォルトの名無しさん
NGNGウィンドウの中に閉じるボタンを作りたいです。
addActionListener(btn) して、
actionPerformed(ActionEvent e)
の中で閉じる処理をしようとしているのですが、
ウィンドウを閉じる処理はどのようにすればできるのでしょうか?
よろしくお願いします。
0421デフォルトの名無しさん
NGNGswingには安全にウインドウを閉じる方法が無かったと思います。
うそみたいな話ですが本当です。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGこのチェックボックスの数が、場合によって異なるため、
数が増えてもスクロールバーで全体が見えるようにしたいです。
JScrollPane に何かを貼り付けて、
それに JCheckBox インスタンスを貼り付けようと思ったのですが、
「何か」に適当なものが見つかりませんでした。
どのようにしたら、このようなものが作れますか?
よろしくお願いいたします
0424420
NGNGそ、そうなんですか!?
ぐぁ〜ん。がっかりです。
調べても見つからないわけですね・・・。
ありがとうございます。
>>422
それだと、システム自体が終了してしまいますよね?
ウィンドウだけを閉じたいのです。
もし、何らかの方法をご存知の方がいたら、よろしくお願いします。
0425デフォルトの名無しさん
NGNG根拠かソース?
>>424
そのウィンドウが
JFrame frame;
なら
frame.setVisible( false);
frame.dispose();
では?
0426デフォルトの名無しさん
NGNGわからない人がわからない人に教えるのは無意味。
もう少し考えてから書き込んでは?
0427デフォルトの名無しさん
NGNG0428420
NGNGsetVisible(false);
は、ただ見えなくするだけですよね?
dispose()
というのは api を見ると、
「この Window、そのサブコンポーネントと、その所有されたすべての子によって使用されているすべてのネイティブスクリーンリソースを解放します。
つまり、これらの Component のリソースが破棄され、それらの消費するメモリが OS に戻ります。
Window、そのサブコンポーネントと、その所有されたすべての子は、表示不可能としてマークされます。
Window およびそのサブコンポーネントは、pack または show を呼び出してネイティブリソースを再構築すれば再び表示可能にできます。
再生された Window およびそのサブコンポーネントの状態は、Window が破棄された時点のそれらのオブジェクトの状態と同じです。
破棄と再生の間の追加変更は考慮されません。 」
だそうですが、これはコンポーネントだけを廃棄して、
window は非表示にするだけ、ということでしょうか?
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGねただとは思いますがマジレスすると、かなりまずいですね。
0431デフォルトの名無しさん
NGNGframe.setSize( new java.awt.Dimension( 100, 100));
frame.setVisible( true);
//ウィンドウが開いた後、
//閉じるボタンを加える。
JButton button = new JButton( "閉じる");
ActionListener listener = new ActionListener(){
public void actionPerformed( ActionEvent ev){
frame.setVisible( false);
frame.dispose();
}
};
button.addActionListener( listener);
frame.getContentPane().add( button);
frame.pack();
これで何の問題もなく動くんだが
>>426はどういうこと?
0432デフォルトの名無しさん
NGNGほんとにわかっていないようですね・・・
問題なく動くように見えるだけです。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGで、なんで?
0435デフォルトの名無しさん
NGNG危険だという根拠まだー、ちんちん。
JDKのDISPOSE_ON_CLOSEも
setVisible(false);
dispose();
してますが?
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGなにか問題あるのかな
0438デフォルトの名無しさん
NGNGJPanel
0439デフォルトの名無しさん
NGNGおまえにはやらん。
0440デフォルトの名無しさん
NGNGBox の方がいいよ
0441デフォルトの名無しさん
NGNG片方が変数を通じてインスタンスの中身を変えると、もう片方の
変数も変えられた中身のインスタンスを参照するのは分かるのですが、
Stringは同じ参照型なのに、例えば
String s1 = new String("hello");
String s2 = s1;
として、s2の中身を変えても、s1には影響がないのは
なぜなのか分かりません。
知っている人がいましたら、是非教えてください。
0442デフォルトの名無しさん
NGNGs2の「中身(参照先)」は変更不能ですが…
s2自身は変更可能ですけれど。
0443410
NGNG�dクスコ。
>>419 の方法でやってみます。
あと、色々調べたところ、
Jakarta Ant の CovBase というクラスに、
protected java.lang.String findExecutable(java.lang.String relativePath)
というメソッドがあって、これがなんか使えるかもしれないので、調べてみます。
0444デフォルトの名無しさん
NGNGそーいうのやりたきゃ不変クラス使うな
StringやめてStringBufferで試せ
0445デフォルトの名無しさん
NGNGImmutableという概念の理解に壁があったりするのか?
同じ質問大杉だし。
0446デフォルトの名無しさん
NGNGJDesktop Integration Components の Filetypes API も調べてみたら?
https://jdic.dev.java.net/
0447デフォルトの名無しさん
NGNGレス、ありがとうございます。
ということは、s2の参照先が新しくなったという事ですね?
>>444
レス、ありがとうございます。
特に必要な訳ではないんですが、何でかなー?と思って。
既出だったんですね、失礼しました。
探しに逝ってきます。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGC++を知っていると仮定して説明するが
Javaでいう参照型はC++でいう参照ではなくポインタであると考えればよろしい。
0450デフォルトの名無しさん
NGNGそういう疑問は重要ですよ。
大切にしてください。
0451デフォルトの名無しさん
NGNGあなた取り付かれたようにそればっかりいってるけど
試せ試せとわめくより実例挙げてあげたら?
私流の教え方:
インスタンス変数とはあだ名である それ以上でもそれ以下でもない
インスタンスとは本名のない何者かであり、
何行にも渡って扱い続けるにはあだ名を必要とする
なお、2人以上に同時におなじあだなはつけない(そんなことしたら混乱する)
String usuge = new String("barcode"); // 今後 usuge は新しく作ったインスタンスのあだ名となる
String hage = usuge; // hage というのもさっき作ったインスタンスのあだ名になる
hage = new String("skinhead"); // hage というあだ名にふさわしい新たなインスタンスが今後 hage とよばれる
同時に、最初に作った奴はもはや hage とは呼ばれなくなったが依然 usuge と呼ばれ続けている
0452441
NGNGレス、ありがとうございます!
C++はJava以上にサパーリです。申し訳ない。
ググってみたら不変オブジェクトと可変オブジェクトの説明で
それらしきことを言っていました。
>>450
涙でディスプレイが霞んでるよ…。
0453デフォルトの名無しさん
NGNGそういう我流の変な例えかたって、悪影響ばかりあると思うんだよね。
あだなとか、値を入れる箱とか、そういう表現がさらなる誤解を生む
0454デフォルトの名無しさん
NGNG//usuge というあだ名で誰かを呼ぶのをやめて、usuge 不在とする
//barcode 頭は usuge 以外に呼びようがなかったため
//もはや誰にも呼んでもらえず思い出してももらえずもう世間に対してアピールできない
//(しばらくすると世間から抹消される=「ガベージコレクト」)
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGfusa = 0xFFFFFFFF;
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459306
NGNG環境によっては文字化けするんですが、なにか対策はあるでしょうか。
表示する文字を別ファイルにまとめるみたいなおおげさなものでなく
g.drawString("あいうえお", 10, 20);←こういうのを正しく表示したいんですが。
0460デフォルトの名無しさん
NGNGすいません、よその名前が残ってました
0461デフォルトの名無しさん
NGNGコンソール画面なんですがこんな感じの
#IOExceptionは省きます
try{
System.out.println("名前は?");
data.setName(input.readLine());
System.out.println("電話番号は?");
data.setTelephoneNo(input.readLine());
System.out.println("誕生日は?");
data.setBithday(input.readLine());
}catch(IllegalArgumentException iae)
System.err.println(iae.toString());
}
入力するプログラムがあります。
setNameやsetBithdayでは入力チェックが行われており
範囲外だとIllegalArgumentException(以下IAE)をthrowします。
上記のプログラムだとIAEをスローした場合、また最初から
入力し直さなくてはいけないわけで、IAEがthrowされた場合
再度入力をさせたいわけです。
で、自分は質問毎にクラスを作成して丁度、デザインパターンで言う
「chain of responsibility」のように数珠繋ぎにしようと思ったんですが
質問毎にクラスを作成するのってどうなんでしょう?
間違ってる気がするんですが他に思い浮かばないです。
ちなみにjavaの宿題スレの489の住所録を力試しにやってるんですが
この部分がどうなんだろと悩んでます。
一応、質問と相談なのでこちらでレスされてもらいました。
0462デフォルトの名無しさん
NGNGfont.properties とかなんとか調べて
0463デフォルトの名無しさん
NGNG一度作ったStringオブジェクトの内容はもう絶対に変わらない(ということになってる)ので
s2の中身を変えるという表現はおかしい
例えば
s2= "OK";
として変えたということならそれは
s2=new String("OK");
としたのと同じで単にs2の参照先が変わったということだけであって
s1には何の影響もないのは当然
また
s2=s2+"OK";
この場合は足した時点でs2が指すStringの内容"Hello"と"OK"をつなげた
"HelloOK"という内容のStringオブジェクトを新たに作るので
s1には影響しない
という感じでいいのかな?
0464デフォルトの名無しさん
NGNG俺の妹やん・・・orz
0465デフォルトの名無しさん
NGNGnew String("OK");
というのは
new String(new String(new char[]{'O','K'}));
と同じだとわかって書いてる?
実際に全く同じ処理をしてるかどうかは知らないけど。
0466デフォルトの名無しさん
NGNGどの番組?
0467デフォルトの名無しさん
NGNGどうなんでしょう?ってそこまで小難しいこと考えてあと何が分からないか分からない。
>間違ってる気がするんですが他に思い浮かばないです。
別に間違っちゃいないが、他に浮かばないって他の何?
「数珠繋ぎ」をやめるってことも含めて言ってるの?
よくあるウィザードなんかをお手本に考えりゃイメージ沸くと思うんだが。
0468デフォルトの名無しさん
NGNGNHK教育
誤爆すまそ
0469デフォルトの名無しさん
NGNGどんなバカなコンパイラだよw
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGおっさんが好き勝手言う番組になっとった。
0472デフォルトの名無しさん
NGNG0473こういう事です。
NGNGString s2 = s1;
というのは、
String s1 = new String("ABC");
String s2 = new String(s1);
と内部で処理されます。 (JAVAでは、これは決まり事なんです。)
String s1 = "ABC";
String s2 = s1;
String s1 = "XYZ";
というのは、
String s1 = new String("ABC");
String s2 = new String(s1);
String s1 = new String("XYZ");
となります。
C言語でいう参照とか、C言語でいうポインタとか考えるといいとか言う人がいますが、
そういう風に考えると余計に混乱します。
s2 = s1 というのは、参照でもポインタでもなくて、 new String(s1) というように
新たらしいオブジェクトが生成されて、それがs2に代入されるんです。 s2はs1のメモリ
アドレスの事なんて何も知りません。
JAVAではこうなるんです。決まり事なんで覚えるしかないんです。
0474デフォルトの名無しさん
NGNG> String s1 = "ABC";
> String s1 = new String("ABC");
その理屈だと
String s1 = new String(new String("ABC"));
String s1 = new String(new String(new String("ABC")));
と無限に続く罠。
0475デフォルトの名無しさん
NGNG> C言語でいう参照とか、C言語でいうポインタとか考えるといいとか言う人がいますが、
C++の参照とJavaの参照は全く違うね。
C言語のポインタはJavaの参照に近い(C++の参照よりは)
ポインタが理解出来てりゃ決まり事というように覚えなくても理解できると思われ。
0476デフォルトの名無しさん
NGNGColor c2 = new Color(c1);がないようなので
Color c2 = new Color(c1.getRed(),c1.getGreen(),c1.getBlue());
とやるほか無いのでしょうか?
0477デフォルトの名無しさん
NGNG0478477
NGNG0479477
NGNGの方が楽
しかし、コピーする必要ってある?
0480デフォルトの名無しさん
NGNGありがとうございました。
0482デフォルトの名無しさん
NGNGなにそつおねがいします!!!
0483デフォルトの名無しさん
NGNGたとえば・・・
Test4 myWindow = new Test4();
・・・こういう宣言をしたとします。
これは、「Test4のオブジェクトを作る」でいいんですよね?
「newでインスタンスを作る」って言葉、ちょっとおかしいですよね?
インスタンスって、クラスに関連付けされてるメンバーを指す言葉ですよね?
うーん?
俺の読んでる本がおかしいのか、今見てる解説サイトがおかしいのか、
はたまた、俺が何か勘違いしてるのか・・・
0484483
NGNGインスタンスは、オブジェクトに関連付けされてるメンバーを指すんでしたっけ。
myWindowのインスタンスメソッドとかインスタンスフィールドとか・・・
・・・でも、やっぱインスタンスを作るって言葉おかしいような・・・
0485デフォルトの名無しさん
NGNG大いに悩めw
0487デフォルトの名無しさん
NGNGmyWindow[0]=new Test4(); ←ここで実体化
0488483
NGNG実体化させた物は、オブジェクト。
そのオブジェクトに関連付けされてるメンバーをインスタンスメンバー。
実体化させなくても使えるクラス。
そんなクラスのメンバーをクラスメンバー。
そんな風に書いてた覚えが・・・
ちょっと本読み直してみます。
0489デフォルトの名無しさん
NGNG別にインスタンスでもかまわん
>そのオブジェクトに関連付けされてるメンバーをインスタンスメンバー。
インスタンスと呼んだ方が考えやすかろ
>実体化させなくても使えるクラス。
クラスは常に「使え」ますがな
>そんなクラスのメンバーをクラスメンバー。
そんなもなにもない。クラスのメンバはクラスメンバ。
文字でぐだぐだ述べてもしゃぁない。ソース見たら一発。static かそうでないか。
0490デフォルトの名無しさん
NGNGおそらくちょっと解釈違いして君が混乱してるか、その書籍の作者が沢村並みに逝かれてるかだと思う。
0491483
NGNG>クラスは常に「使え」ますがな
たしかに。
ちょっと言葉おかしかった。
実体化させなくても使えるクラスメンバーを、クラスメンバー。
・・・おおぉ!やっぱ言葉おかしい!
各名称をきちんと覚えないと本読んでも理解が薄い・・・
ってか、名称ばかりでずらずら書いてくれてる本もあるし。
最初のうちにキチンとね。
>>490
いや、たぶん俺が勘違いしてるっぽい。
もう一度本読んでおきます。
その前に、ウインド部品を操作するのが面白いので、
ボタン作ってラベルの文字変えて遊んでます。
0492デフォルトの名無しさん
NGNGインスタンスを破棄しては、どうですか。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class tesuto extends JFrame{
private static boolean b = true;
private static tesuto t;
public static void main(String args[]){
t =new tesuto();
t.setVisible(true);
}
tesuto(){
setBounds(10,10,200,200);
JButton j = new JButton("cc");
Container c=getContentPane();
c.add(j);
j.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
t.setVisible(false);
b = false;
t=null;
//t.setVisible(true);
}
});
}
}
0493デフォルトの名無しさん
NGNG馬鹿は語るな
0494デフォルトの名無しさん
NGNG((((;゚Д゚)))ガクガクブルブル
0495デフォルトの名無しさん
NGNG>String s1 = "ABC";
>String s2 = s1;
>というのは、
>String s1 = new String("ABC");
>String s2 = new String(s1);
>と内部で処理されます。 (JAVAでは、これは決まり事なんです。)
お前アフォか。頼むからもう書き込むな。もう一度Javaの勉強してこいC++厨が!
この場合の s2=s1 というはs2にs1の参照を渡す、と言う意味だろ。
もしかして、、、、俺、釣られたの?
0496デフォルトの名無しさん
NGNG>インスタンスって、クラスに関連付けされてるメンバーを指す言葉ですよね?
ちょっと違うと思う。
クラスは単なる設計図だよ。
インスタンスは個人的には動詞的に使うものだと思うんだけど。
インスタンス生成とか、インスタンス化とか。
そいで、クラスという設計図をもとにインスタンス生成したものがオブジェクト。
newは指定されたクラス領域(配列なら要素数分)のメモリを確保してコンストラクタを実効する。
それがインスタンス生成。
だから「newでオブジェクトを作る」でも、「newでインスタン生成(化)」でもどっちでもいいと思う。
どっちにしろ、その本の言葉はあまり一般的ではないと思うんだが。
オレの勉強不足かもしれんけど、
0497デフォルトの名無しさん
NGNGそれのどこが動詞的なのかと
動詞的なのは「生成」と「化」だろう
0498デフォルトの名無しさん
NGNGおれも最初、二つの意味の違いが分からなかったがどっちも同じ意味なんだな。
0499デフォルトの名無しさん
NGNGえ?
だからインスタンス生成「する」とかインスタンス化「する」っていうじゃん?
インスタンス「する」とかオブジェクト「する」とは言わないしょ?そういう意味で。
どうようにオブジェクト化っていう言葉も使わないし。
0500デフォルトの名無しさん
NGNGだからインスタンスという語は動詞的でもなんでもないだろう。
動詞的な語とくみ合わせて使われてる名詞だろ。
国語勉強せい。
0501デフォルトの名無しさん
NGNGあれって、アドレスだよね・・・?
違う物?
・・・乱数なのか?
>>483の間違ってる部分って、この部分だよね?
0503デフォルトの名無しさん
NGNGだからさ、インスタンスって言う言葉は名詞だけど生成とか化って付けて動詞的に使う方が多くないか?
って言いたいわけさ。
オブジェクトとインスタンスの違いみたいな話題になってたから。
逆にオブジェクトはそのまま名詞でしか使わないだろ?
インスタンスの品詞が何かなんてオレは言ってない訳で。
インスタンスが動詞なんて言ったか?
インスタンスは名詞で、それを動詞的に使うの。
分かる?
0504デフォルトの名無しさん
NGNG演算子のオーバライドでStringを生成するようになってなかったら
printlnでアドレス出てくる。
>>483は全然違う。
String s2=s1はそれ以外の何者でもない。
s2とs1は全く同じメモリ領域を指すことになる。
0505デフォルトの名無しさん
NGNG商品化 薬品生成
こういうときあなたは「商品、薬品を動詞的に使ってる」と主張するんですか。
そうだ、というならあなたはキチガイですね。
キチガイを相手にするのは賢い選択ではないので、私は反省してこれ以上の議論を放棄します。
0506デフォルトの名無しさん
NGNGわすれてください
0508デフォルトの名無しさん
NGNGまず注意力を身に付けろ
0509デフォルトの名無しさん
NGNGキチガイはあんた。
動詞ではなく動詞的にってことだろ?
商品化は明らかに名詞節(だっけ?)だが、商品化するっていうと動詞的に使ってることになる。
日本語の定義にぐちぐちしなくても、裏にある意図を読み取ることは出来ないのか?
賢人は多くは語らない。言われなきゃわからないアンタはきちがい。
見て盗めも然り。
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG>演算子のオーバライドでStringを生成するようになってなかったら
>printlnでアドレス出てくる。
実装依存みたい。
通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Object.html
■ このスレッドは過去ログ倉庫に格納されています