トップページ⇒tech
1001コメント322KB

【初心者】Java質問・相談スレ4【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。
0276274NGNG
>>275
レスありがとうございます。
テキストフィールドからアクションリスナー(イベント)のメソッドを使わずに、
情報を得ることってできますか?
できるならどのメソッドでしょうか。

たとえば、ダイヤルアップネットワークで、
ユーザー名のフィールドを持っていて、
接続のボタンが押されたときに、ユーザー名が記述されずに、
接続のボタンが押されていないかをチェックしたいのです。
0277274NGNG
誤)ユーザー名のフィールドを持っていて、
正)ユーザー名のテキストフィールドを持っていて、
0278デフォルトの名無しさんNGNG
java.awt.TextComponent.getText()


JDKプラットフォーム 1.2API仕様より。
0279274NGNG
>>278
ありがとうございました。
スーパークラスを確認していませんでした。
0280342NGNG
>>343
ありがとうございました。
9821のPCは持っています。
XPに対応できるエミュレーターはありますか。
ちなみに2000 nTのはありますが。
0281デフォルトの名無しさんNGNG
this.addWindowListener(new WindowAdapter()
{
 public void windowClosing(WindowEvent e)
 {
  this.f();
  System.exit(0);
 }
});

匿名クラス内のthisはもちろん匿名クラスだよね
本体の実態を参照するには、それようの変数を用意しないといけないの?
0282デフォルトの名無しさんNGNG
this に add したイベントリスナなら e.getSource() で this と同じ
モノが取れないかな。一般的に成り立つか知らんけど。
0283デフォルトの名無しさんNGNG
>>281
匿名クラス内のthisはもちろん匿名クラスのインスタンス
0284デフォルトの名無しさんNGNG
2文字以上の置換を行いたいのですが、"replace"じゃ上手くいきません。

String strMes1 = "あいうえお";
String strMes2 = "";
strMes2 = strMes1.replace('あい','かき');

よろしくお願いします。ちなみに全角日本語です。
0285デフォルトの名無しさんNGNG
>>284
で、シングルクオートで囲っている理由は?
頼むから文法エラーごときで質問にこないでください・・・。
0286284NGNG
String型の2文字以上の置換方法が分からないのです。
文法エラーが分からなくて質問しているのでは、ありません。

確かにシングルなのは、おかしいですが、ダブルでもエラーが出ます。

"replace"以外に、"あい"を"かき"に変えるメソッドがあるのでしょうか?
0287デフォルトの名無しさんNGNG
アプレットのデバッグをしたいので↓のURLに書いてあるとおりにしました。
http://java.sun.com/products/plugin/1.3/docs/ja/debugging.html
しかしどうしてもエラーがでるのです。↓
http://members14.tsukaeru.net/kuresoru/error.jpg
この設定を行うとき、なにか陥りやすい罠でもあるのでしょうか?
0288デフォルトの名無しさんNGNG
>>282>>283
ありがとSUN
できますた
e.getSource()で
0289デフォルトの名無しさんNGNG
>>288
> ありがとSUN

新しいね。勝手に使わせてもらいます。
0290デフォルトの名無しさんNGNG
Sun Sun Sun - (・∀・)♪
haxtu? ( ゚Д゚)
0291デフォルトの名無しさんNGNG
>>1
基本的にsage進行でおねがいします。

なんで?
0292デフォルトの名無しさんNGNG
>>286
StringBufferクラスを使ってください。

>>286
>確かにシングルなのは、おかしいですが、ダブルでもエラーが出ます。
って言ってますが、この発言をしてる自体でちょっと厳しいです><
'あい' とやってる時点でかなり問題ありなので
もう一度ここの勉強をしたほうがいいかと
0293デフォルトの名無しさんNGNG
>>284 >>286
String#replaceAll(String,String)使いなさい。要1.4
0294284NGNG
しょうがないので、文字位置検索して、置換しました。
1度で複数文字を置換する方法は、ないんですかねー?
0295284NGNG
>>292-293さん。
ありがとうございます。頑張って勉強します。
0296できたNGNG
String strMes1 = "あいうえお";
String strMes2 = strMes1.replaceAll("あい","かき");
0297284NGNG
開発環境が、1.3なのです、、、。
0298デフォルトの名無しさんNGNG
>>281
おらよ。

public class Outer{
 public static void main(String args[]){
  new Outer().new Inner();
 }

 private int val = 10;
 public class Inner{
  public Inner(){
   System.out.println("Instantiate Inner");
   System.out.println("Outer.val ="+Outer.this.val);
  }
 }
}
変なルールだよな。
0299デフォルトの名無しさん NGNG
InputStreamクラスのreadメソッドの説明には、ストリーム
からの入力がブロックされると書いてあるのですが、
OutputStreamクラスのwriteメソッドの説明にはストリーム
への出力はブロックされるかどうかは明記されていません。
これはwriteメソッドはブロックを行わないと考えて良い
のでしょうか?
0300デフォルトの名無しさんNGNG
教えてください
例えば1989/1/7と入力すれば
今日から計算してその日から何日経ったかを
表示するプログラムを出したいのですが
もちろん明日やれば日は1日分増やしたいのですが…
うるう年のやり方とかわかりません…
0301デフォルトの名無しさんNGNG
Calendarみろよ
GregorianCalendarでもいい。
ユリウス歴についてもかいてあるぞ?
0302デフォルトの名無しさんNGNG
なんか似たような質問が多いな。どっかの課題か?
俺はわからないから答えられないけど。
0303デフォルトの名無しさんNGNG
String d = "1989/1/7";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date past = df.parse(d);
Date now = new Date();
if(now.before(past)) throw new IllegalArgumentException("未来入力すんな");
int dateSpan = (int)((now.getTime() - past.getTime()) / 24 / 60 / 60 / 10000);

簡単に書くとこんなか。Calendar 使わんとタイムゾーンを考えなきゃいけないんだっけ?
Calendar#add() でカウントアップするのもあるけど。
0304デフォルトの名無しさんNGNG
>>300
その日付に意味はあるのか?
0305デフォルトの名無しさんNGNG
>>303
sankusu
0306デフォルトの名無しさんNGNG
>>304
誕生日と思われ
0307デフォルトの名無しさんNGNG
>>306
13歳か…
先生に聞け!!
0308デフォルトの名無しさんNGNG
<jsp:useBean /> を使うと id に指定した名前の変数が <% %> の中で使えるよね。
これと同じ事って拡張タグライブラリだけじゃ出来ないよね?
0309デフォルトの名無しさんNGNG
byteをunsignedとして扱いたいんだけど、自前で+256して&255するしかない?
もっと簡単なのあったら教えてください。結果の型は不問。
0310デフォルトの名無しさんNGNG
jEditorPaneのsetPage()を使ってHTML表示したとき
リロード(もう一度、同一URLをsetPage)が
うまくできず古い内容しか表示されないんだけど、なんかいい方法ない?
0311デフォルトの名無しさんNGNG
質問の日本語が良く分からないけれど、
結果の型が不問なら、&0xffするだけでいいのでない?
自動的にintへ昇格されるはずだと思われ。

0312309NGNG
>>311
期待したとおりになりました。サンクス!
0313デフォルトの名無しさんNGNG
JavaでExcelファイルを読みこんで
セルを指定してそのセルに書かれている文字列を画面に表示させたいんですけど
こんなこと出来ますか?
0314デフォルトの名無しさんNGNG

>313
ttp://www.hcn.zaq.ne.jp/no-ji/reseach/index.htm
0315デフォルトの名無しさんNGNG
Javaマンセ〜
0316310NGNG
最近javaに目覚めた。もちろんマンセー
but, swingむずー
表のカスタマイズむずー
可変レイアウトむずー
0317デフォルトの名無しさんNGNG
住民基本台帳法について教えてもらえるネットの専門家の方々には、どの板
でお会いできるのですか?
0318デフォルトの名無しさんNGNG
gunbareyoむずー
0319デフォルトの名無しさんNGNG
>>317
俎板
0320デフォルトの名無しさんNGNG
J2EEサーバーの起動がうまく行きません。
下記のようなエラーがでます。何が悪いかわかる方がいましたら教えてください
OSはvine linux 2.1です

$ j2ee -verbose
Cannot write the seed file for fast startup. The next startup will be slow.
以後エラーメッセージが続く・・・
0321デフォルトの名無しさんNGNG
>>320

320 and/or vine linux 2.1
0322デフォルトの名無しさんNGNG
ファイルのランダムアクセスで質問があります。

例えば、
--以下ファイルサンプル----
あああああああ
いいいい
ううううううう
ええ
-------------------------
のように、1行が可変長のファイルで3行目を1行まるまる取得するには
どのようにしたら良いでしょうか?
RandomAccessFileクラスのseekメソッドを使用してポインタを
移動しようとしても1行が可変長なため、どうしたらいいか悩んでいます。
各行の頭にポインタを指定できて、その行に対してreadLineメソッドで
読むようなことは出来ないでしょうか?

どなたか宜しくお願いします。
0323デフォルトの名無しさんNGNG
プログラムのことで相談というかお願いです。

データメーカーというプログラムを持ってる方いらっしゃらないでしょうか?

あるのでしたらUPしてもらえませんか?
0324デフォルトの名無しさんNGNG
JTableで編集可能なテーブルは、セル上でダブルクリックをすれば編集モードになるけど、
シングルクリックで編集モードにするにはどうするの?
0325デフォルトの名無しさんNGNG
>>322
先頭から一行づつ読んでく方法以外は無理。
そういうファイルをランダムアクセスで効率的に読むなら、ファイルの先頭に
seek オフセット値のテーブルを持たせるのが普通。
0326320NGNG
>>321さん
ごめんなさい。意味が良くわかりません。
vine linux2.1、jdk1.4、j2SDKEE1.4.1以外特に何も入れていません。
j2eeのAPIを含むプログラムがコンパイルできたので環境設定は
うまくいっていると思います
0327デフォルトの名無しさんNGNG
Exception in thread "main" java.lang.NoClassDefFoundError: クラス名
↑コンパイルした後、classを動かそうとするとこのエラーがでます。
意味がわかりません。わかる方がいましたら教えてください
0328デフォルトの名無しさんNGNG
>>327
動かそうとするとき、大文字と小文字はちゃんと区別してますか?
0329327NGNG
>>328さん
ありがとうございます。
大文字、小文字、誤字脱字等のミスはありませんでした。
0330デフォルトの名無しさんNGNG
CLASSPATHの設定を見なおす。
この質問、超FAQで毎スレ2、3回出てると思うんだけど。
0331327NGNG
>>330さん 
ありがとうございます。やっぱりクラスパスですか・・・
java -classpath . クラス名 とコマンドを打つと
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Session
と出ます。現在linuxで使っているのですが、windowsで同じプログラムを動かして
見るとうまく行きます。
CLASSPATHはともに
J2EE_HOME/lib/j2ee.jar , J2EE_HOME/lib/locale
が入っています。
Linuxだとほかに何か加えなければならないのでしょうか?
0332デフォルトの名無しさんNGNG
int型の引数をとるコンストラクタを持つクラスがあって、
そのクラスを動的にロードし、上記コンストラクタを使って
インスタンスを作るにはどうしたらいいですか?
「上記コンストラクタを使って」の部分でつまってます。。
0333デフォルトの名無しさんNGNG
>>332
hennakurasu hen = new hennakurasu(1);
0334デフォルトの名無しさんNGNG
>>332
java.lang.Class#getConstractor()
java.lang.reflect.Constractor#newInstance()
0335332NGNG
レスどもです。
いまやっているのを具体的にいうと、プラグインクラスのインタフェース
まわりの設計です。

>>333
ロードするクラス名は不定(forName()でロード)で、そのメソッド
(コンストラクタ含む)はわかっているという状況なので、困ってます。
書いてなくてすみません。

>>334
getConstructor()の引数にプリミティブなintを指定するにはどうしたら
いいですか?あと、newInstance()はAPIリファレンスには空の引数リスト
でnewしたのと同じとありますが、引数ありでnewしたいのですが。
0336334NGNG
>>335
ドキュメントはちゃんと嫁。
int val =...;
Class cls = ...;
Constractor cns = cls.getConstractor(new Class[]{int.class});
Hoge instance = (Hoge)cns.newInstance(new Object[]{new Integer(val)});
0337334NGNG
>>335
ついでだけど、
AccessibleObject#setAccessible(boolean)
を併用することで、publicでないメンバへのアクセスも可能になる。
(リフレクションは何もかもをぶち壊しにする可能性のある諸刃の剣
ということですな。)リフレクションを使用したフレームワークを構築
するとき、その機構を外部から隠蔽したいときに使うとよいかも。

ただし、SecurityManagerが許可していない場合など(Servletで
動かしているときなどは、コンテナ側でSecurityManagerがインス
トール済みのことがあるよね)は、↑は出来ないので注意。
0338デフォルトの名無しさんNGNG
JavaからDBの入力とか削除とかの操作って出来ますか?
0339334NGNG
>>338
できます(条件付で)。Googleで"JDBC"で検索。または本屋にいきなはれ。
0340デフォルトの名無しさんNGNG
ていうかDBって何か知ってるのか?
0341デフォルトの名無しさんNGNG
>>340
ドリーム・ボーイ
0342デフォルトの名無しさんNGNG
ドラゴンボールに決まってんだろ

0343デフォルトの名無しさんNGNG
>>340
デルタ・ブルース
ドン・ブレーザー
デビッド・ベッカム
0344デフォルトの名無しさんNGNG
>>340
D   B
だってバカですから。
0345デフォルトの名無しさんNGNG
全然関係ないけど
その昔
DBクイーンズってグループがあったよね?
0346デフォルトの名無しさんNGNG
>>345
それはいくら何でも失礼だぞ。

今度の懐かしの人100にLINDBERGが出るらしい。
あんまりだ。今年解散だがまだまだ現役だ。
0347335NGNG
>>336
できました!ありがとうございます!!
ところで、int.classは、型intのフィールドclassで、intのClassインスタンス
であるという解釈であってるんでしょうか?同様のことを表すのに、いくつか
あさった限りではInteger.TYPEとしていたのでちょと気になりました。

リフレクションはいろいろおもしろそうなことができそうですね。
深入りするとドツボにハマりそうですが。
0348334NGNG
>>347
System.out.println(int.class == Integer.TYPE);
でたしかめれ。
0349347NGNG
>>348
確認しました。サンクス!
あと、このことについてさらに検索したところ
http://www.jguru.com/faq/view.jsp?EID=20857
がみつかりました。上記URLには、一貫性と単純さのために、
.classを使えと書いてありました。
0350デフォルトの名無しさんNGNG
JButtonを拡張したクラスにActionListenerインターフェイスをつけて、ボタンを押したら新しいウィンドウが開くように書いたつもりなんですが、
開かないです。

class StartButton extends JButton implements ActionListener{

public StartButton(String s){
super(s);
}

public void actionPerformed(ActionEvent e){

Ban ban = new Ban("test");
ban.setDefaultCloseOperation(3);
ban.show();
}

どうすれば開くようになりますか?
0351デフォルトの名無しさんNGNG
>>350
super(s) の下に this.addActionListener(this)
0352デフォルトの名無しさんNGNG
>>351
無事ひらきますた。ありがとうございます。
0353デフォルトの名無しさんNGNG
この言語って独自ファイルフォーマットの実装
って出来ないんじゃないの?
まあ小ざかしい手を使えば出来るのかもしれないが
費用対効果であまり現実的じゃないよな。
あんまり業務で使う気になれんな。
0354デフォルトの名無しさんNGNG
>>353
は? バイナリファイルなら普通に扱えますが?
0355デフォルトの名無しさんNGNG
API リファレンスすら読まない人には仕事で使ってもらいたくないですね :P
0356354NGNG
ランダムアクセスもな。
0357デフォルトの名無しさんNGNG
>>354-356
いつもの "彼" なので相手にしないで下さい。
0358デフォルトの名無しさんNGNG
ふーん。符号無しbyte型がない言語でねえ。
ぼくはあんまり処理を増やしたくないのだ。
(flag&0x01)!=0x00
といった処理や、
flag=0x01
といった処理が何万とあるとき、
楽に書ければいいんだけど。
0359デフォルトの名無しさんNGNG
あのね 他の言語やってるから JAVAが窮屈なんだよ
JAVAしか知らないプログラマには JAVAは最適だよ
0360デフォルトの名無しさんNGNG
>>358
ちょっとしたビットフィールドなら byte なり int なり使ってくだ
さい。大量のビットフィールドを扱いたいなら BitSet でも使って
ください。符号なし byte が int で代用できない理由は? そもそも
何が聞きたいんですか?
0361デフォルトの名無しさんNGNG
だからJavaのint,byteは符号付だから符号拡張で変なビットが
たってしまうだろ。そこが問題なのだよ。
例えば通信で8ビットでデータを送る場合場合
十進で128以上の値は符号拡張されるだろ。


0362デフォルトの名無しさんNGNG
byteがsignedかunsignedかをきにしなきゃいけないの?
Javaって32ビット以下のプリミティブ値って実行時には
32ビットをアロケートされるんだよね?プログラム上では
intにキャストして全部計算といても問題なし。
byteなんて普通はI/O前後ぐらいでしか使わんとおもうし、
使う必要ない。

・・・と思っていたんだけど、おいらの勘違いですか?
0363デフォルトの名無しさんNGNG
で?
0364デフォルトの名無しさんNGNG
>>363 は >>361 宛て。
結局最初の byte → int と最後の int → byte で "& 0xFF" って書くのが
面倒という話で良いわけ?
0365デフォルトの名無しさんNGNG
このネタ、JDK1.4βスレでいろいろやってたのを見た。
http://pc3.2ch.net/test/read.cgi/tech/990949654/l50
350前後からかな。
途中で方向が変わってるけど。
0366デフォルトの名無しさんNGNG
>Javaって32ビット以下のプリミティブ値って実行時には
>32ビットをアロケートされる

ということを知らない人がえらい苦労を自ら買っているわけで、
自業自得です。仕様書ぐらい嫁。
0367デフォルトの名無しさんNGNG
まぁ俺も C/C++ から来たばかりの頃は (もう 5,6 年前か) unsigned char が
ないのが不満だったな。「符号なしと符号付で byte と tiny に分けてくれ」
って言いたかったが、どこに主張して良いか分からなかった。C/C++ 時代に
築き上げたバイナリ操作の小技がほとんど使えなくなってしまったんだからな。
しかしあえて Java 流儀でやり始めてみると、そんな小技は大したもんじゃ
なかったと思うようになった。

まぁあれだ、つまりは言語移行時のはしかのようなもんだ。
0368っていうかNGNG
char 型使えば?
0369デフォルトの名無しさんNGNG
>>358
BugP(以下略)
プリ(以下略)
そんなに めんどくさいなら呼(以下略)
0370デフォルトの名無しさんNGNG
>>365
懐かしーっすね
0371デフォルトの名無しさんNGNG
>>367
さっきから見てるとごねてるのはCを使いこなしすぎた人々ですな。
JavaにCの面影を探してるよう。

「1代目は本立てにもっと細かな彫刻を施してたぞ。2代目はクソ。」

お前はその彫刻が無いと本を立てられんのかと。
むしろ、彼の作った伸縮時代で漬け物石にもなるという高機能は無視なのか。
みたいな。
0372デフォルトの名無しさんNGNG
>>365
あー、そこだそこだ。俺が byte のほかに tiny 型が欲しいって言ったの (藁
0373デフォルトの名無しさんNGNG
>>371
いや、Cを使いこなした人だったら、
ゴネてないでちゃっちゃとプリプロセッサ書いちゃいます。
ゴネてるのは(以下略)
0374デフォルトの名無しさんNGNG
>>302
>>307
市ね
0375デフォルトの名無しさんNGNG
>>374
煽りはスピードが命。
0376デフォルトの名無しさんNGNG
>>374
このスレくらい全部読め
過去スレまでとはいわんから
■ このスレッドは過去ログ倉庫に格納されています