【初心者】Java質問・相談スレッド103【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/06/27(水) 07:23:27JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド102【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1180419689/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
次スレは>>980あたりで。
0403デフォルトの名無しさん
2007/07/05(木) 15:47:41そういうことっす
0404デフォルトの名無しさん
2007/07/05(木) 19:04:570405デフォルトの名無しさん
2007/07/05(木) 20:49:420406デフォルトの名無しさん
2007/07/05(木) 21:03:29同じプログラムを Linux へ持っていたらまったく意図した通りに動かない、ということですな・・・
0407デフォルトの名無しさん
2007/07/05(木) 21:05:440408デフォルトの名無しさん
2007/07/05(木) 21:30:39デフォルトはシステムのどっかにアーカイブされてるんだろうが
0409デフォルトの名無しさん
2007/07/05(木) 21:45:570410デフォルトの名無しさん
2007/07/05(木) 21:50:05ttps://jdic.dev.java.net/
この辺のAssociationとか使えそうじゃね?
ttps://jdic.dev.java.net/documentation/Examples.html
0411デフォルトの名無しさん
2007/07/05(木) 22:50:43http://javadesktop.org/jdic/demo/FileExplorer/fileexplorer.jnlp
0412デフォルトの名無しさん
2007/07/05(木) 22:51:45また、画面から入力(Enter)があれば、ループを抜けずに、プログラムを強制終了させる。
上記の問題で条件文のことで質問があります。
while(true){
// 省略
if(System.in.available() > 0)
break;
}
「入力があれば」は上記if文でいいのでしょうか?
またEnterキーが入力された場合はどのように条件文を書けばいいのですか?
0413デフォルトの名無しさん
2007/07/05(木) 22:58:570414デフォルトの名無しさん
2007/07/05(木) 23:01:12それだと、ファイルの種類にかかわらずアイコンが全部同じになってるんだよね。
他に方法があるといいんだけど。
0415デフォルトの名無しさん
2007/07/05(木) 23:07:24まったく意図が通じていないと思うがエスパーしてみる
socket.getInputStream() を使ってバイナリを受信するべし
0416412
2007/07/05(木) 23:20:24・画面からの入力が「Enterキー」ならプログラム強制終了。
の部分だけを知りたかったんです。
サーバ、クライアントなしでただのプログラムとして考えてください。
0417デフォルトの名無しさん
2007/07/05(木) 23:21:270418デフォルトの名無しさん
2007/07/05(木) 23:30:010419デフォルトの名無しさん
2007/07/05(木) 23:33:58Scanner scanner = new Scanner(System.in);
scanner.nextLine();
0420デフォルトの名無しさん
2007/07/05(木) 23:42:01たぶんもう見てると思うけど
http://wisdom.sakura.ne.jp/system/java/swing/swing38.html
の一番下のとか
http://terai.xrea.jp/Swing/PreviewAccessory.html
とかがあるよね
でも >>395 の
「やっぱりひとつひとつアイコン設定するしかない? 」
の不満は解消されてないっぽ
シコシコやっても >>406-407 みたいになるのがオチ
0421デフォルトの名無しさん
2007/07/05(木) 23:43:41お勧めの教えてくらさい
軽くその本の内容も書いてくれると嬉しいです
0422デフォルトの名無しさん
2007/07/05(木) 23:49:540423デフォルトの名無しさん
2007/07/05(木) 23:57:28サンクス
ググってみたが,出版されて日が浅いせいか
全然レビューないな
とりあえず,明日本屋で立ち読みしてみるわ
0424デフォルトの名無しさん
2007/07/06(金) 00:04:15jdicのAssociationServiceのgetFileExtensionAssociationで拡張子指定して
Associationを取得してgetIconFileName()を使うとなんか帰ってくるな。
なんでか「絶対パス,整数」の形式になってる。
数字の意味がわからないが絶対パスの先はアイコンではなく
実行ファイルなのであった・・。
ああ、もしかするとアイコンを使ってるファイルのパスが帰ってくるのか(´д`)
0425デフォルトの名無しさん
2007/07/06(金) 00:04:250426デフォルトの名無しさん
2007/07/06(金) 00:05:50整数はリソースの番号だろ
0427デフォルトの名無しさん
2007/07/06(金) 00:06:45アイコンを使ってるファイルのパスじゃなくて
アイコンを格納しているファイルだろうね
0428デフォルトの名無しさん
2007/07/06(金) 00:13:18で、「もしや?」と思って試してみた。
上手くいったぞ。こんなコード。
JFileChooser chooser = new JFileChooser();
FileChooserUI ui = chooser.getUI();
FileView fileView = ui.getFileView(chooser);
JLabel pdfIcon = new JLabel("*.pdf");
Icon pdfIcon = fileView.getIcon(new File("a.pdf"));
pdfLabel.setIcon(pdfIcon);
こんなコードをJTreeのレンダラに仕込めば、
JTreeのノードに対応するすべてのファイルに対して、適切なアイコンが表示される。
もちろん、Windows L&F限定だが。
FileView#getIcon(File)に指定するファイルは、存在しないとFileNotFoundExceptionが発生した。
0429デフォルトの名無しさん
2007/07/06(金) 00:24:49乙。
0430428
2007/07/06(金) 00:35:40public class FSTreeCellRenderer extends DefaultTreeCellRenderer {
private FileView fileView;
public FSTreeCellRenderer(){
JFileChooser chooser = new JFileChooser();
fileView = chooser.getUI().getFileView(chooser);
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
File file = (File) node.getUserObject();
Component comp = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
setText(file.getName());
setIcon(fileView.getIcon(file));
return comp;
}
}
0431デフォルトの名無しさん
2007/07/06(金) 00:43:17javax.swing.filechooser.FileSystemView 使えば
Windows では 16x16のアイコンと、ファイルの種類だけは取れる。
0432デフォルトの名無しさん
2007/07/06(金) 07:27:440433デフォルトの名無しさん
2007/07/06(金) 09:46:41Eclipseでプログラミングをしているのですが、
log4jとJCOMを外部jarとして追加しています。
この状態でjarファイルとしてプログラムをエクスポートすると、生成されたjarがそのまま実行できません。
CLASSPATHが通ってない・・・みたいなエラーが出ます。
通常のjarみたいにダブルクリックで起動させたいのですが、これはどうすれば解決できるでしょうか?
0434デフォルトの名無しさん
2007/07/06(金) 10:18:12実行可能Jarでググれ。
0435デフォルトの名無しさん
2007/07/06(金) 10:33:12ググってみたんですけど、
外部Jarを使ったプログラムのエクスポート方法
などが載ってるページが見つかりませんでした。
0436デフォルトの名無しさん
2007/07/06(金) 10:56:55お前さんが使ってるGoogleは別物なんだな。
わかった。ズバリ答え。
MANIFEST.MFにこう書け。
Class-Path: log4j.jar jcom.jar
log4j.jarとjcom.jarは、実行するJarファイルと同じフォルダに置くこと。
0437デフォルトの名無しさん
2007/07/06(金) 12:19:50ありがとうございます!!
無事に実行することができました。
これで実行jarと同じ階層に3つのjarファイルがあるわけなんですが、
コレを1つのexeファイルにしたいんです。
Fat jarでまとめてexewrapでexeにする・・・というのはできるんでしょうか?
0438デフォルトの名無しさん
2007/07/06(金) 15:46:00そこまで手順が確定しているなら自分でやってみればできるかどうかすぐ分かる。
0439たかひと
2007/07/06(金) 16:49:12どのようにすればいいのでしょうか。
宜しくお願いします。
0440デフォルトの名無しさん
2007/07/06(金) 17:52:310441デフォルトの名無しさん
2007/07/06(金) 18:05:44スレッドとかぶつかっても平気ですか?
0442デフォルトの名無しさん
2007/07/06(金) 21:19:09まぁ日付の書式に気をつければ何の問題もないけどね。
0443デフォルトの名無しさん
2007/07/06(金) 21:31:280444デフォルトの名無しさん
2007/07/08(日) 00:53:30> 1.7 Is log4j thread-safe?
> Yes, log4j is thread-safe. Log4j components are designed to be used in heavily multithreaded systems.
まことに残念
0445デフォルトの名無しさん
2007/07/08(日) 01:42:28例えば以下のソースで、
------------------------
int i = 0;
byte b = -1;
i = i | b;
------------------------
やりたいことは、iのビットパターンを以下のようにしたいんだけど、
00000000 00000000 00000000 11111111
実際はこうなってしまいます。
11111111 11111111 11111111 11111111
これってどうすれば回避できるんでしたっけ・・・
0446デフォルトの名無しさん
2007/07/08(日) 02:00:34単純に宣言や拡張が何か足りないだけなのでしょうか…
0447デフォルトの名無しさん
2007/07/08(日) 02:02:350448デフォルトの名無しさん
2007/07/08(日) 02:04:26i = i | (b & 0xFF)
0449デフォルトの名無しさん
2007/07/08(日) 02:04:330xFF と AND でもとれば
0451デフォルトの名無しさん
2007/07/08(日) 02:16:37Eclipse3.21 JDK1.6.0_02、Windows2000SP5です。同じような症状の人いますか? 普通に実行してる分にはNullPointerExceptionは発生しないのですが。
0453452
2007/07/08(日) 03:01:220454デフォルトの名無しさん
2007/07/08(日) 03:04:300455デフォルトの名無しさん
2007/07/08(日) 04:41:180456452
2007/07/08(日) 04:44:03GUI(Swing)を使えば必ず出てきます。
階層的にはJFrame#initの呼び出しの果てに
Window#init(GraphicsConfiguration gc)
が呼び出されて、さらにその後もメソッドの呼び出しが続いてTrueTypeFon.open()でヌルポが発生してしまいます。
ただこのヌルポ、デバッグモードで動かさないとわかりません。
Eclipseならデバッグモードじゃなくてもヌルポが発生したらコンソールに知らせてくれるはずなのだと思いますが。
0457デフォルトの名無しさん
2007/07/08(日) 07:33:330458452
2007/07/08(日) 11:06:54public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(640, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
こんな単純なのでもデバッグモードで起動するとヌルポが出てしまいます。
0459452
2007/07/08(日) 11:10:080460デフォルトの名無しさん
2007/07/08(日) 11:31:51それでも発生するならばEclipseの実行環境(JRE)の設定でJDK1.6となっているかを確認。
さらに、プロジェクトのプロパティからコンパイルレベルが、6.0になっているかを確認
ダメならば、Eclipseを入れなおしてみる
とりあえず、そんなとこかな?
0461452
2007/07/08(日) 12:17:34どうもありがとうございます。JREの設定でJDK1.6、コンパイルレベルが、6.0、ともになっています。
ちょうどEclipse3.3が出たから、アドバイスどおりEclipseを入れなおしてみます。
0462デフォルトの名無しさん
2007/07/08(日) 12:23:473.3.1が出るまでは冒険でしょでしょ(=ω=.)
なんかプラグインが衝突しているんかねぇ
大量にプラグインいれた環境とかならば、再インスコがベストだろうな。
VEとかいれているならばかなり怪しい
0463デフォルトの名無しさん
2007/07/08(日) 13:46:20Exception in thread "main" java.lang.NoClassDefFoundError:Sample1とエラーが出ます
そこでシステム環境変数のCLASSPATHを削除したら治ったのですがこれは削除してもよかったんでしょうか?
0464デフォルトの名無しさん
2007/07/08(日) 13:47:110465デフォルトの名無しさん
2007/07/08(日) 14:04:21CLASSPATHは環境変数に設定するとトラブルを誘発するので勧めない
必要な時、javaコマンドなどのオプション-cpで設定する方がいいよ
0466デフォルトの名無しさん
2007/07/08(日) 14:08:51はいそうです。
CLASSPATHの値を控えずに消してしまいました。元の状態に戻すことは不可能ですか?
0467デフォルトの名無しさん
2007/07/08(日) 14:16:00不可能
Windowsのバックアップ機能とかあるならば可能かもしれないけど、そっちは詳しくないので知らん
何度も言うけどCLASSPATHに値を設定してトラブルになるより、-cpの使い方学べ、その上でCLASSPATHに必要ならば設定汁
0468デフォルトの名無しさん
2007/07/08(日) 14:23:49そうですか・・ありがとうございました。
まあ今のところ問題なく動いているので大丈夫だと思いますが
ちなみにCLASSPATHは全くいじってませんでした。
04692人の女性と付き合っている高1です
2007/07/08(日) 19:54:12よこから割り込みますがCLASSPATHを環境変数に設定するとまずいという
ご意見がありますが、どういう時にまずいのでしょうか?
僕は現在JavaSE6up2しかマシンにインストールしていませんが、そんな
状況で起こりうる誤作動の事例をよろしければ教えてください。
0470桜井葵
2007/07/08(日) 20:11:370471デフォルトの名無しさん
2007/07/08(日) 20:46:41CLASSPATHでググれカス
0472デフォルトの名無しさん
2007/07/08(日) 20:47:502人とも妊娠
0473デフォルトの名無しさん
2007/07/08(日) 23:43:42↓
http://www.yukinko-net.jp/
0474デフォルトの名無しさん
2007/07/09(月) 12:48:21JDKを使って勉強したいのですが、
どれを使えばいいのでしょうか。
・JDK 5.0 Update 12 with NetBeans 5.5.1
・JDK 5.0 Update 9 with Java EE
・JDK 5.0 Update 12
・完全な環境と実行環境はGet the JDK download からダウンロードできます。
JDK5の次が7になっているのですが6のバージョンってないのでしょうか
0475デフォルトの名無しさん
2007/07/09(月) 12:56:49JDK 6 はあるよ。>>1のWikiサイトからたどれる。
ttp://java.sun.com/javase/ja/6/download.html
ここのJDK 6u2をダウンロードすればおけ。
with BetBeansってのは、IDEが付いてくる。
最初はエディタでやろうとしているなら、いらない。
with Java EEは、初心者なら忘れてしまってもかまわない。
0476デフォルトの名無しさん
2007/07/09(月) 13:10:49URLConnectionでGETパラメータを送ろうとしているんですが
どの時点で送信しているのかがわかりません。
String urlString = "http://hoge.com/hogehoge.jsp?a1=test&a2=TEST";
URL url = new URL( urlString );
URLConnection uc = url.openConnection();
DataInputStream dis = new DataInputStream( uc.getInputStream() );
String s;
while( ( s = dis.readLine() ) != null ) {
System.out.println( s );
}
dis.close();
リファレンス等を参考にするとopenConnection()で接続を確立しているらしいのですが
ここでhogehoge.jspに通信しているんでしょうか?
DataInputStream dis = new DataInputStream( uc.getInputStream() );
上の部分でhogehoge.jspに送信してそのまま受信に入っているんでしょうか?
タイミングがイマイチわからないので教えてください。
0477474
2007/07/09(月) 13:14:35ありがとうございます。
後のいろいろな機能はあとから付けられるのでしょうか。
どのようにつけたらよいのでしょうか。
よろしくお願いします。
0478デフォルトの名無しさん
2007/07/09(月) 14:06:21Java EEはここから
ttp://java.sun.com/javaee/downloads/index.jsp
NetBeansはここから
ttp://www.netbeans.org/products/
後でダウンロードしてインストールできる。最初からなくても大丈夫。
0479デフォルトの名無しさん
2007/07/09(月) 14:10:170480デフォルトの名無しさん
2007/07/09(月) 16:10:37自分の書いたレスをじっくり読み直すんだ
前者以外に答えがあると思うかね
0481デフォルトの名無しさん
2007/07/09(月) 16:44:22いまJPanel上を右クリックでJPopupMenuを表示するところまではできたのですが、メニューを選んだときの処理をどうすべきかわかりません。
MouseEventだとどのメニューを選んだかわからず、ポップアップにつけたJMenuItemにsetActionCommandを付けようにも、JPanelにaddActionListenerがないため、どのように識別させるのかがわかりません。
また、上の識別の問題に関連するものですが、JPanel別にメニューを付けてるのですが、大部分が重なる処理なので、呼び出し元(JPanel)を識別して、イベント処理で振り分けるということはできないでしょうか。
以上2点、お願いします。
0482481
2007/07/09(月) 17:01:07ボタン処理のようにJMenuItemごとにアクションリスナーを登録するという方法があるようで、そうするとメニュー選択時に呼ばれるようになりました。
どうも、検索したときのキーワードの範囲が広すぎたようね…
2つ目はいまだわからず、getComponentだとパネルの位置はわかるんですが、ActionCommandのように得ることはできないですかね。
0483デフォルトの名無しさん
2007/07/09(月) 17:25:50(Wordなら、文字の削除とオートシェイプの削除、など)
ActionMapで振り分けるとか。
JPanel p1 = new JPanel();
p1.getActionMap().put("edit", new AbstractAction(){
public void actionPerformed(ActionEvent e){
// 編集時の処理
}
};
p1.getActionMap().put("delete", new AbstractAction(){
public void actionPerformed(ActionEvent e){
// 削除時の処理
}
};
のようなJPanelを用意しておいて、JPopupMenu表示時には
ActionMapからJMenuItemを組み立てる。こんな感じ
private JPopupMenu createMenu(ActionMap map){
JPoppuMenu menu = new JPopupMenu();
JMenuItem editItem = new JMenuItem("編集");
if(map.get("edit") != null){
editItem.setAction(map.get("edit"));
} else {
editItem.setEnable(false);
}
menu.add(editItem);
// 以下略
return menu;
}
0484481
2007/07/09(月) 17:37:35なるほど、ActionMapってそういう使い方をするためにあったんですね。
もう少し調べて試してみます。
ありがとうございました。
0485デフォルトの名無しさん
2007/07/09(月) 18:24:07一度描画したものをドラッグで移動させるにはどのような方法があるのでしょうか?
「java ドラッグ」とかでググっても出てこない・・・
0486デフォルトの名無しさん
2007/07/09(月) 18:26:55[1] ドラッグされたことを知る
[2] 描画したものを移動させる
がんがれ
0487デフォルトの名無しさん
2007/07/09(月) 18:32:29[1]についてはマウスイベントで成功しました。
[2]がよくわかりません。
いちいち白塗りして細かく描きなおすのでしょうか。
0488デフォルトの名無しさん
2007/07/09(月) 19:43:28スプライト処理でぐぐってみれ。
要はTVゲームのスプライトと同じで描画領域と位置をコントロールする
後はマウスのイベントで移動量を測ればOK
0489デフォルトの名無しさん
2007/07/09(月) 22:54:08昔WebStartのサンプルで画像エディタがあって、コンポーネント単位で画像の移動、重ね貼りが
出来るのがあったけど、そういうのを作ろうとしているの?
0490デフォルトの名無しさん
2007/07/09(月) 23:09:17あれだ、ソリティアみたいなやつ
結構簡単に出来るといっていたけど、ソースみてもわからんorz
0491デフォルトの名無しさん
2007/07/09(月) 23:40:07今ならレイヤーで簡単
0492デフォルトの名無しさん
2007/07/10(火) 00:32:21ブラウザを2つ立ち上げると2つとも同じ数をカウントしていきます。int変数でカウントを記録しています。
ブラウザAを立ち上げる→1と表示される
ブラウザBを立ち上げる→2と表示される
ブラウザAの更新ボタンを2回クリック→4と表示される
ブラウザBの更新ボタンを1回クリック→5と表示される
これだと、いろんなユーザにint変数が共有されてしまうようにおもうんですが
これでいいものなんですか?
以下、ソースを載せます。
0493492
2007/07/10(火) 00:34:04import javax.servlet.*;
import javax.servlet.http.*;
public class Lesson03 extends HttpServlet {
int intCount = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html; charset=iso-2022-jp");
intCount++;
PrintWriter pw = response.getWriter();
pw.println("<html><head><title>カウントアップするサーブレット</title></head>\n"
+ "<center><br><br>読み込む度にカウントアップします<hr><br><br>\n"
+ intCount + "回読み込まれました。<br></center></body></html>\n");
}
}
0494デフォルトの名無しさん
2007/07/10(火) 00:35:53サーブレットのインスタンスは通常1個しか生成されず、
複数のリクエストは同じインスタンスを呼び出す
0495デフォルトの名無しさん
2007/07/10(火) 00:38:07原則、インスタンスフィールドは作らない
0496492
2007/07/10(火) 00:42:53どうもありがとうございます。よ〜くわかりました。doGetメソッドの中で宣言したらよかったです。
ありがとうございました。
0497デフォルトの名無しさん
2007/07/10(火) 00:45:290498デフォルトの名無しさん
2007/07/10(火) 00:49:54DnDをどうやって認識させるかで書き方が変わるね。
0499デフォルトの名無しさん
2007/07/10(火) 01:16:58求めたいX座標Y座標の値を返す関数を作りたいのですが教えてください。
0500デフォルトの名無しさん
2007/07/10(火) 03:10:10java.awt.geom.Point2D method(java.awt.geom.Point2D p, 斜辺の型 a, 傾きの型 b) {
return new java.awt.geom.Point2D(p,a,bから求めたx, p,a,bから求めたy);
}
実際にはjava.awt.geom.Point2Dは抽象クラスなんでnewでインスタンスを作れないから、
必要な精度に合わせてjava.awt.Pointとかjava.awt.geom.Point2D.Doubleとかを生成して返す。
引数の方はjava.awt.geom.Point2Dでなく問いのようにx,yを別々に指定するようにしても。
両方のメソッドを作ってオーバーロードしておいてもいいかと。
0501デフォルトの名無しさん
2007/07/10(火) 08:28:03パソコンのバックグラウンドで待機して、メール受信時にまずプロキシがメールデータ
を取得し、迷惑メールでなければそのままメールクライアントにメールデータを渡したい
です。
サーバーソケットを作って待機しているのですが、メール受信時にローカルにバインド
されるポート番号を検出できず悩んでいます。当然、110番で待機してはダメですよね?
メールクライアント側でプロキシサーバーアドレス、ポートを指定できれば早いのですが…。
(IEのように)
アンチウィルスソフトは、ローカルにプロキシサーバーを置いているように見受けられる
のですが、どうやって実現しているのでしょう?
どなたか、アドバイスをお願いいたします。
0502デフォルトの名無しさん
2007/07/10(火) 10:33:56まだ一度もセルにフォーカス取得してない状態だとフォーカスが消えたようになる。
もう一度TABを押すとようやくセルが選択状態になるのだが・・・・・。
一度セルにフォーカスを取得すると他のコンポーネントから一発で移動できるように
なるんだがな・・。
ちなみにScrollPaneは使っても使わなくても同じでした。
JDKは1.5す。
どなた原因&回避策おながいします。
■ このスレッドは過去ログ倉庫に格納されています