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

このエントリーをはてなブックマークに追加
javaでファイル選択を促すjfilechooserというのがあるようですが、
フォルダ選択のクラスはあるのでしょうか?
あったらクラス名を教えてください。お願いします。
>>865 JFileChooser
Swingの使い方について詳しく解説してくれる良書があれば教えてください。
>>867
 JFCプログラミング キム トプレイ
 Java GUIプログラミング 大村 忠史
大村タンのは読み応えがあんまなかったな。SWT編もアレだし。
AWTまで網羅するなら
 グラフィックJava2 デビッド・M. ギアリー
869867:04/01/05 00:52
>>868様ありがとうございます
スレッドの扱いとかについても詳しくのってますでしょうか?
表示更新がうまくいかないので過去ログみたりググってみたりしたんですが
「イベントディスパッチスレッド」とか「invokelater」とかが理解できなくて・・・
870デフォルトの名無しさん:04/01/05 01:17
JMFを用いてWindowsMediaPlayerのようにリストを作って、
順に動画や音楽を再生するプレーヤーを作成したいのですが、
ヒントになるようなプログラムやサイトはありますでしょうか?

書籍(日本語でかかれているもの)が一冊しななく困っております
ご存知でしたらご教授お願いします
JMenuにフォーカスがあたった時、
その「前」にどのコンポーネントにフォーカスがあたっていたのかを得たいのですが、どうすれば良いのでしょうか?
ESCキーで元のコンポーネントにフォーカスが戻るので元のフォーカスコンポーネントを得る方法がありそうだと思うのですが・・・
>>871
どの部分がわからないのかはっきり書け

リストを作るならSwing、再生ならJMF
どっちもやりたいことを実現するためのサンプルコードはあるはず
JMFの方で英語しかドキュメントがないならそれを読め
いつかは英語しかドキュメントが無いという状況になるのでその練習ということで
873872:04/01/05 03:26
ぎゃ〜、ごめん上の>>871>>870ですた
>>871
やったこと無いけどFocusListenerとかでできない?
んで1個前を覚えとく
>>874
それは多分できるんだけど
JMenuが一個前を覚えてるはずだから、それを参照できないのかなぁ・・とおもってみたりして・・
876デフォルトの名無しさん:04/01/05 06:35
PrintWriterの使い方もわかり、ファイルの出力はできるようになったのですが、
既存のファイルの末尾に新しく何かを書き込む場合はどうすればよいのでしょうか?
>>876
RandomAccesFileで書くようにして、書く前に
末尾までポインタ移動しる。
>>876
new FileOutputStream(filename,true) とか new FileWriter(filename,true) とかするとか
>>753
Eclipseのダウンロード件数は1000万件を突破
880デフォルトの名無しさん:04/01/05 15:15
ところでFile#mkdir()とFile#mkdirs()どっちつかえばいいか迷うなあ。
Javadocの説明見ても曖昧なことかてあって双方の違いの意味わからげ
JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)を使用することによって、横のJScrollBarが使えるようになりました。
しかし、カラムの幅が狭すぎるのです.
カラムの横幅を指定するにはどうすればいいのでしょうか。
882882:04/01/05 15:22
該当の日付になったら『今日は****の日』と表示させる方法を教えてください。
『****まであと****日』というのはJavaScript系のサイトで出まわっていますが
該当日だけ表示させる方法が見つかりません。
>>882
あなたはjavascriptについて探しているのですか
だとしたら板違い。
884  :04/01/05 16:55
InputStreamにStringを入れたり、OutputStreamから文字列を取り出すにはどうしたらいいのでしょう?
Fileからならうまくいくのですが・・・
>>884
Input、Output が逆だろ。
strValはStringオブジェクトで、nullか空文字列かの判断をするときに、
if (strVal != null && !strVal.equals("")) {
}
と書くのはよく見るんですが、
if (!strVal.equals("") && strVal != null) {
}
は見ません。
なにか理由があるのでしょうか?
          _
      ミ ∠_)
         /
         /   \\
 ウイーン  Γ/了    | |
  ウイーン  |.@|    | | ガッガッガッ
       | / |    人
       |/ |    <  >_Λ∩
      _/  | //.V`Д´)/ ←>>886
     (_フ彡        /
888デフォルトの名無しさん:04/01/05 21:19
>>886
論理演算子は左から評価されるので、後者の書き方ではぬるぽが発生します。
まずnullチェックするのがJavaの定石です。
889886:04/01/05 21:46
ぬるぽってNullPointerExceptionでしょうか?
Javaの定石だということなのでそのまま覚えようと思うのですが、
なぜ前者の書き方だとstrVal != nullの段階で例外が発生しないのですか?
あれこれとすみません。
890デフォルトの名無しさん:04/01/05 21:59
&&は論理積ショートカットなので左辺がfalseだった時点で右辺が評価されなくなるからです。
886の上の例の&&を&に変更すると文字列がnullの時にNullPointerExceptionで落ちます。
&は単なる論理積なので左辺右辺ともに必ず評価されます。
891デフォルトの名無しさん:04/01/05 22:05
FileReader fr = new FileReader("yomikomi.txt");
int c;
for(int i = 0; i < 10;i++){
int count = 0;
while( (c = fr.read()) != -1){
if(c == i){
count++;
}}
System.out.println("i = " + count);

こういう処理があって
ファイル内にある0〜9の数をカウントして出力したいのですが
うまく拾えません

デバッグすると
fr.readで一文字ずつ取ってcに代入される各文字が
19とか24とか47とか二桁の数字ばかりをとって来てcにうまく代入されません
どこが悪いのでしょうか?
if ("".equals(strVal)) {
}
としろ。
BufferedReaderでキーボードから入力されたものを
Integer.parseIntでint型(数値)に変換する前の処理で
入力されたものがint型に変換できるか(数値であるか)、それとも何かしらの文字が入力されていて
int型には変換できない(数値以外のものが何かしら入力されている)かを判断させる処理を
したいのですが、APIをざっと見た限りではそんなメソッド等は見つからなかったと思うのですが
この場合、自分でその判断をさせる処理は作らなければならないのでしょうか?
それとも何かメソッドがあるんでしょうか?
894886:04/01/05 22:14
>>891
そういうことですか、わかりました。
ありがとうございます。
と納得したのもつかの間、>>892は?
それだけしておけば、結局のところ参照比較っていうのでしょうか?
!= はいらないということ?
895デフォルトの名無しさん:04/01/05 22:19
すいません、漠然とした質問で申し訳ないのですが
collection型とはどういうものなのでしょうか?

つい最近Javaを勉強したばかりで
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Collection.html
を読んでもイマイチ理解できません。
一応知識レベルとしてはクラス、オブジェクトの基本を大まかに学んだ程度です。
インターフェイスに関しては若干アヤシイです。
主に使ってる参考書は「やさしいJava」です。
>>895
いろいろと高機能な配列。
>>893
実際にパースしてみて、
例外が投げられるか投げられないかで判断させる。

>>891
それで正しく動いているんじゃないかな。
そのyomikomi.txtに書かれているデータは、アスキーコードによる「数字」だから。
よってcのなかには、yomikomi.txtに書かれていた数字のアスキーコードが格納されているわけ。
charに代入して、文字として比較し、処理をしていけばいいとおもうよ。

>>888
Java以外にも、CやPerlでもそうだよね。

>>889
>なぜ前者の書き方だとstrVal != nullの段階で例外が発生しないのですか?
strVal != nullは、strValインスタンスのメソッドを呼び出しているわけではないから。
たんに、strValが空っぽかどうかをチェックしているだけだから。

ヌルポの例外は、この場合、strValが空っぽなのにメソッドを呼び出そうとした場合に発生するから。
898 :04/01/05 22:44
やっぱりいきなりJavaだと参照とかポインタ(あからさまには出てこないけど)の理解があいまいのままになりがちかな。
899デフォルトの名無しさん:04/01/05 22:46
>>896
もうすこし詳しくお願いします
900893:04/01/05 22:50
>>897
いま、やってみてるコードだと文字が入力されていてもそのままparseIntして
Exceptionを発生させ、finallyで
if(exception != null) {
   もう一度このメソッドを処理しなおす。
}
ってな具合なんですが、これでもOKでしょうか?
当然、Buffered〜などで使った変数はクローズしたりnullにしたりしています。
901893:04/01/05 22:51
いや、そもそも自分自身のメソッドから自分自身のメソッドを呼び出すことって可能なんでしょうか?
>>899
どのへんを詳しく聞きたいのか、あなたが言ってくれないと、
なにを説明してあげたらいいのか、わからないよ。

コレクションクラスなどにおける、
インターフェイスや抽象的なクラスを駆使して、
実体的なクラスをあつかう方法について聞きたいの?
それとも、コレクションについて聞きたいの?

もう少し詳しくと言われても、その質問内容では
>>895が言うように、ちょっと漠然としすぎだよ。
int foo;
while(true){
 try{
  foo = Integer.parseInt(reader.readLine());
  break;
 }catch(NumberFormatException e){
  continue;
 }
}

とかだろ
>>901
もちろん自分自身のメソッドから、自分自身の別のメソッドを呼び出すことも可能だし、
自分自身のメソッドから、自分自身のおなじメソッドを呼び出すことも可能だ。

後者は「再帰」と呼ばれる。あまり再帰させすぎると、メモリ不足などを引き起こすが。
905デフォルトの名無しさん:04/01/05 23:11
>>902
>それとも、コレクションについて聞きたいの?
そうです。一応>>895にも書きましたが。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Collection.html
ではよくわからないのでもう少しかみ砕いて説明して頂けると幸いです。
906893:04/01/05 23:26
>>903
>>904
ありがとうございます。
903方式を参考に組んでみたらできました。
>>905
とりあえず、そのページの内容、どこまでわかった?
コレクションについてどこまでわかっていて、
どのあたりが.わからないのか書いてみたらどうかな。

コレクションについては、俺がいい加減なことをここに書くよりも、
英語が読めればSunのJavaチュートリアルを見た方がいいのだが。
日本語のテキストでなにかいいものはあるだろうか。
http://java.sun.com/docs/books/tutorial/collections/
Collections
 質問です。
 あるVM上で走っているJavaプログラムののメソッドトレースができるような
ツールってご存じないですか。
Eclipseのデバッガようにステップ実行するのではなくて、
標準出力などにテキストで出力されるようなツールを探しております。

是非ともご教授下さい。
よろしくおねがいします。
>>908
Java2 SDK。
jpda、リモートデバッグあたりをキーにぐぐれ。
>>909
 言葉足らずですみません。JDK 1.4.03です。
一応JDI等で希望するような出力をするテストコードも書いたのですが、
「こういうのって誰か書いてるよなぁ」と思い質問した次第であります。

 一応↓のようなモノも見つけたのですが、残念ながらWindows上でのみの動作
のようでして・・・。どうさ環境はSolaris9です。
http://www.fuka.info.waseda.ac.jp/~washi/other/mgraph.html

>910
AspectJでトレースするってのはどう?
なんか自分で聞いてても馬鹿みたいなんだが

String str;
str = "なんか文字列";

ってしたとき、エディタで編集したときには「なんか文字列」はShift JISだったとして
strはShift JISなんでしょうか?UTF-8なんでしょうか?
>>912
おおざっぱにいうと、UNICODE(UCS-2)。
>>912
> ってしたとき、エディタで編集したときには「なんか文字列」はShift JISだったとして
ソースファイルが SJIS だろうが何だろうが、
コンパイル時に "なんか文字列" と書かれた部分はユニコードに変換される。

ちなみに、コンパイル時に -encode で正しいエンコーディングを選ばなければ文字化けする可能性もある。