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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
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://pc3.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。また煽り厨は放置でお願いします。
http://pc.2ch.net/tech/kako/1026/10266/1026601774.html
0577デフォルトの名無しさんNGNG
>>576
ところでエンコーディングは何にしたいの?
0578576NGNG
>>577
Shift_JISです。
0579デフォルトの名無しさんNGNG
>>576
うちでは2バイトになったけど。

>String s = new String("あ");
とりあえず、これ禁止。
String s = "あ";
0580デフォルトの名無しさんNGNG
>>579
(・ε。・)え〜?禁止ってほどのことなの?
0581デフォルトの名無しさんNGNG
だって無駄じゃん
0582576NGNG
>>579
一度バイト配列に入れたら上手くいきました…。

String s = "あ";
byte[] mb = s.getBytes();
System.out.println(mb.length);

>とりあえず、これ禁止
new String() 指定だとパフォーマンスが落ちるんでしょうか。
0583デフォルトの名無しさんNGNG
>>582
>>258-290を参照
0584デフォルトの名無しさんNGNG
>>580
PCやサーバで動かすならほとんど実害はないわな。
いいことも一つもないが。
組み込みや携帯なら禁止されてもおかしくない。
0585デフォルトの名無しさんNGNG
たびたび質問ばかりで申し訳ないが、
awtのTextFieldで、文字の入力を
挿入モードじゃなくて上書きモードに
する方法を教えて欲しい。

さんざんググったし、本屋で立ち読み
しまくってきたが、ついに精魂尽き果てた。
0586デフォルトの名無しさんNGNG
String[1024] with new String ()s takes 45072 bytes
String[1024] with ""s takes 4112 bytes
0587デフォルトの名無しさんNGNG
>574
Cloneableも非推奨になるかもしれないとか・・.
0588デフォルトの名無しさんNGNG
>>585
自力で上書きモードを自作する以外の方法が思いつかない。
TextFieldのTextEventが起きたときに文字の追加があるかどうかを調べて、
もしあれば追加された場所の1文字を削除するとか。
「文字の追加があるかどうか」を知るには、TextFieldの外部にテキストを持たないと
いけないなあ。追加された場所はTextComponent#getCaretPosision()でわかりそうな
気がする。
0589585NGNG
>>588
なるほど、ありがとうございました。
TextFieldで[Insert]キーを押しても
なにも起きない点で、イヤな予感がしたが
その方法しか無かったとは。
0590デフォルトの名無しさんNGNG
KeyEventで作ってみた。これは面倒だなー
      field.addKeyListener (new KeyAdapter () {
        public void keyTyped (KeyEvent ev) {
          final char c = ev.getKeyChar ();
          if (!ev.isActionKey () && Character.isLetter (c)) {
            ev.consume (); // 処理を奪う
            final int loc = field.getCaretPosition ();
            final StringBuffer buf = new StringBuffer (field.getText ());
            buf.delete (loc, loc + 1);  // deleteCharAtと違って例外なし
            buf.insert (loc, c);
            final String edited = buf.toString ();
            field.setText (edited);
            field.setCaretPosition (loc + 1);
          }
        }
      });
0591デフォルトの名無しさんNGNG
JEditorPane.setPage()でyahooとか指定すると(というかどこを指定してもほとんど)
例外がビシバシ発生するんですけど、これってJEditorPaneのバグ?

JDK1.4 / JEditorPane.setEditable(false)してます
0592デフォルトの名無しさんNGNG
JAVA初心者です。
VCのような統合環境というか、ブレーク・ステップ実行等
の機能のあるソフトってのはないんでしょうか?
デバッグは大変ではないですか?
0593デフォルトの名無しさんNGNG
>>592
jdb使ってもいいし。
この間、仕事で VisualAge for Java つかった。
重すぎるけど、ユーザインタフェースはまとも。
0594デフォルトの名無しさんNGNG
>>593
情報ありがとう。
あるのはあるんですね。

さっき検索してVisualAge for Javaの値段にはちょっと
驚いてしまった
0595デフォルトの名無しさんNGNG
eclipse か fire & ice
0596デフォルトの名無しさんNGNG
>>592
Eclipse のデバッグ機能が軽くて使い勝手が良いのでお勧め。

すんません、X11 積んでない鯖で JPEG の縮小と GIF 変換したいんですけど
何か良い方法は無いでしょうか? デジカメ画像のアルバム的うpろーだーで
i-mode, J-SKY 用の画像 (ついでに PC 用サムネール) を鯖側で作りたいん
ですけど。
0597デフォルトの名無しさんNGNG
>>596
JDK1.4 なら、-Djava.awt.headless=true
それ以前なら、XFree86-Xvfb いれればいい。
0598デフォルトの名無しさんNGNG
>>591
ほんとだ。なんかものすげー事になってる。
0599デフォルトの名無しさんNGNG
こんな調子で何度も。表示するコンポーネント側の問題に見えるが。
それにしてもコールスタックが深いなー。
java.lang.NullPointerException
        at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2744)
        at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:758)
        at sun.java2d.pipe.DrawImage.scaleImage(DrawImage.java:756)
        at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2752)
        at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2705)
        at javax.swing.text.html.ImageView.paint(ImageView.java:363)
        at javax.swing.text.BoxView.paintChild(BoxView.java:144)
        at javax.swing.text.BoxView.paint(BoxView.java:407)
        at javax.swing.text.BoxView.paintChild(BoxView.java:144)
0600デフォルトの名無しさんNGNG
Win(Me) + JDK1.3.1 です。

Component を継承して update(Graphics g) を override しましたが、
repaint() 時にこのメソッドが呼ばれず、強制的に画面がフラッシュします。
#Canvas を継承すると自前のメソッドが呼ばれますよね。
これは仕様ですか?
0601デフォルトの名無しさんNGNG
クラス・ライブラリについて教えてください。
javax.servletってSEのAPI仕様に説明されてないですよね。
でもJDKのSEでjavax.servletを使ったものもコンパイルできますよね。
ライブラリはどのような構成になってるのでしょうか?
0602585NGNG
>>590
フォントは等幅フォントに限るとしても、入力された
文字が全角文字(って言い方も古くさいな)だった場合
とか、いろいろ考えるとかなり面倒。

まあ、地道にチマチマ実装していくしかないか。
サンプルコードありがとう。
0603U ◆tFsGiu0c NGNG
>>601
それはservlet.jarとかj2ee.jarとかがクラスパスに入っているからじゃないの?
少なくともrt.jarには入っていないよ。
0604デフォルトの名無しさんNGNG
JAVAアプリを単一のexeファイルにするにはどうすれば?
0605デフォルトの名無しさんNGNG
できない。
なぜならJAVAだから。
0606デフォルトの名無しさんNGNG
商用でいくつか exe にするプログラムが売ってるよ。
gcc でも出来なかったっけ?
0607デフォルトの名無しさんNGNG
バッチをexeにしる
0608592==594NGNG
>>595-596
Eclipse、fire & iceですね。サンクスです。
早速DLさせてもらってます。
0609デフォルトの名無しさんNGNG
んで?結局JEditorPaneってバグバグって結論でよいのかな?
JDK1.4.1でこんな状況だけど、もっと前のバージョンでは大丈夫なのか?
それとも回避する手段がある?
0610デフォルトの名無しさんNGNG
Javaは
あんまりネガティブな意見は嫌い。
0611デフォルトの名無しさんNGNG
定数をどのクラスからも使えるようにしたいんだけど、
どうしたらいいですか?
0612デフォルトの名無しさんNGNG
その質問は
Javaにとっては禁句。
0613デフォルトの名無しさんNGNG
>>611

staticにしる
0614デフォルトの名無しさんNGNG
>>613

間違えた。public staticにしる
0615デフォルトの名無しさんNGNG
>>612
611へのレスですか?
理由を知りたいです。!
0616不明なデバイスさんNGNG
Javaのコンパイラは何がいいですか?
0617デフォルトの名無しさんNGNG
javacがおすすめ。
0618デフォルトの名無しさんNGNG
J Builderってどうよ?
0619デフォルトの名無しさんNGNG
JうんこBuilder
0620デフォルトの名無しさんNGNG
>>614
定数ってんだから public static final にしとけよ…
0621デフォルトの名無しさんNGNG
JavaのSDKには文字列を暗号化するクラスはないのれすか?
あったら使い方教えてください
0622デフォルトの名無しさんNGNG
配列って動的割り当てできないですよね?
0623デフォルトの名無しさんNGNG
>>622
Javaのオブジェクトは動的割り当て<しか>できないが、
それは何か可変長配列の事をいっておるのか
0624デフォルトの名無しさんNGNG
>>623
ごめんなさい。Cみたいに確保とか開放を自分で指定して
ってことです。できますか?
0625デフォルトの名無しさんNGNG
>>621 お前、調べてないな。ぐぐったら一発だったぞ
0626デフォルトの名無しさんNGNG
>>624
だから、確保はnewで普通にできるだろ。
int[] array = new int[123];
参照が切れればそのうち解放されるっての知らないのか?
System.gc()すればたいてい時期が早まることになってるが
0627デフォルトの名無しさんNGNG
>>626
そうでした。忘れてましたnewで確保。
あんまり勉強してないので開放も何か
あるのかなって思って聞きました。すいません。
ありがとうございました。
0628デフォルトの名無しさんNGNG
> あんまり勉強してないので

なんか支離滅裂だな。大丈夫か
0629デフォルトの名無しさんNGNG
StringTokenizerで文字を区切っているのですが、文字がない部分を
トークンとして判断してくれません。(あたりまえかもしれません)
a,b,c,,,dと言う文字で,,,も部分も""で処理したいのですが、
方法はありますか?
0630U ◆tFsGiu0c NGNG
>>621
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/jce/JCERefGuide.html
0631デフォルトの名無しさんNGNG
「1.4.1 FCS がリリースされました ! 」
http://java.sun.com/j2se/1.4.1/ja/

と、いうことなのですが "FCS" って何の略なんでしょうか?
0632デフォルトの名無しさんNGNG
http://java.sun.com/products/jdk/rmi/archives/1216.html

それよりもダウンロードが途中で終わっちゃいます。
ミラーはないのかな・・・
0633デフォルトの名無しさんNGNG
>>631
767 :デフォルトの名無しさん :02/09/17 16:49
とは書き込んだものの、FCSってどういう意味?
RCはRelease Candidate、リリース候補、
つまり製品候補、最終候補のような意味だと判ったけど、
FCSはgoogleしても見つからなかった・・・・鬱

768 :デフォルトの名無しさん :02/09/17 16:58
>>767
First Customer Shipment。

って1.4.1出たのか。

769 :デフォルトの名無しさん :02/09/17 17:09
>>768
ありがとう。
敢えて訳すと「最初の顧客向け出荷品」になるんでしょうかね。
http://pc3.2ch.net/test/read.cgi/tech/990949654/766-769n

だそうです。
0634デフォルトの名無しさんNGNG
自分で作ったJavaプログラムを実行したときに一度Win2kがフリーズして、
なにかJavaの起動に必要なファイルか設定を壊してしまったようなのですが、
よくわかりません。
それ以降、ウィンドウを出すJavaプログラム(いままで動いていたもの)全部の
起動時にWin2kがとまるようになりました。(コンソールだけのものは無事)
reとsdkを一旦アンインストールしてから入れなおしたんですが、事態が改善しません。
OSから入れなおさなきゃ直りませんか?
1.4.1rcです。
0635デフォルトの名無しさんNGNG
>>632,633
ありがとう、分かりました。
633氏紹介のスレは未見でした、今からちょっと見てきます。

0636デフォルトの名無しさんNGNG
最近になってJavaをやり始めたものです。
コンピュータを起動して一回目のコンパイルのとき 
javac foo.java
とやると異様に時間がかかるのですが、こういうものなのでしょうか?

java foo
と実行するときも、一回目は時間が非常にかかります。
0637デフォルトの名無しさんNGNG
>>636
具体的に何分かかるんだよー。
CPUのスペックは?
0638デフォルトの名無しさんNGNG
>>637
何分もはかかりませんけど、数十秒かかるんです。
二回目以降はすぐに終わるのでこういうものなのかと。
0639デフォルトの名無しさんNGNG
>>638
そーゆーもん。
ひょっとするとメモリが めちゃくちゃ少ないのかも?
0640デフォルトの名無しさんNGNG
>>638
マシンスペック(CPU,メモリ)とソースの規模晒してみ。そうでないとなんとも言えん
0641デフォルトの名無しさんNGNG
タイピングソフト作ろうと思うのですが、参考になるようなコード書いて下さい
0642java暦2週間NGNG
class statictics {
int intStaPopulation[] = new int[2];
intStaPopulation[0] = 3;
}

と打ったところ


']'がありません。
intStaPopulation[0] = 3;
^
<identifier>がありません。
intStaPopulation[0] = 3;
^
シンボルを解釈処理できません。
intStaPopulation[0] = 3;
^
エラー 3 個

というエラーが返ってきてしまい、コンパイルできません。
どこを直せばよいですか?また、その理由を
誰か教えてください。
0643デフォルトの名無しさんNGNG
お前は2週間何をやってきたのかと小一時間(略
0644デフォルトの名無しさんNGNG
さすが阿呆揃いですな。
0645645NGNG
>>644
おまえのがアホやんか
0646デフォルトの名無しさんNGNG
>>642
intStaPopulation[0] = 3;
↑この一行は「実行文」なので関数定義の中にしか書けない。
おぬしのソースには関数定義がない。

int intStaPopulation[] = new int[2];
↑ちなみにこの行は
「staticticsというクラスには
intStaPopulationという名前のメンバー変数があって
その初期値は(int型の大きさ2の配列)である。」

という意味の「宣言文」だから問題がない。

0647java暦2週間NGNG
>>646
ありがとうございますーーーーーーーーーー(まじで感謝
また、違うところでエラーが発生してしまったのですが
今度は甘えずに、自分で調べてみます
0648デフォルトの名無しさんNGNG
無理無理
0649デフォルトの名無しさんNGNG
半角カナを全角に変換するには、Unicodeで変換するのが一番良いのでしょうか。
0650デフォルトの名無しさんNGNG
得意なエンコードでいいんでは?
0651デフォルトの名無しさんNGNG
>>634
http://pc3.2ch.net/test/read.cgi/tech/1002160815/658-671

の 658 と 671 を書いた者っす。
もしかして、JRE を 1.4.0_x に入れ直せば改善しませんか?

いや、未だに俺のマシンでは 1.4.1 で win2k がクラッシュするんで。
1.4.0 とか 1.3 では問題ないのに。

Sun に Bug 報告したいんだけど、「こちらでは再現しない」
とか言われて終りそうな気もする。(以前そんなことがあった)

ちなみに >>634 さんのマシンの環境とかどんな感じですか?
0652デフォルトの名無しさんNGNG
public void paint(Graphics g){
 g.drawImage(image,0,0,this);
}

このthisは、gを指しているんですよね?
0653デフォルトの名無しさんNGNG
>>652
なんでそうなる?!
paintメソッドを含んでいるクラスのインスタンス
そのものを指しているはずですが。
0654652NGNG
ムムム・・・全然理解してませんね自分・・・アタマガハレツシソウダ
0655hohoNGNG
ava2Dで質問です。任意のShapeを直線で分割して、塗りつぶしたり出来ますか?
文字列をアウトライン化して、文字の真ん中を分割して、別々の色で塗りつぶしたいのですが。
そういうメソッドってありますか?今のところ、文字のアウトライン化まではわかりました
0656デフォルトの名無しさんNGNG
図形をブール演算で分割するとかか?もーちょっと色々読めばわかるんじゃないの
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/2d/spec/j2d-geom.fm3.html
0657デフォルトの名無しさんNGNG
どなたかサーバーサイドJAVAの開発環境を比較しているサイトを御存知ありませんか?
比較対象として
Borland JBuilder
IBM WebSphere Studio+VisualAge for Java
富士通 APWORKS
を考えています。

ttp://www.sunicom.co.jp/support/servlet&jsp/1-.htm
上記サイトみたいな所だとベストなのですが。
0658デフォルトの名無しさん[] NGNG
教えてください。
JAVAでデータベース検索中にアイコンを砂時計にして
画面ロックしたんですが、よい方法を教えてください。
0659デフォルトの名無しさんNGNG
ひとつのConnectionから、同時に複数のstatemt resultsetを取得できますか?
複数resuletsetをとりたい場合は、connectionを複数とらないとだめですよね?

connection:statement:resultset=1:1:1?
0660660NGNG
すみません、質問させてください…。
下のソースみたいに、fにvectorListの内容を渡そうとしていますが上手くいきません。

ちなみにvectorListはjava.util.Vectorで、
要素としてjava.io.Fileをいくつか入れてあります。

これだとなんとなく、うまくいきました。
  File[] f = new File[vectorList.size()];
  for (int i = 0; i < length; i++){
    f[i] = (File) vectorList.get(i);
  }

これだと2行目でClassCastExceptionになってしまいました…。
  File[] f = new File[vectorList.size()];
  f = (File[]) vectorList.toArray();

ClassCastExceptionの説明も読みましたが、
ObjectはFileにも継承されていると思っていたので、
この例外の意味が良く分かりませんでした。

配列を丸ごと渡せるいい方法があったら、教えて頂けるとうれしいです。
あと、もしよろしければなんですが、何で2番目の方のコードではダメなのかも教えて頂けると幸いです。

長々とすみません、どうかよろしくお願いします。
0661デフォルトの名無しさんNGNG
f = (File[]) vectorList.toArray(f);
あるいは、
File[] f = (File[]) vectorList.toArray(new File[0]);
0662660NGNG
>>661
おおお!出来ました!ありがとうございます!!
数日悩んでいたので、辛かったです…。

本当にありがとうございます!
0663デフォルトの名無しさんNGNG
数値データをチャートに変換し、Web上に展開するJavaツールで良いものありますか?
価格は10万前後まで。
0664よろしくおねがいしますNGNG
現在、アプレットとサーブレットの通信をおこなわせるための
テストアプレットを作成しているのですが、
通信部分でエラーが発生しているらしくて、なぜ発生するのか、
またどういう対処を行えばいいかを調べていたのですが
結局対処できなくて悩んでいます。通信内容としましては、
テキストボックスに表記した文字をサーブレット
に送信して、その文字に"OK"という文字を追加して
アプレットに返信するという内容です。
どの部分の書き方が悪いのでしょうか。よろしくお願いします。
<アプレット部分>
import java.applet.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class tester extends Applet{
Button btnSend;
TextField txtF;
public void init(){
btnSend = new Button("送信");
txtF = new TextField("",8);
setLayout(null);
btnSend.setBounds(1,1,80,50);
txtF.setBounds(100,100,80,50);
add(btnSend);
add(txtF);
btnSend.addActionListener(new sendData());
}
0665よろしくおねがいします(続き)NGNG
class sendData implements ActionListener{
URL ul;
URLConnection conn;
String str;
Vector vec = new Vector();
public void actionPerformed(ActionEvent ev){
try{
ul = new URL("http://localhost:8088/serv.class");
conn = ul.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
ObjectInputStream inn = new ObjectInputStream(conn.getInputStream());
out.writeUTF(txtF.getText());
out.flush();
out.close();
vec = (Vector)inn.readObject();
txtF.setText((String)vec.elementAt(0));
}catch(Exception e){
txtF.setText("エラー");
}}}}
0666デフォルトの名無しさんNGNG
Xerces-J1.4.3つかっているのですが、

String xml = "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n<root/>";
DOMParser parser = new DOMParser();
InputSource source = new InputSource(new StringReader(XMLの内容));
parser.parse(s);

みたいな感じで、以下の例外が起きてしまいます。ファイル名として解釈している?
どうすればよいでしょう?

SAXParseException: File "<?xml version="1.0" encoding="Shift_JIS"?><root/>" not found.
0667よろしくおねがいします(続き)NGNG

<サーブレット部分>
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class serv extends HttpServlet{
String str;
Vector vec;
public void doPost (HttpServletRequest req , HttpServletResponse res) throws
ServletException,IOException{
res.setContentType("application/octet-stream");
DataInputStream st = new DataInputStream(req.getInputStream());
ObjectOutputStream ou = new ObjectOutputStream(res.getOutputStream());
str = st.readUTF() + "OK";
vec.addElement(str);
st.close();
ou.writeObject(vec);
ou.flush();
ou.close();
}
}

0668デフォルトの名無しさんNGNG
ある瞬間にマウスなどでポイントされているメニュ項目をアプリケーションが
知るにはどうしたらいいですか?
0669デフォルトの名無しさんNGNG
メニュー項目が通知すれ
0670デフォルトの名無しさんNGNG
>>669
選択というか、クリックされたときだったらわかるのですが、ポイントするだけでも
なにかイベントって発生するんですか?
0671デフォルトの名無しさんNGNG
>>664-667
なんかソースが長くて読む気しないんだけどさ、例外捕捉のところは
 ・・・
} catch(Exception e) {
 e.printStackTrace();
}

って書いたみたら? 自前で「エラー」とか表示するよりも
128倍くらい有用だと思う。
0672デフォルトの名無しさんNGNG
>>670 察しのとおり
MOUSE_ENTERED
MOUSE_MOVED
MOUSE_EXITED
などのイベントが発生する。
http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/java/awt/event/MouseEvent.html#MOUSE_MOVED
つーかこれらが拾えないとお絵描きソフトやドラッグ&ドロップみたいな物の
実装ができないじゃん。
0673デフォルトの名無しさんNGNG
>>672
ありがとう!助かりました!
0674デフォルトの名無しさんNGNG
>ポイントされている
なのにMouseEvent??
0675デフォルトの名無しさんNGNG
Javaに限らずなんですが縦書きのエディタって作ること可能ですか?
横書きの普通のエディタなら作れるのですが・・・
知っている方、知恵を貸してください。お願いします。
0676デフォルトの名無しさんNGNG
すいません、ファイルの移動はどうやればいいのですか?

File src = new File("/abc/a.txt"); // a.txt は存在する
File dest = new File("/def/a.txt"); // a.txt は存在しない
src.renameTo(dest);

こんなやりかたでいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています