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

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

■ このスレッドは過去ログ倉庫に格納されています
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質問・相談スレッド54【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1096548618/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0175デフォルトの名無しさんNGNG
>>173
それが4で2の処理が反映する前に次の処理が起きてる気がするんですけど
setEnabled(false)していればそれはないのでしょうか?

例えばCtrl+A一回押すごとにでボタンの色が赤→青→黄→赤(以下ループ)になるはずなのに
Ctrl+Aを長押しすると押してる間は色が変わらず、離した時に幾度も処理された結果が反映されると言う感じなのですが
これはスリープ(?)みたいなのをやればいいんでしょうか?
ボタンの色を変えた後にsetEnabled(true)をやればうまくいくかと思ったんですが変わりませんでした
0176デフォルトの名無しさんNGNG
やっぱ955ってプログラミング初心者だったか
こんなのが「それはASMをやってた頃の名残ですね」なんて偉そうに言うんじゃ
他のASM経験者が可哀想すぎる
0177デフォルトの名無しさんNGNG
>174
いずれにせよPATHの設定方法に問題があると思われ。
2k/XPなら[システム]-[詳細設定]-[環境変数]で設定。
9x/MeならC:\autoexec.batに記述。
(Meは何か設定用のユーティリティがあるんだよな……覚えてないが)
0178174NGNG
>>174
環境変数のトコで名前がPATH、値もbinフォルダに合わせました。
だからまぁ、普通にコマンドプロンプトを開けばできるのです。
ただランチャーから開くと…。
0179174NGNG
×>>174
○>>177
0180デフォルトの名無しさんNGNG
>178
そーなるとランチャのCreateProcessの使い方がおかしいのかも。
ランチャの乗り換えをお勧めする。
0181170NGNG
>>172
reshape()からsetPreferredSize()に替えて実行してみましたが、
やはりサイズの変更は反映されませんでした。
あと、手動で内部フレームのサイズを変更しようとしたのですが、それも反映されず、
サイズを変更しようとすると強制的に最大化されてしまいます。
0182144NGNG
抽象クラスやっと意味わかりました。(と思います)

抽象クラスX内に抽象メソッドget()を定義しておいて
AとBっていう2つの具象クラスにXクラスを継承させたときに、
A、Bのそれぞれの具象クラス内での実装方法によらず
A、Bのオブジェクトに対して
Xクラスのメソッド経由で使えるっていう利点があるんですよね?

書いててに日本語わけわからなくなったw
ひとまず答えてくれた人ありがとう。
0183デフォルトの名無しさんNGNG
>>182
それはabstractメソッドの説明だと思われ。
0184デフォルトの名無しさんNGNG
>>182
いい感じだ
0185デフォルトの名無しさんNGNG
>>182
抽象クラスっつーよりインターフェイスになってる罠
0186174NGNG
>>180
見た目だけで使ってるSKランチャーだから普通にそれありそうです。
となるとどうしようもないですね。ありがとうございました。
0187デフォルトの名無しさんNGNG
コンソールで[Enter]を押さずに、キーをタイプするごとに処理させたいんだけど
System.inでは対応できないようですが、どうしたらいいですか?
0188デフォルトの名無しさんNGNG
>>186
そのランチャーの作者に
スタートメニューから起動したときと環境変数が違うんですけど、ってバグレポートだせば?

乗り換えるのは良いとして。
0189デフォルトの名無しさんNGNG
>>182
まあそんな感じでいいと思う。
インタフェースと抽象クラスの使い分けはそのうち何となくわかってくるよ。
0190デフォルトの名無しさんNGNG
>>187
自分でテキストエリア作る
0191デフォルトの名無しさんNGNG
>>187
標準APIじゃ無理。
JNI で curses だったかをラップしてるライブラリとか使えばできるかも。
0192デフォルトの名無しさんNGNG
基本的すぎることかもしれませんが、
lengthとString#length()の違いはなんですか。
動作の違いなどを教えてください。
0193デフォルトの名無しさんNGNG
> lengthとString#length()の違いはなんですか。
length って何の length だ?
0194デフォルトの名無しさんNGNG
lengthは配列のフィールドだと思えばいい。
length()はメソッド。
0195デフォルトの名無しさんNGNG
>>194
配列の length はフィールドです。

http://www.y-adagio.com/public/standards/tr_javalang2/arrays.doc.html#64347
> 配列構成要素の数を含む,public finalなフィールドlength。(lengthは,正又は0であってもよい。)
0196192NGNG
>>193
>>194
レスありがとうございます。
String#lengthは文字列内の文字数をカウント、
lengthは配列のフィールド数をカウントする
というとこでOKですか?
0197192NGNG
>>196
ありがとうございました。
0198デフォルトの名無しさんNGNG
>>196
> String#lengthは文字列内の文字数をカウント、
合成文字やサロゲートペアがあるので String#length() は必ずしも文字数と一致しない。
char の数とは一致するけど。

> lengthは配列のフィールド数をカウントする
配列の要素数ね。
0199144NGNG
>>183-185>>189
ども。
ちょっとわかってきたってところです。
>>189さんの言うようになることを祈って勉強続けます。
0200187NGNG
>>190-191
標準APIにはないですか。了解
0201デフォルトの名無しさんNGNG
意味合いとしては
・インタフェース→それを実装したクラスが特定のメソッドを持つことを保証する
・抽象クラス→メソッドの具体的な内容は子クラスに任せる
てな感じか。
0202デフォルトの名無しさんNGNG
JavaでのO/Rマッピングを勉強したいと思ってるのですが、
EJBとかHibernate?とかあるみたいなんですが、
何がよさそうですか?
0203デフォルトの名無しさんNGNG
JavaじゃなくてJavascriptのほうで質問があります。
正規表現でRegExpを使用しているのですが
\が見つけるにはどのように行えばよいでしょうか?

var a = new RegExp("[#-&]|[\]");
↑だと\入ってた場合でも見つけれなくて・・・

すいません、誰か教えてください・・・
0204デフォルトの名無しさんNGNG
すいません1の下読んでませんでした・・・
吊ってきます
0205デフォルトの名無しさんNGNG
パーサのXercesを利用するためのjavaプログラムを作成しようと
しているのですが、プログラム内で、次の指定をすると、
import org.apache.xerces.parsers.DOMParser
「org.apache.xerces.parsers.DOMParseを解決できません」という
メッセージが出ます。

バージョンは、Xerces.2.5.0を使っております。
Xerces-J-bin.2.5.0を落として、下記のファイルを
クラスパスに追加したのですが他に必要な設定はありますでしょうか?
・xml-apis.jar
・xercesSamples.jar
・xercesImpl.jar

eclipseを使っているのですが、eclipseでライブラリの追加が
必要だと思っているのですが。。
0206デフォルトの名無しさんNGNG
classAが大きくなりすぎるのでclassBを呼んで処理してもらおうとしたのですが
classBでclassAの変数をうまく使えるにはどうすればいいですか?

staticでない変数をstaticコンテキストから参照することはできません。と
エラーがでるのです
static変数にはしたくなく、仮引数にするにもすこし多い量なんです。
newも値が変わるので駄目でした。
0207デフォルトの名無しさんNGNG
>>205
eclipse の使い方は Eclipse スレで聞いてくれ。

【Java/C/PHP/他】統合開発環境Eclipse M14
http://pc5.2ch.net/test/read.cgi/tech/1093787515/l50
0208デフォルトの名無しさんNGNG
>>206
とりあえず getter 定義して使え、でいいのかな?
0209デフォルトの名無しさんNGNG
>>206
無茶言わず引数にしろ。
素で引き渡すのが嫌ならそれ用のBeanでも作れ。
0210デフォルトの名無しさんNGNG
なぜにBean・・・w
普通に構造体みたいにクラスでも作ればいいと思うのだが・・・
0211デフォルトの名無しさんNGNG
>>210
釣れますか?
0212デフォルトの名無しさんNGNG
>>206
1000行くらいあるなら200行くらいに分けて階層構造にでもしろ
0213デフォルトの名無しさんNGNG
どんなクラスなのか見てみたい。
0214デフォルトの名無しさんNGNG
>>206
・多かろうが何だろうが引数にして全部渡す
・Mapか何かにでも突っ込む
・専用のBean作る
・アクセサメソッド作って自分自身を引数に渡す
・氏ね
0215デフォルトの名無しさんNGNG
>>206
>>214の最後のコメントは気にするな。強く生きろ。
0216デフォルトの名無しさんNGNG
強く氏ね
0217206NGNG
>>213
classAから新しいウィンドウとしてclassBを作って
classBで起こった結果をclassAに反映させたいのです。
引数にして代入しなおせばいいんですが、何かいい方法ないかと質問しました。

Beanっての分からないので調べてきます・・・
0218デフォルトの名無しさんNGNG
強く生きれば強く氏ねる
0219デフォルトの名無しさんNGNG
時計の針を、1秒ごとにチックタックではなくなめらかに動かしたい場合、
どうすればいいのでしょうか?
今は針描画専用の内部クラス(Threadを継承)を定義し、
public void run(){
 while(ture){ 針描画処理 }
}
というふうにrun()を実装して
そのインスタンスのstart()を呼んでいるのですが、
CPU使用率が常に100%になってしまいます。
動作そのものは期待どうりなんですが・・・。
0220デフォルトの名無しさんNGNG
>>206
お前全然わかってないじゃんかよ。
ちゃんと勉強してないからそうなる。
多分人のソースをコピペだけして来たんだろう。
newも値が変わるので駄目でした。だって。
勉強して一週間目の奴が言うような内容だな。
本とか読んでもインスタンスの話なんか最初の方に出てくるだろうが。
0221デフォルトの名無しさんNGNG
>>219
今は針描画専用の内部クラス(Threadを継承)を定義し、
public void run(){
 while(ture){ 針描画処理 }
}
というふうにrun()を実装して
そのインスタンスのstart()を呼べばいいと思うよ。
0222デフォルトの名無しさんNGNG
>>217
>>206と書いてることが違うじゃないか
0223デフォルトの名無しさんNGNG
Timerでも使えば
0224デフォルトの名無しさんNGNG
>>219
1/30秒ずつくらいの処理にすればいいんじゃない?
0225デフォルトの名無しさんNGNG
>>219
たぶん秒でとってるでしょ
ミリ秒も取ってきて適当に処理

それとsleepもいれて
0226デフォルトの名無しさんNGNG
Timerクラスは使ったことありませんでした。
Timerクラスやsleepメソッドで針描画処理の頻度を落とせる、ということですね。
試してみます。ありがとうございました
0227デフォルトの名無しさんNGNG
NTPサーバと通信して時刻合わせをするようなものを書きたいと思ってるのですが、
Javaにシステムの時刻をセットするようなメソッドorライブラリみたいなのは無いでしょうか。
SystemクラスやJakarta Commonsあたりを探ったり、ググってみたりしてもいまいち見つからず…。
0228デフォルトの名無しさんNGNG
Javaでシステム時刻設定なんてできるのかな?

Windowsだと
Runtime.getRuntime().exec("time 22:30:59.99");
とかしてtimeコマンドを実行するとかすればできるかも
0229227NGNG
今作ってるのが、Windowsでの動作前提プログラム(JNI使ってたりするんで)なので、>>228さんの方法が簡単っちゃー簡単ですが
一応、勉強も兼ねてPure Javaでなんとかならないかなーと思っていました。

とりあえず、今のところは>>228さんので実装してみます。
ありがとうございました。
0230デフォルトの名無しさんNGNG
すいません、JTableのコンポーネントのサイズを大きくしたいのですが
JTable tb = new JTable(5,5);
tb.setSize(500,500);
tb.repaint();
などやっても変わりません、なぜでしょうか?
また、表示する文字列によって列幅を変えたいのですが、情報が見つかりません、
レンダーをいじくるらしいのですが、さっぱりです。
どなたか教えてください。ちなみに、GUIはほとんどいじった事ありません。
よろしくおねがいします。
0231デフォルトの名無しさんNGNG
>>228
それいいな。
0232デフォルトの名無しさんNGNG
>>230
Swingというかレイアウトマネージャ勉強したら?
0233デフォルトの名無しさんNGNG
>>230
志村!レイアウト!レイアウト!
0234デフォルトの名無しさんNGNG
Javaで、一番下に出る棒のようなスペース、俗にいうステイタスバーは実現
できるんでしょうか?そういうコンポーネントはないようなのですが。
どなたか、よろしくです。
0235デフォルトの名無しさんNGNG
>>230
> また、表示する文字列によって列幅を変えたいのですが、情報が見つかりません、
TableColumn column = table.getColumnModel().getColumn(columnIndex);
とかして
column.setPreferredWidth(好きな幅);
とかでサイズ指定すれば出来るかも。
0236デフォルトの名無しさんNGNG
>>234
うむ。V2Cとソフトでは実現しとる。
「V2C」でググッて起動してみろ。びびるぞ。
どうやってやるかは知らん。
>>230
setPreferredSizeあたりをいじれば大概なんでもできる。
0237デフォルトの名無しさんNGNG
>>234
ステータスバーは JPanel とか、
必要なら好きな javax.swing.border.Border の実装クラスとかを使って
比較的簡単に実現できるが、
Swing には JStatusBar みたいなコンポーネントは無かったような。
0238デフォルトの名無しさんNGNG
>>236
漏れ、このコメントV2Cで見てまつ。
2chビューアの中で一番しっくり来たのがコレ。
GUIの勉強にもなる。デコンパイルしてソース見ろとまでは言わないが、
Swingの表現力とパフォーマンスについて認識を改めた一品。
>>234
BorderLayoutのSouthにステータスバーにしたいコンポーネントをはっつければOKでしょ。
0239デフォルトの名無しさんNGNG
デコンパイルってどうやるの?
0240デフォルトの名無しさんNGNG
java decompiler とかでぐぐるとデコンパイラが見つかると思うから、それ使えば?
0241デフォルトの名無しさんNGNG
>>239
jadが有名、GUIのフロントエンドもいくつかある
Eclipseを使ってるのならjadを使うプラグインがある

これだけ情報あれば検索で見つけられるはずからがんばれ
0242デフォルトの名無しさんNGNG
 なんか、ちょっと前の本とかSwingでマックのルックアンドフィールとか使ってたりする
んだけど、今、はそのクラス自体ないようなのです。
 J2SDK1.4.0とかでもできるの?
 
0243デフォルトの名無しさんNGNG
>>236
>>237
>>238
どもです。早速やってみます
0244デフォルトの名無しさんNGNG
JavaScriptでWebページ内のFormの値を取得して、それをアプレット
に渡して、アプレットからファイル出力させるにはどうすればいいの?
いろいろ試したけど、JavaScriptかアプレットどちらかのセキュリティ権限に
引っかかって、うまくいきませんでした。無理って事?
0245デフォルトの名無しさんNGNG
クライアント側にファイル出力するのは基本的に無理。
0246デフォルトの名無しさんNGNG
>>240-241
jadプラグインでぐぐってきます。ども。
0247デフォルトの名無しさんNGNG
JFrameクラスで
setResizableを下方向のみ許可することはできますか?
0248デフォルトの名無しさんNGNG
http://ex7.2ch.net/test/read.cgi/base/1098460250/97
0249デフォルトの名無しさんNGNG
setTextメソッドで("<html>a<br>b<br>c") と指定した場合

JTextAreaクラスなら文字列がそのまま表示されるけど
JLabelクラスならhtmlで解釈されるから改行されますよね

他にJavaでhtmlを使ってテーブルを表示する方法ってありませんか?
0250デフォルトの名無しさんNGNG
>>249
PrintWriter
0251デフォルトの名無しさんNGNG
>>249
JEditPaneとJTextPane
0252r ◆r/etvCKR2A NGNG
StringTokenizerとか、String#splitとか
文字列を分割するための道具が、Javaには幾つか準備されているようですが、
エスケープが扱える物って、なんかあるでしょうか。

たとえば
1. 文字列を空白文字で区切る
2. 空白文字が連続した時は、一個の空白であると見なす
3. 大文字は小文字に変換する
4. 連続した空白、大文字を表現したい時は、"で囲む
5. "自体を表現する時は\でエスケープする
6. \自体を表現する時は\でエスケープする

などというルールを実装するには、普通どうやるのだろう。

とりあえず、一文字ずつ、状態遷移しながらパースするコードを書いてみますた。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1076074304_21/Parse.java
ルールが変わるたびに、マルコフ的な状態遷移を考えて、
新しくたくさんのコードを書いて...ってのが激めんどくさいので、
どうにか簡単に表現できると嬉しいんだが。
みなさんどうやってるのです?
0253デフォルトの名無しさんNGNG
>>252
>一文字ずつ、状態遷移しながらパースするコードを書いてみますた。
その条件だとそれしかないと思われ
つかどうしてもそれがめんどいならJavaCC使うのが楽と思われ
でもよく考えたらJavaCCの資料探して勉強するほうがめんどくさいと思われ
0254デフォルトの名無しさんNGNG
まずエスケープ文字でトークン化して、調整すればいいと思うけど?

new StringTokenizer(s, " ¥¥¥n¥t¥r", true);
0255デフォルトの名無しさんNGNG
Javaプログラミング難しいよ〜
どうすれば上達しますか?
2週間後テストなんですけどやばいかも・・・
0256デフォルトの名無しさんNGNG
実際にアプリケーション作ってみろ
そうすればどこがわからないかがはっきりする
0257デフォルトの名無しさんNGNG
>>255
1.人に聞く
2.本を読む
3.自分でやってみる

これだけやれば完璧!
0258デフォルトの名無しさんNGNG
>>256-257
どうもありがとうございます。
質問なんですが、さっき本を読んでて思ったのですが、
論理輪である縦線2つとか特殊な記号はどうやって出すんですか?
キーボード見てもありません・・・
0259デフォルトの名無しさんNGNG
これをコピペして使え→||
0260デフォルトの名無しさんNGNG
sqrtって「スクルト」って呼ぶんですか?
0261デフォルトの名無しさんNGNG
>>259
ありがとうございます。
できれば表示の仕方を教えてもらいたいのですが・・・
0262デフォルトの名無しさんNGNG
System.out.println("||");
0263デフォルトの名無しさんNGNG
>>261
Javaの質問じゃないし。PC初心者板とか行って聞いた方が早そう。
0264デフォルトの名無しさんNGNG
>>261
キーボードの種類は?
0265デフォルトの名無しさんNGNG
>>261
・右クリックして「貼り付け」を選択

または

・Ctrl + Insert
0266デフォルトの名無しさんNGNG
>>258
何年前のキーボードを使ってるのですか?
プロの人の中には、作家が同じ万年筆をいつまでも
愛用するように、手に馴染んだキーボードをいつまでも変えないで
変換コネクタを用いて未だに20年前のパソコンのキーボードを
使ってる人がいるみたいですが、アナタもその部類ですか?
0267デフォルトの名無しさんNGNG
>>264
普通のキーボードです、とか
PCショップで何千円で買ったキーボードです、とか言われそうな予感。
0268デフォルトの名無しさんNGNG
>>264
静電容量方式です・・・
0269デフォルトの名無しさんNGNG
>>262-267
いろいろすいません。
僕が聞きたかったのはキーボードのどれを押せば
縦線が表示できるのか、です。
キーボードは267さんの言うように普通のです・・・
0270デフォルトの名無しさんNGNG
>>269
キーボードの右上の方、BackSpaceキーの左にある
 \ と書かれたキーを、Shiftキーと一緒に押すと | がでます。
それを2回押すと論理和の記号 || が出ます。
0271261NGNG
>>264
電脳直結式のキーボードです。
私は電脳手術(攻性防壁付き)を行い、脳を電脳化してますので
脳波で直接入力する事が可能なのです。
キーボードの機種は、東レ0420式です。
0272261NGNG
音声認識をつかっています・・・
0273デフォルトの名無しさんNGNG
>>270
どうもありがとうございます!
それをやるとバックスペースの左のボタンの左上が表示されるんですよね?
そこを見ると縦線の真ん中が切れてますよ。

>>271-272
なりすましはやめてください・・・
0274デフォルトの名無しさんNGNG
>>273
なりすましはやめてください!

>>270
やってみたら||となってしまって
コンパイルが通りません・・・
■ このスレッドは過去ログ倉庫に格納されています