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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語Javaに関する質問スレです。
JavaScript, 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質問・相談スレッド105【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1188228705/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

次スレは>>980あたりで。
2デフォルトの名無しさん:2007/09/19(水) 12:25:42
3デフォルトの名無しさん:2007/09/19(水) 12:37:26
>>1
逸物
4デフォルトの名無しさん:2007/09/19(水) 14:50:24
RCPアプリの質問もここで宜しいでしょうか?

単純にビューに線や四角などを描きたいだけなんですが、
うまく動きません。どうすればいいのでしょうか?
GCをゲットして、線を描くように書いたのですが、
何も表示されません。

public class HogeView extends ViewPart{
      public void createPartControl(Composite parent) {
            final Canvas canvas = new Canvas(parent, SWT.NONE);
            canvas.addPaintListener(new PaintListener(){
                  @Override
                  public void paintControl(PaintEvent e) {
                        // GC取得
                        final Image image = new Image(parent.getDisplay(), canvas.getBounds());
                        final GC gc = new GC(image);
                        // 描画
                        gc.drawLine(50, 50, 100, 100);
                  }
            });

      }
}
ref.
http://www-06.ibm.com/jp/developerworks/opensource/library/os-eclipse-brand/index.shtml
5デフォルトの名無しさん:2007/09/19(水) 15:06:09
parentのレイアウトマネージャが要るんでない?
64:2007/09/19(水) 15:21:22
>>5
早速のレス有難う御座います。

レイアウトマネージャ入れてみましたが駄目でした。
無しでもLabel等は表示されました。

IBMのサイトの例に従って書いてるのですが・・・
7デフォルトの名無しさん:2007/09/19(水) 15:46:25
>>4
IBMの方には、event.gc.drawImage って書いてあるんですけど…
8デフォルトの名無しさん:2007/09/19(水) 16:08:41
テキストエディタを作っている者ですが質問です。
JTextPaneを使って折り返し処理をしたいのですが、そのような機能は実装できるでしょうか?
折り返し処理が出来るか出来ないかによって、行番号を付ける方法も変わってくると思うので
どなたかアドバイスお願いします。
9デフォルトの名無しさん:2007/09/19(水) 16:21:12
eclipse入れてみたら起動とかやたら重いんですけど、
何でこんなのが流行ってんすか?
10デフォルトの名無しさん:2007/09/19(水) 16:24:15
パソコン買ってみたら起動とかやたら重いんですけど、 
何でこんなのが流行ってんすか? 
11デフォルトの名無しさん:2007/09/19(水) 16:26:02
>>9-10
脳内流行を妄想の外に出すなよ
12デフォルトの名無しさん:2007/09/19(水) 16:48:20
なんか、夏休みのままドロップアウトしたようなやつがいるなw
13デフォルトの名無しさん:2007/09/19(水) 16:48:22
IDEの使い方を学ぶ時間+起動時間+コーディング時間+デバッグ時間が一番少なくて済むのが、一番優れたIDE
14デフォルトの名無しさん:2007/09/19(水) 16:59:47
>>13
( ´_ゝ`)フーン. それで?
15デフォルトの名無しさん:2007/09/19(水) 17:05:31
>>13
( ´_ゝ`) 起動時間・・・・。
16デフォルトの名無しさん:2007/09/19(水) 17:08:40
うちのPCでは別に重くない
いつまでもそんな古いをPC使うのはやめたらどうだ
17デフォルトの名無しさん:2007/09/19(水) 17:14:22
>>13は釣りだろ
フーンとか恥ずかしすぎw
18デフォルトの名無しさん:2007/09/19(水) 17:30:16
>>13
それを短い時間で行うことが出来るのが優秀なエンジニア。
ようは、ハサミだけで優劣は付けられない。

>>9
まあ使えば分かる。
194:2007/09/19(水) 17:57:01
>>7
見落としていました。すいません。
ただ引き続き問題があって、一部しか表示されません。
そこは今から何とかやります。

有難う御座いました。
20デフォルトの名無しさん:2007/09/19(水) 18:11:38
Generics使い出すと、やたらとクラス名が長くなる。
List<Pair<Map<Character, Integer>, String>> list;
とか。C++のtypedefみたいな物があれば良いんだが、Javaにはないし、
継承で擬似的にtypedefを行うのは下のページで言われてるとおりだめだし。

IBM dW : Java technology:Javaの理論と実践:疑似typedefアンチパターン - Japan
http://www-06.ibm.com/jp/developerworks/java/060310/j_j-jtp02216.shtml

前スレの話じゃないけど、関数やクラス名のエイリアスだけでもできるようにしてくれないかな?
21デフォルトの名無しさん:2007/09/19(水) 18:19:05
typedefとtypealiasの両方欲しい
22デフォルトの名無しさん:2007/09/19(水) 18:22:49
コンパイル時間長くなるからなあ
23デフォルトの名無しさん:2007/09/19(水) 18:38:02
アノテーションとかリフレクションだか使ったらできないかな?
俺はそっち全然知らんのだけど。
24デフォルトの名無しさん:2007/09/19(水) 18:45:47
>>23
何をよ?
typedefなら、出来てるじゃん>>20
アンチパターンに指定されちゃってるけど
25デフォルトの名無しさん:2007/09/19(水) 19:00:18
前993
むしろ、外部との通信はOS毎に扱えるフレーバーが違い過ぎて
まともに受け取れるのはURLlist位しかないから実用レベルではjava内部での使用が限界。

利用もJListやJTreeのDnD対応がほとんどだろう。
26デフォルトの名無しさん:2007/09/19(水) 21:05:13
前958
ニートの俺がやってみましたよっと。
JMFを紹介しておいてなんだが、…このフレームワーク使いづれぇなオイ。

とりあえず参考ページ
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/Seek.html
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/FrameAccess.html

作ったコードはこれ。こんなんで勘弁してくれ。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29700
27デフォルトの名無しさん:2007/09/19(水) 21:23:16
ニートw
28デフォルトの名無しさん:2007/09/19(水) 23:49:49
>>26
JOGLRenderer書いたことあるが慣れると細かくモジュール化されてるから必要最低限の実装で使い回し利いて結構使いやすいよ。

けどwinの標準ラッパーはDirectX側のバグだらけでDirectXの情報追わないとキツイ。
29デフォルトの名無しさん:2007/09/20(木) 00:45:26
いまさらJavaMailとactivation.jarの話ですまない。

Eclipse上のJREで動作するんですが、jarにしてダブルクリック実行をすると例外が発生します。
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/plain; charset=iso-2022-jp
        at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
        at javax.activation.DataHandler.writeTo(Unknown Source)

Java 6.0のrt.jarに javax.activationが含まれているようで、
どうもこれが、ライブラリとして指定したmail1.4でメールを送信しようとした時、activation1.1と競合してしまっているようです。

なにか対処方法あるでしょうか?
3029:2007/09/20(木) 00:47:50
追記。構成
-- application.jar (MANIFISTにlib/mail.jar等を設定)
|-lib
   |- mail1.4.jar
   |- activation1.1.jar
ユーザーはダブルクリックでapplication.jarから起動します。
31デフォルトの名無しさん:2007/09/20(木) 01:45:57
javaからウィンドウズのごみ箱は使えるかい?

ごみ箱の中身を見たいわけじゃなく、ファイル削除でごみ箱に移動させたいんだが。
32デフォルトの名無しさん:2007/09/20(木) 07:13:28
ごみ箱フォルダの実体のディレクトリってどこだっけ?
そこに移動すればいいんじゃない?
33デフォルトの名無しさん:2007/09/20(木) 07:45:21
>>32
適当なこと言うなよ。Windowsのゴミ箱はそんな簡単な仕組みじゃなかったはず。
・・・とはいうものの、俺もはっきりした方法は知らんのだが。
ちょっと調べた限りでは、やはりAPI呼ぶしかなさそうだな。
34デフォルトの名無しさん:2007/09/20(木) 08:18:24
あれま、ごみ箱を使うコードはウィンドウズ専用になっちまうのか。
35デフォルトの名無しさん:2007/09/20(木) 11:26:59
>>34
それは間違いないと思う。たしかLinuxのゴミ箱は、>>32のいうとおりディレクトリそのものだったから。
事実、ゴミ箱のあるパーティションとは別のパーティションで、ゴミ箱に入れると、
ファイルがパーティション間でコピーされる。
36デフォルトの名無しさん:2007/09/20(木) 11:40:33
DB接続クラスの作成と実行クラスの作成をしていまして、実行クラスのコンパイルは
できたのですが、実行すると下記の様なエラーが表示されました。
どういう意味でしょうか??

Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC Microsoft Acc
ess Driver] インデックス、主キー、またはリレーションシップで値が重複しているので
、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、イ
ンデックスを削除してください。または重複する値を使用できるように再定義してくださ
い。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:
288)
at Test.updateExec(Test.java:82)
at TestData.main(TestData.java:29)
37デフォルトの名無しさん:2007/09/20(木) 11:42:30
>>36
斜め読みだが、作ろうとしてるテーブルのフォーマットが不正か、
すでにあるテーブルを再度追加してエラーになってきる気がする。
どっちも俺がよくやったエラー。
38デフォルトの名無しさん:2007/09/20(木) 12:11:03
一意制約違反じゃないのか?

プライマリキーのカラムに同じ値つっこんでるとか。
テストでデータ突っ込むのに全部同じレコード入れようとしてると、エスパー
39デフォルトの名無しさん:2007/09/20(木) 13:00:40

JTextPaneを使っているんですけど、フォントの設定がもうほんっとにめんどくさいです。

JTextAreaなら
textArea.setForeground(Color.BLACK);
textArea.setFont(new Font("Serif", Font.BOLD, 30));

で済むところがJTextPaneを使うと
attribute = new SimpleAttributeSet();
StyleConstants.setBold(attribute, true);
StyleConstants.setForeground(attribute, Color.BLACK);
StyleConstants.setFontFamily(attribute, "Serif");
StyleConstants.setFontSize(attribute, 30);

・・・・・・
Fontクラスで一括指定できたりしないんですかね?これ
40デフォルトの名無しさん:2007/09/20(木) 13:13:11
質問です。
JAVAでゲーム作りますが何か?の基礎ページを見ながら
初めてJAVAを学ぼうとしているのですが、
サンプルのjarファイルを落として解凍してから、圧縮までは出来るようになりました。

それで中のwavファイルを取り出し、
自分で用意したwavファイルをフォルダの中にいれて、
取り出したwavファイルと同じ名前にして圧縮すると、
jarファイルが正常に動作しません。
解決方法を教えてください。
41デフォルトの名無しさん:2007/09/20(木) 13:29:55
>>40
「質問です。
JAVAでゲーム作りますが何か?」まで読んで喧嘩売ってんのかと思った。
それはともかく、考えられるのは、自分で用意したwavファイルっていうののフォーマットが違うとかじゃない?
たしかwavにも何種類かあったような。あとありそうなのは、極端に大きなwavファイルだとか。
たしかあのサイトはSEぐらいにしかwavつかってなかった気がするから、大きなwavファイルは想定してないかも試練。
42デフォルトの名無しさん:2007/09/20(木) 13:47:14
>>39
一括で設定できるような便利メソッドを一回書けば、後はそれを使いまわせばいいだけだと思うが。
43デフォルトの名無しさん:2007/09/20(木) 13:48:56
>>41
ヒントをありがとうございます。
真空波動研でjarファイルに元々あったwavを調べたら、8bitだったので、
入れようとしていたwavファイルも8bitで入れたら無事動いて音も変えることが出来ました。
44デフォルトの名無しさん:2007/09/20(木) 13:55:03
>>40
試しに同じことをやってみたが、正常に動作する。
その程度の説明では、何かやり方が間違ってるんだろうとしか言い様がない。

正常に動作しないっていうところを、もっと詳しく。
コマンドラインから起動してみたら何かエラーメッセージが出るか?
4544:2007/09/20(木) 13:57:08
解決おめ
46デフォルトの名無しさん:2007/09/21(金) 05:12:06
String配列で、後から要素数を増やしたい時は
新たに生成してコピーしなければなりませんか?
concat関数のような追記はできないんでしょうか。
もしそうなら、スマートな方法をご教授お願いします。
47デフォルトの名無しさん:2007/09/21(金) 05:23:29
後から配列の長さ増やしたい要求が分かってるならはじめから大きくとれば?
ArrayListじゃダメな理由は?


>「質問です。JAVAでゲーム作りますが何か?」まで読んで喧嘩売ってんのかと思った。
壮大に吹いたw
48デフォルトの名無しさん:2007/09/21(金) 05:36:22
どうしても配列使いたいなら
1.6以降で Arrays.copyOf(arrayOfString, newLength) とか使えば?
49デフォルトの名無しさん:2007/09/21(金) 08:18:55
いや、文脈から察するにC系のChar配列と、String自体を混同してるんだろう。
つまり、>>46はconcatのように一つのStringに文字を付け足したいんじゃないのか?
それなら、文字通りString.concatっていうメソッドがあるからそれを使えばいい。
もしくは、大量の追加がある場合、StringBuilderを使えばパフォーマンスも落ちない。
50デフォルトの名無しさん:2007/09/21(金) 08:28:37
流石にString#concat(String)に気付かないとは思わんよ、普通。
51デフォルトの名無しさん:2007/09/21(金) 08:58:49
>>50
>>46が単に配列ってだけ書いてれば俺もそう思うが、
String配列っていうのがあやしくないか?
52デフォルトの名無しさん:2007/09/21(金) 09:13:09
でも「文字増やしたい」じゃなくて「要素数増やしたい」って書いてあるしなぁ……
53デフォルトの名無しさん:2007/09/21(金) 10:57:38
NIOを使って、大きめのファイル(10MB程度)のファイルを
byte型配列に読み込む処理を書いてます。
読み込みに使っているのは、郵政省のダウンロードサービスにある、
郵便番号CSVデータ。
ttp://www.post.japanpost.jp/zipcode/dl/oogaki/lzh/ken_all.lzh

読み込み処理の流れは、

(1) RandomAccessFile -> FileChannel -> ByteBuffer
   -> ByteArrayOutputStream -> WritableByteChannel -> byte[]

(2) RandomAccessFile -> FileChannel -> MappedByteBuffer -> byte[]

の2通りを試しており、ループで100回まわして処理速度を測っているんですが、

 (1):高速だがメモリの消費量多い。
 (2):低速だがメモリの消費量は少ない。

という結果になりました。こんなもんですかね?
Pen4-2.8GHz、RAM1GB、JDK6、VMのヒープサイズは256Mですが、

 (1)の処理速度:約140ms
 (1)での消費メモリ:約32MB

 (2)の処理速度:約3000ms
 (2)での消費メモリ:約11MB

という感じです。
54デフォルトの名無しさん:2007/09/21(金) 11:59:22
JavaってC#のLINQ見たいな機能つけないんですかね?
jdbc使ってたらひどく疲れた。
55デフォルトの名無しさん:2007/09/21(金) 12:04:02
なんで ByteArrayOutputStream とか WritableByteChannel が現れるのかよくわからん。
ファイル全体を丸ごと読むだけなら、こうじゃない?

RandomAccessFile file = new RandomAccessFile("hogehoge", "r");
byte[] data = new byte[(int) file.length()];
ByteBuffer buffer = ByteBuffer.wrap(data);
while (buffer.hasRemaining()) {
file.getChannel().read(buffer);
}
file.close();
56デフォルトの名無しさん:2007/09/21(金) 12:14:03
>>55
それは別の処理でやってるんだけど、
巨大なファイルの一部分だけを、低負荷で読み込みたいので。
57デフォルトの名無しさん:2007/09/21(金) 12:25:26
条件後出しキター

コード示せ。でなきゃ何の検証も提案もできん。
58デフォルトの名無しさん:2007/09/21(金) 12:33:33
郵政のデータってcsvテキストだろ?
DBじゃないのに何で索引出来るんだよw
59デフォルトの名無しさん:2007/09/21(金) 13:04:20
巨大なデータを高速に検索したいってことなら、NIOとか全然関係ない話
60デフォルトの名無しさん:2007/09/21(金) 13:12:24
NIOのCharBuffer使って、

CharBuffer cb;
Matcher lm = linePattern.matcher(cb)
Matcher pm = null;
CharSequence cs = lm.group();
pm = pattern.matcher(cs);

とかやって、正規表現検索とかできるんだけど。
61デフォルトの名無しさん:2007/09/21(金) 13:24:37
そりゃできるかもしれんが、それって高速?っていうか何の話?
6253:2007/09/21(金) 13:25:51
使ってるコードを抜き出しました。

public byte[] readTest1(FileChannel inputChannel) throws IOException{
 int inBuffSize = 1024 * 16;
 ByteBuffer inBuff = ByteBuffer.allocate(inBuffSize);
 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
 WritableByteChannel outChannel = Channels.newChannel(baos);
 while (true) {
  inBuff.clear();
  if(inputChannel.read(inBuff) < 0){
   break;
  }
  inBuff.flip();
  outChannel.write(inBuff);
 }
 outChannel.close();
 return baos.toByteArray();
}

public static byte[] readTest2(FileChannel inputChannel) throws IOException {
 byte[] data = new byte[(int)inputChannel.size()];
 MappedByteBuffer buf = inputChannel.map(FileChannel.MapMode.READ_ONLY, 0, inputChannel.size());
 buf.get(data);
 buf = null;
 return data;
}
63デフォルトの名無しさん:2007/09/21(金) 13:44:06
実際にそれ試してみたが、readTest2の方が速かったよ?
1の方が高速とは信じられん
6462:2007/09/21(金) 13:56:27
そうなんですか?
これらのコードを、

String file = "C:\\temp\\KEN_ALL.CSV";
FileChannel ch = new RandomAccessFile(file, "r").getChannel();
for (int i = 0; i < 100; i++) {
 // readTest1(ch);
 readTest2(ch);
}

こんな感じで使ってみたのですが、
やっぱりreadTest2のほうが全然遅いのです。。。
実行は、Eclipse上からなのですが。
65デフォルトの名無しさん:2007/09/21(金) 14:03:34
おぉい。
そのテストコードは変だよ。
ファイルを開きなおすか、せめてファイルポインタを先頭に戻さなきゃ、2回目以降は何も読み込んでいないよ。
6664:2007/09/21(金) 14:05:43
すみません、私も今気がつきました。
ループ中で、各回での処理時間を計ったら、
2回目以降がゼロ。。。。orz

Eclipse落として、吊ってきます。。。
6764:2007/09/21(金) 14:11:50
for (int i = 0; i < 100; i++) {
 ch.position(0);
 // readTest1(ch);
 readTest2(ch);
}

にしたら、readTest2のほうが早かったです。
お騒がせしてすみませんでした。
68デフォルトの名無しさん:2007/09/21(金) 18:22:26
javaを最近始めました
エディタで質問があるのですが

現在TeraPadを使用してコードを書いているのですが
下記の条件を満たしてる開発環境エディタ?はないものでしょうか?

1)
printlnと打ちたかったのにprintlmと打ってしまったときなど
printlnは正しいので赤文字で表示
Printlmは謝っているので黒文字のまま表示される
打ち間違えが一目瞭然になる

2)
入れ子が下のような感じになっているとき
{
 {
  {
  }
 }
}
一番上の{に文字入力のカーソルを持っていくと それに対応した一番したの}が強調される

わかり憎い説明だと思いますがあったら教えていただけないでしょうか
69デフォルトの名無しさん:2007/09/21(金) 18:26:55
IDE使う選択肢は無いの?
エディタじゃないとだめ?
70デフォルトの名無しさん:2007/09/21(金) 18:30:46
エディタでもなくても全く問題ないです
初めてなのでサンプルコードと見比べて記載ミスを探すのがを探すのが一苦労で、、、
71デフォルトの名無しさん:2007/09/21(金) 18:32:31
eclipseってのあるから使うといいよ
入力ミスによるコンパイルエラーの類は一切無くなるはず
72デフォルトの名無しさん:2007/09/21(金) 18:34:33
>>71
ありがとう
ちょっとグーグル先生のところいってきます
73デフォルトの名無しさん:2007/09/21(金) 19:05:36
16進数文字列(\u3001等)を文字に変換する方法がわかりません。
ご教授ください…。。。
74デフォルトの名無しさん:2007/09/21(金) 19:47:56
俺TeraPad使ってるのに。"}"はshift keyを押しながらカーソル移動で青くしてからctrl+"{"で対応する"{"へ飛べるけどな
75デフォルトの名無しさん:2007/09/21(金) 22:01:30
>>73
char c = String.format("\u3001").charAt(0);
76デフォルトの名無しさん:2007/09/21(金) 23:32:44
スルーされている>>29だが、俺も試してみたんだがやはり解決策が見つからないわ
誰か答えてくれぬか?
77デフォルトの名無しさん:2007/09/22(土) 01:06:12
>>29
>>76
デフォルトのrt.jarより先に検索させるために、
java -Xbootclasspath/p:lib/mail1.4.jar;lib/activation1.1.jar -jar application.jar
でいけないかい?パスのところとかは適当に実態に合わせてくれ。
Xbootclasspath/p:オプションは変な配置の仕方をするとライセンス違反になるから気をつけて。
7877:2007/09/22(土) 01:26:16
;でパスを区切っているけどsolarisやlinuxなら:で区切ってくれ。
まあ、activation1.1.jarの方だけrt.jarより優先させればいいのなら、
mail1.4.jarの方はクラスパスにさえあればいいかもしれないが。
79デフォルトの名無しさん:2007/09/22(土) 10:52:20
Java暦1ヶ月です。

newAudioClipを使って数個のwavを同時に再生しているのですが、
それぞれの音量を個別に変える(muteでもOK)ことは可能でしょうか?
midiだと音量の調節ができそうなのですが、waveだとマニュアルを読んでも
それらしい記載が見つかりませんでした。
80デフォルトの名無しさん:2007/09/22(土) 11:01:04
>>77
Xbootclasspathってjar起動からでも利用できるのか?
と調べてみたら、記述すれば有効になるらしい
Boot-Class-Path: hogehoge.jar
81デフォルトの名無しさん:2007/09/22(土) 11:45:32
既に割り当てられているショートカットキーの一覧サイトってありませんか。

例、Alt+Spaceでウィンドウメニュー表示 など
82デフォルトの名無しさん:2007/09/22(土) 11:52:20
>>81
何の話をしてるんだ?
83デフォルトの名無しさん:2007/09/22(土) 12:55:21
>>80
あー、jarオプション付きの起動では利かないのか。
試しでやった時はマニフェストでMain-Class一行書くのも面倒だったから
java -Xbootclasspath/p:myrt.jar -cp hoge.jar MainClassみたいに
classpathで指定して動かしたから気がつかなかった。
8483:2007/09/22(土) 13:02:30
違った。jar起動ってダブルクリックでjavawを使って起動するってことか。
85デフォルトの名無しさん:2007/09/22(土) 13:11:22
>>79
Applet#newAudioClipが返すAudioClipは単純な再生しかできないので
Java Sound API(javax.sound.**)を利用
86デフォルトの名無しさん:2007/09/22(土) 14:02:07
質問です。
jarに固める時、マニフェストファイルでシステムプロパティを記述する事はできますか?
87デフォルトの名無しさん:2007/09/22(土) 16:13:33
>>81
こういう事?
http://www.microsoft.com/japan/enable/products/keyboard/windowsxp.mspx

何をしたいのか分からないが、OS依存だと思われ。
88デフォルトの名無しさん:2007/09/22(土) 17:55:19
>>81
SwingならLnFに実装されてるんじゃない?
各LnFのソース読んでみたら?
いくつか共通項くらいあると思う。
実装依存であることは確かだけど、どのレベルで実装されてるかはツールキット次第。
89デフォルトの名無しさん:2007/09/22(土) 18:55:55
入力される四則演算子をswitch文で判定して、
呼び出すメソッドを変えるプログラムを作っています。


今作ってるソースコード
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29709
9089:2007/09/22(土) 18:59:51
すみません。ミスって投稿してしまいました。

で、switch文のcaseを全部無視して
defaultまで処理が飛んでしまいます。
switch文を正しく機能させるには何が足りないのでしょうか?
ご教授をお願いします。
91デフォルトの名無しさん:2007/09/22(土) 19:03:52
switch('o')
何これ
92デフォルトの名無しさん:2007/09/22(土) 19:09:43
Stringで分岐させたいならばif使え
swich文なんて使う必要はない
93デフォルトの名無しさん:2007/09/22(土) 19:11:37
ifを使う必要はあるの?
94デフォルトの名無しさん:2007/09/22(土) 19:11:58
charで分岐させようとしたんだろ
95デフォルトの名無しさん:2007/09/22(土) 19:24:58
>>93
ある
9689:2007/09/22(土) 19:32:26
>>92
ありがとうございます。if文で書き直したら出来ました。

>>94
その通りです
97デフォルトの名無しさん:2007/09/22(土) 20:42:52
質問です。

File.createNewTempFile()で作ったファイルをstaticなMapに入れてkeyと結びつけておく、
みたいなことを考えています。
テンポラリファイルの方は、よく「VMの正常終了時に削除」という説明がありますが、
static変数の厳密な生存期間はいつまでなのでしょうか。
98デフォルトの名無しさん:2007/09/22(土) 20:48:11
>>97
どこからも参照されなくなってから、VMの終了までのどこかまで

変数の生存期間とファイルの生存期間の相関関係がサッパリ解らん
99デフォルトの名無しさん:2007/09/22(土) 20:50:00
そのクラスをロードしたクラスローダが到達不能になってGCに回収されるまで
100デフォルトの名無しさん:2007/09/22(土) 21:05:55
>>95
どんな?
101デフォルトの名無しさん:2007/09/22(土) 22:09:06
>>89
せっかくJavaで作ってるんだから
多態とか調べてみたらどうかな?
102デフォルトの名無しさん:2007/09/23(日) 05:35:16
hibernateの勉強っていうかちょっと使ってみてて
わからないことがあったので教えていただけないでしょうか?

ttp://www.techscore.com/tech/Others/Hibernate/03.html

ここの
Book.class
ってなんですか?
java.lang.Objectのプロパティでしょうか?
APIみたけどメソッドしか書いてないですよね?
HibernateのAPI見たら
an "empty" instance of the persistent class
とあったんですけど、なんとなくイメージはわくのですが
Book.classというのが具体的に何が入ってるのか、解説していただけないでしょうか?
もしくは詳しいサイトを教えていただけると助かります。

お願いします。
103デフォルトの名無しさん:2007/09/23(日) 06:14:26
>>102
いらっとくるなぁ。皮肉たっぷりに罵ってやりたいところだ
http://www.techscore.com/tech/Others/Hibernate/02-3.html
104デフォルトの名無しさん:2007/09/23(日) 09:02:08
>>98-99
ということは、VMの終了時まで生存が保証されるわけではないということですね。
ありがとうございました。
105デフォルトの名無しさん:2007/09/23(日) 09:30:08
>>104
なにがどう解決したのか解らんけど、>>98に書いてあるようにファイルの生存期間なのか?
変数の生存期間なのか、どっちなんだよ
106デフォルトの名無しさん:2007/09/23(日) 10:59:28
二次元以上の配列を、ディープコピーしてくれるメソッドってありますか?
一次元ならSystem#arraycopyを使えばいいことはわかるのですが、
それ以上だとシャロウコピーになってしまい、使えません。
標準のメソッドがありましたら、是非教えてください。よろしくお願いします。
107デフォルトの名無しさん:2007/09/23(日) 11:05:29
ない
108デフォルトの名無しさん:2007/09/23(日) 11:26:48
2次元以上の配列のデープコピーとか激しくにおうな。
5次元配列とか平気で使ってそうな勢いだ。

使えないのはSystem#arrayCopyじゃなくてお前だろwwww
109デフォルトの名無しさん:2007/09/23(日) 13:55:26
>>106
System#arraycopyはシャロウコピーしかやってくれないと思うが。
ディープコピーとシャロウコピーの違いが分からずに使っているのか?
110102:2007/09/23(日) 14:05:46
>>103
レスありがとうございます。

質問がわかりずらくてすいません。
Classインスタンスというのでしょうか、java.lang.Classというクラスをしらなかったもので
Book.classという式の意味がわからなかったんです。

ttp://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
ttp://www1.u-netsurf.ne.jp/~ysk-net/JRoom/Programming/theme3.html
この辺でわかりました。

別件でちょっと気になっていたのですが
動的に取得するインスタンスを変える方法も判りました。
111デフォルトの名無しさん:2007/09/23(日) 14:06:31
× わかりずらくて
○ わかりづらくて
112デフォルトの名無しさん:2007/09/23(日) 14:15:45
>>109
説明不足ですみません。
配列をプリミティブ型の配列とする場合、一次元配列でSystem#arraycopyを使えば問題なくコピーできます。
ですが、二次元配列以上でSystem#arraycopyを使うと、配列自体がコピーされるので、コピー元の要素を変更した場合、
コピー先の要素にも変更が及びます。
つまり、二次元以上でも配列の構造すべてをコピーしてくれるようなメソッドがほしいのです。
113デフォルトの名無しさん:2007/09/23(日) 14:26:16
こんな感じ?

int[][][] x = 〜〜〜;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new ObjectOutputStream(baos).writeObject(x);
int[][][] y = (int[][][]) new ObjectInputStream(new ByteArrayInputStream(baos.toArray())).readObject();
114デフォルトの名無しさん:2007/09/23(日) 14:51:23
>>113
そうです。こんな方法があったんですね・・・。
レスありがとうございました。
115デフォルトの名無しさん:2007/09/23(日) 15:07:06
JTableのとある列を選択するとボタンがtrueになるっていうのはどうコード書けばできますかね?
116デフォルトの名無しさん:2007/09/23(日) 15:08:10
ボタンがtrueになるってどういう状態だ
117デフォルトの名無しさん:2007/09/23(日) 15:16:46
>>115
質問が抽象的すぎる。もっと具体的にわかりやすく書け。
118デフォルトの名無しさん:2007/09/23(日) 16:19:01
TableColumnModelListenerを実装して、columnSelectionChangedで列選択を補足して、ボタンがtrueになるとかいう処理をやらせるのは?
119デフォルトの名無しさん:2007/09/23(日) 18:03:14
JTexPaneaに表示する文章を中央揃えにしたいので、
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
というコードを書き加えてみたのですが、何の変化も起こりません。エラーも出ません。

どうすればいいんでしょうか。

import javax.swing.*;
import javax.swing.text.*;

public class TextPaneTest extends JFrame{
public static void main(String[] args){
TextPaneTest test = new TextPaneTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
TextPaneTest(){
setTitle("TextPaneTest");
setBounds(10, 10, 300, 200);
JTextPane textPane = new JTextPane();
getContentPane().add(textPane);
DefaultStyledDocument doc = new DefaultStyledDocument();
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
String str = "テスト";
try{
doc.insertString(0, str, attr);
} catch (BadLocationException ble) {
System.err.println("初期文書の読み込みに失敗しました。");
}
textPane.setDocument(doc);
}
}
120デフォルトの名無しさん:2007/09/23(日) 18:21:59
>>119
docにAttributeSetの設定してる?
121デフォルトの名無しさん:2007/09/23(日) 18:34:13
なぜswingスレで質問しない?
122119:2007/09/23(日) 18:38:43
>>120
今、二つを関連させる記述はこれだけです。
>doc.insertString(0, str, attr);
123デフォルトの名無しさん:2007/09/23(日) 18:43:31
>>122
その挿入した文字のみ中央揃えを適用させたいんだ?ちがうよね?
124デフォルトの名無しさん:2007/09/23(日) 19:03:08
>>123
うまくいきました。
htmlのdivとspanと同じような関係ですね。
スレ違いのようでしたが、どうもありがとうございました。
125デフォルトの名無しさん:2007/09/23(日) 19:23:21
質問が…
やさしいJavaという本を読んだ後、2chでお奨めのCoreJavaという本を買ってきたんだけど、
double x = points[i].getX() - SIZE / 2; だのが書かれてて、.getX()って何?
Javaというかプログラミング言語ってこんなに複雑になるもんなの?と焦りぎみ。
みんな基礎レベル(やさしいJava修了レベル)から、こんな複雑なコード書けるようになるまで、
どんな風に勉強したの?配列にしても、ArrayList<Employee> staff = new ArrayList<Employee>();
とか何がなにやら…

世間では簡単と騒がれているけど、やっぱりオブジェクト指向(これの意味すらよく理解してない)の言語よりも
オブジェクト指向でない言語をしっかり勉強してからJavaをやった方がいいのかな?
C言語かスキームからやり直してみようと思ってるんだけど…
126デフォルトの名無しさん:2007/09/23(日) 19:29:49
>>125
それは日本語にすると

ポイントの配列のiのところからXをとってきて、サイズの半分で引いた物を変数に突っ込む。

Point p = points[i];
double x = p.getx;
x = x - SIZE / 2;

こんな風に変数に書き分けながら書くこともできるけど、この程度なら1行で書いた方が楽なんでしょう


なにか作りたい物があるなら、実際に作ってみたらどうかね
127デフォルトの名無しさん:2007/09/23(日) 19:34:01
>>125
コアJavaはそりゃ読めないだろ入門レベルも終えてないのに。

やさしいJavaが基礎レベルってのはありえない。
getX() が習得できてないのは入門レベルですらあり得ない話。
ArrayListも配列じゃないし、newの意味しらんだろ、おまえさん。
JavaとかCとかの前にまともな入門書をちゃんと読めよ
128デフォルトの名無しさん:2007/09/23(日) 19:40:10
>>125
いや、Javaから始めることは可能だろうけど、ちょっと呼んでる本がレベル高杉じゃないかな。
もっと簡単な本から初めて見たら?
129デフォルトの名無しさん:2007/09/23(日) 19:44:43
オブジェクト指向以前のところで引っかかってるのならもっと基礎を固めたほうがいいな
まあ昔読めなかった本が後で役に立つことってよくあるから
130デフォルトの名無しさん:2007/09/23(日) 19:45:08
>>128
読んだ本が低杉、それで基礎レベル習得とか言わないでくれと思う
131125:2007/09/23(日) 20:05:15
レスくれた人達、サンクス。
やさしいJava→CoreJavaって、中1レベルの英語をマスターしたから、赤本やってみるかというくらい無謀なの?
じゃあ、本当の基礎レベルの本って何がいいのかな?
132デフォルトの名無しさん:2007/09/23(日) 20:11:24
>>131
赤本まではいかないかもしれないが、中1から高1くらいの差はありそうだな
中1だと、My name is Java. と書く、としか習わないだろ。
やさしいJavaには、どれが主語で述語はどれでこれが名詞だからっていうような基本文法がほとんど書いてない。
133デフォルトの名無しさん:2007/09/23(日) 20:40:25
確か前に見た時は表示するキャラクターごとにスレッド作るってな事をしてたな。今の版では知らんが。
134125:2007/09/23(日) 20:49:27
>>127
newってオブジェクトを参照する為に使うんじゃないの?
Javaはポインタのない言語と前にどこかのWebサイトか立ち読みした本に書いてあったけれど、
これ、ポインタってやつじゃ…

>>132
なるほど。たしかに中1レベルではMy name is うんちゃらとかしか習いませんね。
SVOにしても高1になってきちんと習ったので、一通りの触りルールは分かったけれど、
言語を使えるというレベルにはまだ全然達していないという事なんだね。
現段階は白チャートすら始まってない状態なので、Javaの白チャート的な書籍を紹介してください。
135デフォルトの名無しさん:2007/09/23(日) 20:50:07
>>1のwiki
------
入門者向け推薦図書 †

2chで推薦されている入門書を挙げておきます。

* コアJava2 Vol.1 基礎編
* コアJava2 Vol.2 応用編
* Head First Java―頭とからだで覚えるJavaの基本
* 独習Java

「やさしいJava」(高橋 麻奈 著)はプログラミング未経験者が読むには適していますが、 Java入門書とは呼べません。
Javaプログラミングとはこういうものなんだ、というのをつかんだら上記入門書をやるのをお勧めします。
---------
この記述のせいか
136デフォルトの名無しさん:2007/09/23(日) 20:53:03
>>135
このリストはどうみてもプログラムを知ってる人間が、
新しくJavaを習得するためのもんだな。
プログラム初心者がこれを読むのはかなりきついだろう。
137デフォルトの名無しさん:2007/09/23(日) 20:53:13
>>134
newはオブジェクトを作るときに使うっすよ。

Javaはポインタのない言語ってよりは、ポインタを意識する必要のない言語っす。
138デフォルトの名無しさん:2007/09/23(日) 21:01:00
Cのポインタは書き方がややこしかったり妙な事ができてしまったりすっからなー
Javaから入ったからCのポインタの使い方が分かった、って人もいる。俺とか
139デフォルトの名無しさん:2007/09/23(日) 21:03:46
Javaのポインタの位置はC++の参照とほぼ完全に同じ。
ただ、最近は参照っていってもわかってもらえなかったりする。(´・ω・`)
140デフォルトの名無しさん:2007/09/23(日) 21:04:22
>>134
残念ながらJavaでしっかりと基礎からできる入門書はほとんどない。
逆に言えばCの入門書を軽くやって独習Javaあたりに入るのがベストだったりする
これは先にCをやれとかって話じゃなくて、入門書として充実しているのがないって話。
もしくは、Rubyだけど、これが評判いい。
http://www1.tf.chiba-u.jp/~shin/tutorial/
141デフォルトの名無しさん:2007/09/23(日) 21:22:08
>>134
確かにRubyやPython試してみるのもいいかも
わからないことを対話型シェルで試す癖が付く
いきなりSchemeはお勧めしない。Javaよりずっと難しいから

本だと『Javaを独習する前に読む本』お勧め
読書ガイド付きで次に進むべき道も見えるのがまたイイ

あとプログラミングは簡単っていうのは基本的に嘘なので気にしない
特に独学でやってる人にとっては
ttp://www.yamdas.org/column/technique/21-daysj.html
142デフォルトの名無しさん:2007/09/23(日) 21:25:03
その文章見る限り何を勉強するにしても時間はかかるってことになるな
それなら勉強したもん勝ちだな
143デフォルトの名無しさん:2007/09/23(日) 21:36:57
ところが10年も勉強している人は稀
高校2年あたりで触り始めて大学4年間みっちり勉強したならば、社会人になったあたりで5年のアドバンテージを得られる。
しかし、これを大学時代さぼっていたり未経験からリカバリするのは並大抵の努力では無理。
おまけに仕事として与えられるのはプログラミングとは限らない。
144デフォルトの名無しさん:2007/09/23(日) 22:08:55
というかやさしいjavaがカス過ぎるだけでCoreJavaは本当は"全て書かれた"入門レベルの本だろ。
CoreJavaが難しいんじゃなくて他のjavaの本がゴミだらけで選択肢が狭まってるだけだと思うんだが・・・。

CoreJavaより上に来るのはオライリーのSwing本やEfectiveJavaやjava言語仕様の書籍版あたりだろう。

まあ、やさしいシリーズはCからXMLまであるがCはまだマシとして他はカスだから。
やさしいjava読む暇があればJavaDoc読んだ方が勉強になる。
145デフォルトの名無しさん:2007/09/23(日) 23:21:48
やさしいオブジェクト指向とか糞だわな
146デフォルトの名無しさん:2007/09/23(日) 23:37:33
コード書けない・仕様理解してないのに技術本出してる奴は手広くやって総発行部数をそこ上げしないと印税で食っていけないから。
技術本って漫画より著者に来る印税多かったはずだけど技術本は人選ぶし。

Eclipseとjava周りはバージョン上がる度に新版出しまくれば良いだけだから劣化量産されるわけだな。
MS製品と違って更新早いとこういう害がある。
147デフォルトの名無しさん:2007/09/24(月) 00:21:22
コマンドプロンプトの内容をコピペするにはどうすればいいんですか?
148デフォルトの名無しさん:2007/09/24(月) 00:23:44
スレ違い >>147


まずプロパティ→簡易編集モードにチェックを入れる
コピーしたい箇所をマウスで選択してEnterでコピー
ペーストしたい場合は右クリック
149デフォルトの名無しさん:2007/09/24(月) 00:28:20
>>143
10年もプログラミングの勉強をしている人は稀ってことだよね?
10年勉強するぐらい当たり前だろ、と突っ込んでしまうところでした
高卒は勉強する習慣なさそうだけど・・・
150143:2007/09/24(月) 00:47:23
>>149
当たり前の筈なんだがな。
俺もまともにプログラミングを勉強し始めたのは大学3年あたり。
今年でやっと10年になるが、やっと初心者は卒業したかな、と思える程度だわ。
最近はいくらでも勉強する時間が欲しい
151デフォルトの名無しさん:2007/09/24(月) 00:50:11
>>105
ファイルの生存期間が満了する前に、その所在を覚えているstatic変数が死ぬ場合が
ありえるかどうか、ということです。
152デフォルトの名無しさん:2007/09/24(月) 00:52:55
>>150
勉強したければ一旦ニートになるといいかも
俺今そんな状態
でも金は貯めといた方がいい
俺は親元に住んでるから大して支出は無いけど
ちなみにプログラミング歴は8年目
153デフォルトの名無しさん:2007/09/24(月) 00:53:24
aaa.javaとbbb.javaがあり、
bbb.javaからaaa.java内にあるtableのセルの内容を変えたいんですが、

aaa aj = new aaa();
aj.jTable.setValueAt("ああああ",0,6);

で変えられないんですがどうしたら良いでしょうか。
もう自分でも何言ってるかわかんね。
154デフォルトの名無しさん:2007/09/24(月) 01:03:13
>>151
ファイルの生存期間と変数の参照はまったく別の次元の話
155デフォルトの名無しさん:2007/09/24(月) 01:09:34
それは、表示中のテーブルじゃなくて、
いま新しく new で作ったテーブルを操作してるんじゃないか?
156デフォルトの名無しさん:2007/09/24(月) 01:10:27
>>151
「ファイルの生存期間」ってなんだよ。
エクスプローラでファイルを削除するまでって意味か?
157デフォルトの名無しさん:2007/09/24(月) 01:16:57
>>156
中間ファイルの生存期間ってことだろ?
158156:2007/09/24(月) 01:19:16
あぁ、レス遡って読んで解った・・・すまそ。
159150:2007/09/24(月) 01:24:41
>>152
正直なところニートというか、大学か院にいきたいわ。
理学部は出たんだが大学時代はさぼりまくりだったしw
とはいえ、家族いるから無理な話。
160デフォルトの名無しさん:2007/09/24(月) 01:38:40
thisの矩形とrの矩形が重なる矩形領域を返すメソッドです。

public Rect intersection(Rect r){
Rect result = new Rect((this.x1 > r.x1) ? this.x1 : r.x1,
(this.y1 > r.y1) ? this.y1 : r.y1,
(this.x2 < r.x2) ? this.x2 : r.x2,
(this.y2 < r.y2) ? this.y2 : r.y2);
if(result.x1 > result.x2) { result.x1 = result.x2 = 0; }
if(result.y1 > result.y2) { result.y1 = result.y2 = 0; }
return result;

例えばthisを(3,3,1,6)、r1を(1,1,3,4)としたときこのメソッドは(0,3,0,4)
という値を返します。
なぜこのif文があるのか理解できません。教えてください。
161デフォルトの名無しさん:2007/09/24(月) 01:46:40
if文がない場合を考えてみれ
実際にif文を取り払って実行してみればわかるんじゃないか?
162デフォルトの名無しさん:2007/09/24(月) 01:49:19
>>155
aaa.javaのjTableを呼び出せてないってことですか?
163デフォルトの名無しさん:2007/09/24(月) 01:51:33
>>160
x1 > x2 とか y1 > y2 って状態が不正なんじゃねーの?
文書化されてなければ、書いた人間の意図なんぞ分からん。

> 例えばthisを(3,3,1,6)、r1を(1,1,3,4)としたときこのメソッドは(0,3,0,4)
> という値を返します。
返さんと思うぞ。
164デフォルトの名無しさん:2007/09/24(月) 02:03:58
>>162
インスタンスってもんを理解する必要がある。

例えば
aaa x = new aaa();
aaa y = new aaa();
aaa z = new aaa();
とやると、同じ aaa クラスのインスタンスが 3 個できる。
aaa がテーブルを 1 個持ってたとして、aaa が 3 個あるわけだから、テーブルもそれぞれ別々に 3 個あることになる。
つまり同じ aaa のテーブルでも、「x のテーブル」 と 「y のテーブル」 と 「z のテーブル」 は別々だ。
x のテーブルに何か書き込んでも、y のテーブルにも z のテーブルにも影響しない。 別々だからな。

153 は、
aaa aj = new aaa();
aj.jTable.setValueAt("ああああ",0,6);
と書いた。 これは、それまで存在していたのとは別の、新しい aaa クラスのインスタンスを作っている。
新しい aaa インスタンスは、それまで存在していたのとは別の、新しいテーブルを持ってる。
新しく作った aaa のテーブルに "ああああ" を設定しても、それまで存在していた aaa のテーブルは変わらない。

だから新しく aaa を作るんじゃなくて、すでに存在している aaa を操作しなきゃいけない。
165160:2007/09/24(月) 02:29:02
回答ありがとうございます
>>161
if文消すと(3,3,1,4)と出力されました。書いて計算しても同じになりました。
図も描いてみましたが重なった部分と一致します。

>>163
すみません、r1は(1,1,4,4)でした。
文章化はされていません。
>thisの矩形とrの矩形が重なる矩形領域を返すメソッドです。
↑これがコメントとして添えられているだけです。

いまだになぜif文があるのか、あったとしても0にする必要すらわかりませんorz
あきらめて先に進んだほうがいいのでしょうか?
166デフォルトの名無しさん:2007/09/24(月) 02:32:21
っ this と r が重なってない場合
167160:2007/09/24(月) 03:00:47
>>166
理解できました!
精進しますorz

回答ありがとうございましたm(_ _)m
168125:2007/09/24(月) 04:12:47
レスありがとうございます。
まとめてみた結果、

・Ruby、Pythonをやってみる
・Schemeはお勧めしない

という事でおkですか?
個人的に計算機プログラムの構造と解釈を読んだ感じでは、
JavaよりSchemeの方が分かりやすかったのですが。
169デフォルトの名無しさん:2007/09/24(月) 04:40:53
構造化の考え方に固執しているなと感じたときにSchemeをやるといいかも
170125:2007/09/24(月) 04:45:19
今はMITでも最初のプログラミングのクラスではPythonを教えているみたいですが、
なぜ半世紀にもわたって、難解と言われているSchemeを教えていたのでしょうか?
他の大学でも大きめの所はSchemeを一番最初のプログラミングの授業で教えているみたいですが、
多くの大学はJavaやC++を最初の言語として教えています。この差はいったい?
171デフォルトの名無しさん:2007/09/24(月) 08:44:26
>>164
わかりやすくありがとうございます。
基本がわかってなかったですね・・・
172デフォルトの名無しさん:2007/09/24(月) 08:47:25
Javaで作ったシステムの実行性能やメモリの使われ方を測定する方法が載っている
本屋やサイトはないでしょうか?
173デフォルトの名無しさん:2007/09/24(月) 10:04:42
>>170
Schemeは難解ではない。むしろ単純。
俺は最初にやるプログラミング言語としてはJavaより向いていると思っている。

ただ、Javaなどと考え方が大きく異なるので、
Java漬けにされた人間からはとても異質なものに見え、
それで難解だと思われてしまう。
174141:2007/09/24(月) 11:06:31
>>170
色々とよくご存知で
SICPには評価モデルもOOPライクなメッセージパッシングも出てくるし
少なくともやさしいJavaとSICPの最初の一章を読んだのなら
double x = points[i].getX() - SIZE / 2が意味不明ってことは考えにくい

結論としては釣られた俺涙目
175デフォルトの名無しさん:2007/09/24(月) 13:52:11
176デフォルトの名無しさん:2007/09/24(月) 14:58:43
抽象的な質問ですみません。
SSL認証のログインをするクライアントを作りたいのですが、どのようなことから入ればよいでしょうか?
参考にすべきサイト、書籍などありましたらそちらも挙げていただけると助かります。
177デフォルトの名無しさん:2007/09/24(月) 15:22:10
SSLにログインなんて概念ないぞ
なにか勘違いしてないか
178デフォルトの名無しさん:2007/09/24(月) 15:25:51
まあそういってやるなよ
179デフォルトの名無しさん:2007/09/24(月) 15:40:25
前スレで動画のRGB値の変化をとりたいって話していたものです。
JMFを使って動画を再生させることはできたのですが、いかんせん説明が英語ばっかりで肝心のRGB値に関してはさっぱりです。
動画の再生といってもttp://www.02.246.ne.jp/~torutk/jmf/howtouseJMF_programming.htmlのプレーヤが走っただけですが・・・
RGB値をとってくるにはどうすればいいでしょうか?お願いします。
180デフォルトの名無しさん:2007/09/24(月) 18:35:21
JMFで動画いじるには全てにおいて1フレームtoラスター画像への変換が基本。
ラスター画像が取得できれば後はどうにでもできる。

1フレームtoラスター画像への変換はフォーマットの仕様が分からないとどうしようもない。
これで分からんならJMF使う以前の問題。動画を勉強汁。
18126:2007/09/24(月) 19:06:15
>>179
あのさ、>>26 は読んだ上で言ってるのか?それとも無視してんのか?
ニートだからってなめんなよ(泣)。
182179:2007/09/24(月) 21:30:59
ネ申>>26さま >>180さま
まさか残りわずかな状態で書いたのにレスがついているとは思いませんでした。
26さま、本当にすいません。そしてありがとうございます。
さっそく動かしてみます!!ほんとにありがとうございます。
また必ず報告しにきます!

179さま、動画の勉強もしますm(_ _)m
とりあえず、ググって勉強します。
183デフォルトの名無しさん:2007/09/24(月) 22:35:37
JPAってHibernateみたいなマッピングツールなんですか?
184デフォルトの名無しさん:2007/09/24(月) 22:50:29
>>183
そう、エンティティBeanの後継
185デフォルトの名無しさん:2007/09/24(月) 23:34:44
>>174
人間的にはお前の方がずっと良い奴だよ。
気にスンナ
186デフォルトの名無しさん:2007/09/25(火) 09:48:37
try {
} catch (Exception e) {
e.printStackTrace();
}

ここのe.printStackTrace()で出力される内容と同じ文字列を
取得したいのですがどうしたらよいでしょうか?

e.toString();
ですとソースの行番号などが出てくれません。
187デフォルトの名無しさん:2007/09/25(火) 09:58:22
>>186
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String str = sw.toString();
188デフォルトの名無しさん:2007/09/25(火) 10:09:15
文字列を解析するようなことをするくらいだったらgetStackTrace()のほうがいいかも
189デフォルトの名無しさん:2007/09/25(火) 10:50:44
>>187
ありがとうございます。完璧です!!
190デフォルトの名無しさん:2007/09/25(火) 10:54:48
JavaでDBを使用しない場合に(GUIの話でもなく)、
テーブル構造のデータを扱うのに便利なAPIなどありませんでしょうか?

現在は、ArrayListやHashMapでやってますが、不便です。
191デフォルトの名無しさん:2007/09/25(火) 11:03:21
二次元配列。
192デフォルトの名無しさん:2007/09/25(火) 11:17:18
クラス配列?
193デフォルトの名無しさん:2007/09/25(火) 11:17:29
DBの構造が使いやすいのなら、DBを使えば?
何もOracleとかPostgresみたいな大層なバックエンドを用意しなくても、DerbyとかHSQLDBとかそういうのを。
194デフォルトの名無しさん:2007/09/25(火) 11:25:04
どうも回答ありがとうございます。

>>191さん
二次元配列・・・確かにそれがいいんでしょうね。
項目が4つ以上あると、MapやListだとやたらに増えて
管理が難しくなってきます。

浅海さんの記事に該当するっぽいのがあって二元配列を使ってます。
http://www.asahi-net.or.jp/~DP8T-ASM/java/articles/index_ja.html


>>193さん
DerbyとかHSQLDBはローカルで使うのにもいいんでしょうか。
ちょっと(多分帰宅後に)調べてみます。
195デフォルトの名無しさん:2007/09/25(火) 11:41:22
>>190
どう不便なのかを書いてくれないと解らん。
データクラスの1次元配列でいんじゃねーのか。
196デフォルトの名無しさん:2007/09/25(火) 12:12:51
>>190>>193>>194

embeddedならH2マジおすすめ
197デフォルトの名無しさん:2007/09/25(火) 13:54:57
>>192,195
そうかもしれません。
実際、そういう実装の部分もあり、
そのままにするつもりですし、新たに作るかも。


>>195
例えば、
多->1の対応はHashMapで良いのですが、逆の
1->多だと、HashMapでキーからリストへのマップで実現しています。
(根本的に間違ってる気がする・・・)
HashMapのキーはArrayListで持ってます。

表の縦・横をArrayListで保持して、
値は二次元配列で実現している部分もあります。
(これはしょうがないかも)

こういうのが、それぞれ複数あります。
ツギハギしてる内にこうなりました・・・
これを今後のためにも整理したいです。


HSQLDBのインメモリモードって言うのは、
メモリでDBを保持してAppletでも使えるみたいですね。
http://d.hatena.ne.jp/keyword/HSQLDB
次の記事が組込の参考になりそう
使ってみようApache Derby
http://journal.mycom.co.jp/articles/2006/10/11/derby/menu.html


色々整理してみます。情報ありがとうございました。
198デフォルトの名無しさん:2007/09/25(火) 14:58:11
final double L1=60;
final double L2=120;
final double RH=L1+30;
final double L3=L1/2.0;
doule [][] xRoof{{0,0,L3,L3},{L1,L3,L3,L1}};
doule [][] yRoof{{L1,L 1,RH,RH},{L1,RH,RH,L1}};
doule [][] zRoof{{0,L2,L2,0},{0,0,L2,L2}};
doule [][] xDoor{L3,L3+10,L3+10,L3};
doule [][] yDoor{10,10,40,40};
doule [][] zDoor{L2,L2,L2,L2};

こういう記述をすると";"がありませんと出るのですが
どこが間違ってるのかわかりません。
教えてください。
バージョンは1.4.1です
199デフォルトの名無しさん:2007/09/25(火) 15:01:51
×doule [][] xRoof{{0,0,L3,L3},{L1,L3,L3,L1}};
○double [][] xRoof = {{0,0,L3,L3},{L1,L3,L3,L1}};

あと、配列の次元数がおかしくないか、下の 3 つ。
200デフォルトの名無しさん:2007/09/25(火) 15:21:23
完全に見落としてましたorz
下3つはドアみたいな感じで付け足してみたんですが…
201デフォルトの名無しさん:2007/09/25(火) 16:49:52
>>198
コメントアウトするとかできないのかよw
202デフォルトの名無しさん:2007/09/25(火) 17:28:02
>>190です
結局、次の記事そのままで動きました。

使ってみようH2 Database Engine - 最強の呼び声もあるすごいヤツ
http://journal.mycom.co.jp/articles/2006/10/12/h2/005.html

ちなみに、H2のマニュアルP26に書いてありますが、
memory onlyで動かすには、ソースの

Connection conn = DriverManager.getConnection
("jdbc:h2:MyDB", props);

で、"jdbc:h2:mem:"に変えるだけです。
203デフォルトの名無しさん:2007/09/25(火) 17:52:57
>>190です
よく考えると、DB関連って、Serializableじゃないから、
Servlet間の移動とかは元データでして、
利用直前にDBに入れて取り出さないと駄目だな・・・
それでも多分問題ないと思うけど。
204デフォルトの名無しさん:2007/09/25(火) 17:57:39
Servletとか言ってんのならDBサーバ立てる方がいいんじゃね
205デフォルトの名無しさん:2007/09/25(火) 18:14:19
Javaから勉強始めました

クラス、コンストラクタ、インスタンスの役割みたいなのがいまいちわかっていないので
よく説明できているHPあったら教えていただけないでしょうか
ヨロシクお願いします
206デフォルトの名無しさん:2007/09/25(火) 19:27:49
クラスはぶっちゃけJAVAファイルみたいなもん

インスタンスはクラスをメモリ上に読み込んだ物

コンストラクタは、メモリ上に読み込むときにあれこれ初期化したりするのに使う


デストラクタって言葉が頭に浮かんできた。
あれはC言語だっけ?
207デフォルトの名無しさん:2007/09/25(火) 19:49:39
208デフォルトの名無しさん:2007/09/25(火) 20:11:36
>>206
いや、C++。GCのないOOP言語でインスタンス内のリソースを解放するために使う。
というか、コンストラクタもデストラクタもクラスの機能なので、構造体しかないC言語には当然ない。
209デフォルトの名無しさん:2007/09/25(火) 20:12:55
Cにはインスタンス化っていう概念が無いからな
210デフォルトの名無しさん:2007/09/25(火) 20:53:11
クラスは、たこ焼き器で
インスタンスは、たこ焼き。
211デフォルトの名無しさん:2007/09/25(火) 21:07:34
メタクラスとメタメタクラスは?
212デフォルトの名無しさん:2007/09/25(火) 21:51:36
アプレットでないAWTで、ウィンドウを閉じるボタン(右上のバツマーク)を押されたとき、どのイベントが飛んでくるのですか?
SwingではsetDefaultCloseOperationですが、AWTでの方法を教えてください。

Win Vista + Eclipse 3.2 + Java 1.6.0
213デフォルトの名無しさん:2007/09/25(火) 22:06:39
WindowListener#windowClosing
214デフォルトの名無しさん:2007/09/25(火) 22:11:03
出来ました。ありがとうございます。
215デフォルトの名無しさん:2007/09/26(水) 00:08:52
>>210
それはファクトリクラスとファクトリが生成するインスタンスの関係だろ。
クラスとインスタンスの説明するなら車の設計図と車とか言えよw
216デフォルトの名無しさん:2007/09/26(水) 00:13:42
それがね奥さん
クラスはたい焼きの型で
インスタンスはたい焼き
なんて書いてある入門書が沢山売れてたりするんですよ
217デフォルトの名無しさん:2007/09/26(水) 00:20:44
それのどこが悪いの?
218デフォルトの名無しさん:2007/09/26(水) 00:30:05
抽象概念を徹底するより、無数の具体例に当たるほうが理解が早いと信じている俺
219デフォルトの名無しさん:2007/09/26(水) 00:49:27
数個の具体例で把握できるやつもいるが、それこそ無数の具体例でも把握できない奴もいる。
220デフォルトの名無しさん:2007/09/26(水) 01:27:37
>>216
それだとOOPの説明してるのにオブジェクトという抽象的な概念が説明できなくてメタクラス辺りのメタな話に突入してしまう気が・・・。

「じゃあ鯛焼き機はどうやってつくるの?」みたいに聞かれない?

クラスをオブジェクトではなく構文や仕様の一部としてるクラスベースOOPならクラスは
オブジェクトを具象化する雛型でそれから具象化されたのがインスタンスだと言えばややこしいメタな話はしなくて済むと思うんだけど。

まあ、SmalltalkとかIoとかのOOPの話なら別として。
221デフォルトの名無しさん:2007/09/26(水) 01:39:08
あれだ。「1+1は」を考える頃はたとえばリンゴ一個にもう一個加えるって習うけど
「虚数」を考えるときにリンゴの具体例はいらないだろ。あっても訳わかんないだろ。

メタクラスをやる時に鯛焼き機の具体例はいらないよ。
222デフォルトの名無しさん:2007/09/26(水) 02:20:57
>>221

>メタクラスをやる時に鯛焼き機の具体例はいらないよ。

それはオブジェクトという概念を理解した上でその下にあるメタクラスやメタメタクラスの概念を勉強するからでは?
SmalltalkのOOPが理解できれば話は早いんだけどね。
最近だとOOPの教本は何故かjavaだしjavaがC構文だからSmalltalkは余計に難しいかね。

#個人的にはjavaはOOPの教本向きじゃなくてツールキットやフレームワーク(ミドルウェア類のアプリケーションの一個下にある層)、
それに絡めてデザインパターンの使い方の教本向きだと思う。
223デフォルトの名無しさん:2007/09/26(水) 03:53:47
クリックしたらフォーカスが移動してキーイベントにフォーカスが戻らない。
キーイベントにフォーカスを移すにはどうしたらいいでしょうか?

ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29744
224デフォルトの名無しさん:2007/09/26(水) 05:48:39
たこやき-「たこやき」という概念-「概念」という概念-「「概念」という概念」という・・・

Java言語におけるユーザ定義クラスのインスタンス-Java言語におけるユーザ定義クラス
- Java言語におけるクラス - オブジェクト指向におけるクラス
225デフォルトの名無しさん:2007/09/26(水) 07:35:14
たこ焼き機とたこ焼きは明らかに御幣を生むって。
まだ、たこ焼きのレシピがクラスのソースコードで、newがたこ焼き機、インスタンスはたこ焼きって言う方が近い
コンストラクタ(レシピ)には具が渡され、微妙に具が異なるたこ焼きもできるってな
226デフォルトの名無しさん:2007/09/26(水) 08:02:31
メタクラスの説明のところでレシピのレシピ?とかなって、行き詰るよ
クラスとインスタンスの関係は、「特定言語において規定された」一つの概念の
インスタンスなんだから、具体に拠って理解したかったら変な例えじゃなくて
いろんなOOPLの言語仕様を見比べたり、良質なソースコードを読んで
クラスがどのように使われているか調べたりするほうが正しいやり方
227デフォルトの名無しさん:2007/09/26(水) 08:04:10
>>225
細かく説明すればいいってもんじゃない。物には程度っていうもんがあるだろうよ。
わかりやすくするために比喩を使ってるのに、その比喩が細かすぎてわかりにくいんじゃ本末転倒だ。
228デフォルトの名無しさん:2007/09/26(水) 09:11:27
所詮初心者向けのたとえなんだから、
納得できなければスルーするなり各自修正すればいいだけじゃまいか。
万人向けのたとえなんて存在しないんだから。
ちなみに鋳型のたとえはメイヤー本なんかでも出てくる由緒正しきたとえ。
229デフォルトの名無しさん:2007/09/26(水) 09:32:55
>>204
DB(Oracle)も使ってるのですが、
作業の都合でDBに入れられないデータもあるので仕方がありません。
これは、H2使うとメモリ使用量が倍以上になってしまうのでまずいなぁ。
テーブル構造のデータ型でSQLも使えるのがあるといいのに…LINQとか?
230デフォルトの名無しさん:2007/09/26(水) 10:20:41
関数にArrayListを渡して、その関数内でaddしても
関数から抜けるとaddされた行がないのはなぜでしょうか?
231デフォルトの名無しさん:2007/09/26(水) 10:33:14
関数に渡されるのは、ArrayListオブジェクトの参照だから問題ないはず。
returnする必要も無い。

関数内で、ArrayListをコピーして、それに対してaddしてれば、
当然、元のArrayListにはaddされない。
232デフォルトの名無しさん:2007/09/26(水) 10:48:52
追加、
関数内でコピーしたArrayListをreturnすれば、それはaddされています。
ただし、余計な処理が増えてるので処理量がほぼ倍に増えてます。
233デフォルトの名無しさん:2007/09/26(水) 11:20:16
223です
Canvas内のpaint()メソッドにrequestFocus();を入れて
frame.addKeyListener(this);からcanvas.addKeyListener(this);に書き直したらフォーカスを取得することが出来ました。
スレ汚しすいませんでした。
234デフォルトの名無しさん:2007/09/26(水) 11:43:52
GUIでファイルの一覧を表示したテーブルをダブルクリックすると外部アプリケーションでファイルを開くように作っています。
起動方法は別スレッドでProcessBuilderを使ってProcessを作成し実行という流れです。
このまま実行すると、当然ながらメインのフレームの方を終了しても各Processは終了しないのですが、それを終了と同期させて全てのProcessを終了させるにはどうしたらいいでしょうか?
235デフォルトの名無しさん:2007/09/26(水) 11:49:39
Process#destroy を呼ぶとか?
236デフォルトの名無しさん:2007/09/26(水) 11:55:30
やはりそうですか・・・
そうなるとスレッドを管理するマネージャーみたいなクラスを準備した方がよさそうですね。

ありがとうございました。
237デフォルトの名無しさん:2007/09/26(水) 12:53:45
Windows環境のJava6でjpsもjconsoleも使えません。
開発のためにjava5, java6を入れていますが、
どのタイミングで使えなくなったまでは失念です…。
パーソナルFirewallは切った状態でも試しましたがNGでした。
ファイルフォーマットはNTFSのため、jconsoleのFAQ#1は該当しません。
他に確認すべき点はありますでしょうか?

C:\>echo %JAVA_HOME%
C:\Java\jdk1.6.0_01

C:\>echo %CLASSPATH%
%CLASSPATH%

C:\>java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

C:\>c:\Java\jdk1.6.0_01\bin\jps

C:\>
238デフォルトの名無しさん:2007/09/26(水) 14:56:02
javaは最新版のを使ったほうが良いですか?
239デフォルトの名無しさん:2007/09/26(水) 15:05:34
>>238
特に指定されていないのなら最新版を使った方がいいよ
240デフォルトの名無しさん:2007/09/26(水) 15:10:47
>>239
ありがとうございます
241デフォルトの名無しさん:2007/09/26(水) 16:18:11
class Foo {
pubilc int data;
}

class Bar {
private Foo foo;
Bar(){
foo = new Foo();
}
Foo getFoo(){
return this.foo;
}
}

class Test{
Bar bar;
Foo foo;

Test(){
bar = new Bar();
foo = bar.getFoo();
}
}

この時、Testコンストラクタ内で問題無くFooのインスタンスを受け取れますか?
242デフォルトの名無しさん:2007/09/26(水) 16:21:46
受け取れるよ
243デフォルトの名無しさん:2007/09/26(水) 16:25:17
突然だが結局の所、一番最初に読む本はHead First Javaがベストなのか?
244デフォルトの名無しさん:2007/09/26(水) 16:42:31
他の言語でプログラミング経験があるのなら一冊目でもOK。
そうでないと一冊目としてはちょっと厳しい。
オライリーのサイトにサンプルがあるから眺めてみて、もし意味不明なら
もう少し易しめのを読んでからにしたほうがいいと思う。
245デフォルトの名無しさん:2007/09/26(水) 16:45:37
http://pc11.2ch.net/test/read.cgi/tech/1190032149/
こっちで詳細に議論してくれ
246デフォルトの名無しさん:2007/09/26(水) 19:12:30
質問です。

自作のパッケージをjarファイルにまとめてimportしたいのですが
「パッケージが無い」と言われてうまくいきません。

パッケージをjarファイルにするときや
jarファイルをimportするときには
何か特別な記法があるのでしょうか?
247デフォルトの名無しさん:2007/09/26(水) 19:19:11
jarにパスが通ってないだけでしょ
248デフォルトの名無しさん:2007/09/26(水) 19:21:12
>>246
予想だが、インポートで指定してるパスが一つ下なんだと思う。
Javaがパッケージをフォルダ構造で実現してるからこんなことが起こるんだが、
ソースファイルに、
pakcage jp.ac.〜;
とかいてあるのに、パス指定でacフォルダを指定したりしてないか?
もしそうなら、きちんとルートパッケージを指定してもう一度やってみるべし。
249デフォルトの名無しさん:2007/09/26(水) 19:49:35
>>248
pakcage hoge;
の一式を
jar cvf hoge.jar hoge/*.class
して、testクラスで
import hoge.*;
してます。

jarファイル自体はtestクラスの下に置きました。
階層やらはいろいろいじってみたのですが…。
250デフォルトの名無しさん:2007/09/26(水) 19:52:32
jar tf hoge.jar で jar の中にちゃんとディレクトリ階層が出来てるか確認すべし
251デフォルトの名無しさん:2007/09/26(水) 19:56:44
>>250
META-INF/
META-INF/MANIFEST.MF
hoge/A.class
hoge/B.class

こんな感じです。
どこか問題はあるでしょうか。
252デフォルトの名無しさん:2007/09/26(水) 20:05:42
なさそうだな
じゃあやっぱりクラスパス指定してないだけでは
253デフォルトの名無しさん:2007/09/26(水) 20:34:55
「MyClassクラスのメソッドは、MyClassクラスの『すべての』オブジェクトの
プライベートフィールドにアクセスできる」という文法規則があります。たとえば
class MyClass {
  private String name;
  ...
  public boolean equals(MyClass other) {
    return name.equals(other.name);
  }
}
が合法的となっています。

これは、データのカプセル化をこわすもので、
望ましくないものだと思うんですが、どうなんでしょうか?
ご教示ください。
254デフォルトの名無しさん:2007/09/26(水) 20:39:27
equals をオーバロードするとトラブルの元
とか、そういうのを抑える方が先
255デフォルトの名無しさん:2007/09/26(水) 20:49:07
>>253
これは合法だな。
自分のクラスの問題だから気をつけて使うべき、て言うのが答えだと思う。
安全性を考慮するならsetter/getterを使ってアクセスするとかそういうのにしたほうがいい。

>>254
kwsk
256デフォルトの名無しさん:2007/09/26(水) 20:56:45
あ、そうか。オーバーライドじゃなくてオーバーロードな。
なるほどなるほど。
257デフォルトの名無しさん:2007/09/26(水) 21:04:57
>>253
カプセル化というのは、普通自分の作っていないクラス外からの
フィールドへの直接アクセスを抑制する目的で使う。
だから、まあ、気をつけて使えというところか。
この例で、equalsで使ってるフィールドは変更がないからいいものの
渡されたオブジェクトを変更するとかに使うのは危険じゃないかと思う。
なので、finalがついてるフィールドの場合に限定するとかしといたほうがいいかなぁ、と。
>>254
カプセル化とは別の話。>>253の話は、equals以外にも適用される。
258251:2007/09/26(水) 21:38:12
>>252
クラスパス指定って、環境変数のことですか?
それって、直下のjarファイルを読むときも必要なのでしょうか。
259デフォルトの名無しさん:2007/09/26(水) 21:43:25
環境変数でもいいけど
java コマンドの -classpath オプションで jar ファイルを指定する
260251:2007/09/26(水) 22:09:24
>>259
解決しました。
ありがとうございます。

でもやっぱりいちいち指定しないと使えないのでしょうか。
実行のときまでパス指定しろと言われてしまったのです…。
261デフォルトの名無しさん:2007/09/26(水) 22:11:15
>>253
望ましくないとする言語もあるね。Rubyとか。
言語設計の思想の話だね。
262デフォルトの名無しさん:2007/09/26(水) 22:12:50
>>260
実行可能jarファイルにしてしまえばOK。
Class-Pathエントリに書いたjarファイルはクラスパスに追加される。
263251:2007/09/26(水) 22:25:47
>>262
解決しました。
ありがとうございました。
264253:2007/09/26(水) 22:34:00
答えてくださったみなさま、どうもありがとうございました。
265デフォルトの名無しさん:2007/09/27(木) 00:51:51
パッケージ名でcommonとutilとつけるパッケージをたまに見かけるのですが
いまいち違いわかりません。
違いを教えて
266デフォルトの名無しさん:2007/09/27(木) 00:55:33
そのパッケージを作ったやつに聞け
utilの方はjava.utilかもしれんが、jakarta commonsはsが付くしなあ
267デフォルトの名無しさん:2007/09/27(木) 00:57:22
>>265
クラス名・変数名に迷ったら書き込むスレ。Part10
http://pc11.2ch.net/test/read.cgi/tech/1180146315/
268デフォルトの名無しさん:2007/09/27(木) 02:10:02
java初心者です。
javaのプログラムの中にfortranやcなど異なる言語を実行させるにはどうしたら
いいでしょうか?
269デフォルトの名無しさん:2007/09/27(木) 02:46:29
JNI を使う
270デフォルトの名無しさん:2007/09/27(木) 04:26:54
JNIは地獄を見た記憶しかないなぁ
271デフォルトの名無しさん:2007/09/27(木) 04:35:20
JNI使うメリットのある物って最近ないよなぁ。
むかしは、JNIのオーバーヘッド(作成の手間も含めて)に対して
パフォーマンスメリットがあったり、Javaじゃ実現できない機能が使えたりしたから、
JNIもよく使われたけど、Javaの実行環境、ライブラリの性能が上がって
機能も増えてきたから、JNIでないと、というものが減ってるよね。

ホントにどうしても使いたいって別言語のプログラムは、もう別プロセスで動かしちゃう方が楽じゃないかと。
Runtime.exec()。と。
データのやり取りは、ファイルかパイプか、ソケット経由で。
272デフォルトの名無しさん:2007/09/27(木) 07:39:23
それもそうだけど、初心者はおとなしくjavaで可能な事を学ぶ方が先だろうと思う
273デフォルトの名無しさん:2007/09/27(木) 08:17:52
みなさんありがとうございます。
JNIっていうものはよくわかりませんが、なんか大変そうですね。
時間がないのでRuntime.exec()のやり方でやってみることにします。
Javaならほかの言語とも連携できるということを聞いたので今頑張っているんですが
やっぱそう簡単にはいかないんですね。
274デフォルトの名無しさん:2007/09/27(木) 09:15:56
ソースを分けて書いて、
Cみたいに単純に#includeしたいんですが
javaでそういうことはできるのでしょうか?
275デフォルトの名無しさん:2007/09/27(木) 09:23:06
パッケージ
276デフォルトの名無しさん:2007/09/27(木) 09:41:29
  ________ 
  (会長のメッセージ)
   ̄ ̄ ̄\| ̄ ̄ ̄ 
http://www.freewebs.com/premiumtv/?BEAT/?rTV=rimo.tv/en/ch/3802
277デフォルトの名無しさん:2007/09/27(木) 10:41:15
>>273
それは多分javaで実装された他の言語とのシームレスな通信の話だと思う。

JNI使うメリットか・・・コンソール制御は需要ないだろうし、今はVMが異様に早いからなぁ。
JNI噛ますオーバーヘッドとネイティブコードを書くデメリットの方がでかいよなぁ。
ほとんど使われなくなったSWTの今・昔の状況が物語ってるね。

まあ広く利用価値のあるJNIってJOGL,JOAL,JMFくらいだろうね・・・。
278デフォルトの名無しさん:2007/09/27(木) 10:41:55
JOptionPaneのような
メソッド実行→ダイアログ描画→ユーザーの入力待機→入力に応じた返り値
というのは、JDialogでいったいどうやって実現すればよいのでしょうか。
メソッド実行してからメソッド内のどこかで入力待機してる筈なのですが、
ソース見てもいまひとつわかりませんでした。スレッドを新設してるのでしょうか。
279179:2007/09/27(木) 10:48:53
>>26さま
実行してみて英語がファッキンな私でもだいたい何してるかはわかったんですけど・・・
要するに1フレームごとに分けて、フレーム数とかもわかるのはいいんですけど、1フレームごとに分けた画像とかってどっかのフォルダに入っちゃったりしてるんですか?
画像にしてRGB値の変化みてけってことですよね?
280デフォルトの名無しさん:2007/09/27(木) 11:24:07
>>278
setModal(true) したあと setVisible(true) を呼ぶと、閉じるまでそこで停止する
281デフォルトの名無しさん:2007/09/27(木) 11:34:55
>>280
ということはイベントディスパッチスレッドからsetVisible(true)をすると、
イベントディスパッチスレッドが止まって、ダイアログのボタンが押せなくなったり、
ダイアログを閉じられなくなったり、いろいろえらいことに・・・

ってそんなわけありませんよね・・・。
282デフォルトの名無しさん:2007/09/27(木) 12:41:34
ダイアログをモーダルにするっていうのは、呼び出し元の操作を受け付けなくするだけちゃうん?
283デフォルトの名無しさん:2007/09/27(木) 13:14:09
>>179
26さまじゃないが単にフォルダ指定してないだけじゃね?
284デフォルトの名無しさん:2007/09/27(木) 13:34:23
>>281
それは大丈夫だと Dialog#setVisible の Javadoc に書いてある

>>282
ダイアログが非表示になるまで戻らないと Dialog#setVisible の Javadoc に書いてある
285デフォルトの名無しさん:2007/09/27(木) 13:46:51
>>279
なんか見つけた。これでおk?
http://rsb.info.nih.gov/ij/plugins/jmf.html
286デフォルトの名無しさん:2007/09/27(木) 14:10:12
>>280, >>284
ありがとうございます。

これですね。

>Dialog#setVisible
>モーダルダイアログに関する注意.
>
>このメソッドがブロックされている間は、 ほかのイベントはブロックされないようにツールキットで保証>されるので、 イベントディスパッチスレッドからこのメソッドを呼び出してもかまいません。

結局仕組みがよくわかりませんが、Dialogが不思議な力で護ってくれる、と。
287237:2007/09/27(木) 17:00:35
あれ、書き込んだつもりだけど気のせいだった orz
jdk1.6.0_02を入れたけど症状は変わらず…
ってかプロセスIDを取れないんだったら取れなかったという
ログを出して欲しいけど、それすら出さんのね…。
-verbose的なオプションがあればまだしも…。
288デフォルトの名無しさん:2007/09/27(木) 17:14:55
ageんな
最近あがってるスレに変な宣伝urlが書き込まれるようになってる
289デフォルトの名無しさん:2007/09/27(木) 17:41:47
質問です。

Javaの画面上で「Alt+Space」を押すと左上にポップアップが出て、
サイズ変更や移動ができてしまいますが、このポップアップを表示させない
ようにできないでしょうか?

あるいは、「移動(M)」だけでも無効にできるといいのですが。。。
(「閉じる(Alt+F4)は無効にしています)
290デフォルトの名無しさん:2007/09/27(木) 18:10:23
>>289
それはWindowsそのものの機能でJava固有のものではない。
そして、俺はそこまでしか知らない。
291デフォルトの名無しさん:2007/09/27(木) 18:49:10
>>289

resizeとmovedを検知して、元に戻す方法なら知っている
29226:2007/09/27(木) 18:49:36
>>279
290行で int 配列を取ってるだろ?これが 1 フレーム分の画像そのものの情報。
あとは RGB 成分に分解して好きにしろよ。
ちなみに 292 行の判定文は単に俺が 100 フレーム目の画像を取り出そうかな
と思って入れてただけ。別に 100 に重大な意味はない。
290行以降は画像として保存してちゃんと取得できてるかチェックしようかなと思って
追加した処理。別に必要なきゃ削除しろよ。
ってこれで分からないなら何がどう分からんのか詳細にかけやコラ(号泣)。
293デフォルトの名無しさん:2007/09/27(木) 22:30:09
>>289
L&FでOSによるウィンドウのデコレートを取ってしまう
たぶんWindowsっぽくなくなるけど
294デフォルトの名無しさん:2007/09/27(木) 22:31:26
質問です。
JavaVMのソース(Cなり、Javaなりでできているもの)は手に入らないものでしょうか?
Windows用でもLinux用でもなんでも構いません
295デフォルトの名無しさん:2007/09/27(木) 22:37:42
JVMなら何でもいいの?

たしかどっかでPureJavaのJVMがソースとともに公開されてた希ガス
296デフォルトの名無しさん:2007/09/27(木) 22:41:33
オープンソースのJavaVMがいくつかあるよ
ぐぐってみれ
297デフォルトの名無しさん:2007/09/27(木) 22:41:36
jdk1.3程度に対応できれば十分な感じです。
今、最近オープンソース化されたjdk7.0用?のvmのソースを落としてきたのですが、膨大すぎて…。
298289:2007/09/27(木) 23:28:34

>>290
ということはJavaでは制御できないと。。。orz

>>291
その方法教えていただけないでしょうか?

>>293
UIManager.setLookAndFeel(String className) でセットしている
見た目をWindows以外にする、ということでしょうか?
299デフォルトの名無しさん:2007/09/27(木) 23:51:18
そもそもWindowsのフレームについちゃってるみたいだからlafで変えても無駄だよー
300デフォルトの名無しさん:2007/09/27(木) 23:53:34
エスパーな質問になるかもしれませんが質問があります
import java.awt.*;
import java.awt.event.*;
public class HelloWorld extends Frame{
/********** コンストラクタ **************/
public HelloWorld() {
setSize(400,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/*************** paint ****************/
public void paint(Graphics g)
{
g.drawString("私の名前はtestです",20,60);
}
/**************** main ************/
public static void main(String[] args)
{
Frame w = new HelloWorld();
w.setVisible(true);
}
}
クラス、インスタンス、オブジェクトの理解が曖昧なので間違っているかもしれませんが
g.drawStringというのは何かのクラスをgという名前でインスタンス化したものだと思うのですが、どこで実行されたものなのでしょうか
xxxx g = new xxxx(); がないとおかしくないのかなと思っています
301デフォルトの名無しさん:2007/09/28(金) 00:02:43
Frameのインスタンスが作成された時、見張り役を設定する。
見張り役が画面の再描画が必要であると判断した時に、Graphicsのインスタンスgを作成し、Frame#paint(g)を呼び出す。

こういう説明でおk?
302デフォルトの名無しさん:2007/09/28(金) 00:21:55
>>301
なるほど
画面のサイズを変更したときに
画面から欠けてたものを再描写するとき(最初の描写も?)に
自動的に gという名前でインスタンスを作成してくれるということですね

303デフォルトの名無しさん:2007/09/28(金) 00:22:42
>>300
g は AWT の中でインスタンス化されて paint に渡される。
ソースは提供されてないので、残念ながら new してるところを見ることは出来ないが、どこかで new されてるのは間違いない。
304デフォルトの名無しさん:2007/09/28(金) 00:25:53
質問
先生から
「repaint()でupdate(Graphics g)メソッドを呼び出し、update(Graphics g)メソッド内でpaint(Graphics g)メソッドを呼び出す」
と聞いたのですが・・・
repaint()とupdate(Graphics g)の間(?)ってどうなっているんですか?
repaint()でrepaint()メソッドを呼び出さないんですか?
305デフォルトの名無しさん:2007/09/28(金) 00:31:08
>>304
public void update(Graphics g){
/*
本来ならここで画面全体を背景色で塗りつぶす処理が入るが、
このメソッドをオーバーライドしその処理をあえて飛ばす事が出来る。
*/
paint(g); // 引数で渡されたGraphicsオブジェクトをそのままpaintメソッドに渡す。
}
306デフォルトの名無しさん:2007/09/28(金) 01:36:20
>>304
例えば >>300 のプログラムみたいに paint メソッドで背景を消去し忘れてても大丈夫なように、
update はウィンドウの背景を消去してから paint を呼ぶ。
307デフォルトの名無しさん:2007/09/28(金) 04:23:43
クラス設計?に関する質問です。

JTableを継承して、いくつかの追加機能を設けたExtendedJTableを作りました。
この追加機能を利用するにはTableModel側にも拡張が必要で、
TableModelインターフェイスを拡張したサブインターフェースExtendedTableModelを作りました。

この拡張されたTableModelを実装したテーブルモデル用に
ExtendedJTable#setModel(ExtendedTableModel tablemodel){ super(tablemodel); }
を定義したのですが、JTableを継承したときに、
JTable#setModel(TableModel tablemodel)も継承しているので、
追加機能に対応していないテーブルモデルを設定することもできてしまいます。

この場合追加機能を用いようとしても当然無理なので、どうにかしたいのですが、
どのようにするのがよいのでしょうか。
JTable#setModel(TableModel tablemodel)を潰すことはできませんよね。
設計に何か根本的な間違いがあるのでしょうか。

class ExtendedJTable extends JTable{
public void setModel(ExtendedTableModel tablemodel){ super(tablemodel); }

public void somethingWonderful(){ //JTable追加機能
 ExtendedTableModel tablemodel=(ExtendedTableModel) getModel();
 //以下追加機能のロジック
 tablemodel.addedTableModelMethod();
 //etc...

}
}
interface ExtendedTableModel extends TableModel{
public void addedTableModelMethod(); //JTable#extendedWonderfulSomething()で利用されるメソッド
}
308デフォルトの名無しさん:2007/09/28(金) 04:34:40
ExtendedTableModelでないTableModelを設定しても、
TableModelであることを前提に動作している部分は問題ないのでは?
TableModelとしてExtendedTableModelで追加された機能を使うわけではないので。(コンパイルできないし)
ExtendedJTableにしろExtendedTableModelにしろスーパークラスの機能を潰しているわけではないんでしょ?
もし、機能の追加でなく機能の削除のための継承なら、それは間違った継承の使い方だと思う。
309デフォルトの名無しさん:2007/09/28(金) 04:52:01
ちょっと待て、無警戒にExtendedTableModelでキャストしてるのか。
ExtendedTableModelかどうかを見て、ExtendedTableModelでなければ、
TableModelとして扱い、追加機能を使わないようにしないと駄目だと思う。
310デフォルトの名無しさん:2007/09/28(金) 04:53:23
>>308
>>TableModelであることを前提に動作している部分は問題ないのでは
その通りです。
しかし追加機能を使おうとすればキャストで例外が生じてしまいます。

既存のクラスをできるだけ流用しつつ
ExtendedJTableでは必ずExtendedTableModelを実装したテーブルモデルを対にして
使うことを強制するような設計はないのでしょうか。

>>309
例には書きませんでしたが一応ClassCastExceptionをキャッチしてます。
311デフォルトの名無しさん:2007/09/28(金) 04:56:12
>>307
ExtendedTableModel#setModel(TableModel)を定義して、
渡されたTableModelがExtendedTableModelのインスタンスでなければ例外を出すのじゃだめ?
312デフォルトの名無しさん:2007/09/28(金) 05:02:43
>>311
やはりそれしかありませんか。
実行するまでわからないのがネックですね。勉強不足で申し訳ないのですが、
巷で流行りのでざいんぱたあんといふものでうまくいかぬものか、と考えていたのですが。
313デフォルトの名無しさん:2007/09/28(金) 05:20:00
@DeprecatedをExtendedTableModel#setModel(TableModel)に付ければコンパイル時に警告は出せるけどエラーにはならないね
314デフォルトの名無しさん:2007/09/28(金) 05:34:44
所詮は趣味なので、極端な話コメントに注意を書いとけば
例外のキャッチすら要らないのかもしれませんが、
後学のためにと、ちょっと興味を持ったもので。

こんな時間に付き合っていただき、ありがとうございました。
315デフォルトの名無しさん:2007/09/28(金) 06:44:17
JavaでMIDIを再生してるんですが、
音飛びというか安定して演奏されないことがあります。
安定して演奏されるようにするにはどうすればいいでしょうか。
316デフォルトの名無しさん:2007/09/28(金) 06:57:34
>>314
徹夜頭でうつらうつらと考えたんけど、
ExtendedJTableでしか使われない機能を定義しているExtendedTableModelをTableModelから継承しているのが問題で、
public interface ExtendedTableModel {
void addedTableModelMethod();
}
にして、
public class ExtendedJTable extends JTable {
//ExtendedTableModelのデフォルト実装
private ExtendedTableModel extendedModel = new DefaultExtendedTableModel();
public void setModel(ExtendedTableModel model){
extendedModel = model;
}
public void somethingWonderful(){
TableModel model = getModel();
extendedModel.addedTableModelMethod();//拡張機能を使用するとき
model.getRowCount();//TableModelの機能を使用するとき
}
}
のようにすればいいんでは?
ExtendedJTableのコンストラクタにTableModelとExtendedTableModelの両方を指定するものを定義するとか、
setModel(TableModel, ExtendedTableModel)みたいなメソッドを定義するとか、
便利にするための追加はいろいろとやることにして。
で、面倒ならTableModelとExtendedTableModelを継承するインタフェースを作って、
それを実装したクラスを両方のモデルとして与えてやると楽とか。
setModel(TableModelAndExtendedTableModel model) { super.setModel(model); extendedModel = model; }
こんな感じのメソッドを作って。
317デフォルトの名無しさん:2007/09/28(金) 07:00:29
>>315
どうやってMIDI再生しているかによるけれどJavaSound APIを使っているなら
バッファリングのパラメータを調整してみるのはどうだい?
318デフォルトの名無しさん:2007/09/28(金) 07:05:43
>>317
midiの再生だからバッファの問題よりもマシンリソースが足りないんじゃないかな?
実行環境のスペックとか再生方法が分からないと何とも言えないけど。
319315:2007/09/28(金) 07:23:40
>>317-318
Sequencerを使っています。
Celeron(2.2G)よりもCore2(T7200)の方が
音飛びが発生する時間は遅いのですがそれでも発生します。
320デフォルトの名無しさん:2007/09/28(金) 07:37:39

----【即系サイト×優良サイト=即会い即やり!】-----------------------

優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。
これが面白いほど会える☆ 会った後は・・・
俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。
これ以外にもお気にの女の子とは週1で会ってます。

今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている
登録後一日以内に出会えたサイトを紹介するブログ始めました。
皆も休日にエンジョイしてください!

↓↓↓
【即出会えるサイト紹介ブログ】
http://deaigets.blog97.fc2.com/

--------------------------------------------------------------------
321デフォルトの名無しさん:2007/09/28(金) 08:18:16
>>316
>徹夜頭でうつらうつらと
すみません。ありがとうございますm(><)m

基本的なテーブルモデルと、拡張された部分とに分ける案ですが、
そうすると拡張部分のメソッドからテーブルモデルのフィールドを
読んだり書き換えたりするのがするのがだいぶ大変になりそうですし、
ExtendedTableModelが単独だと意味をなさなくなりますし、
どうやって分離するのかちょっとわかりません。

class MyTableModel implements TableModel{]
class DefaultExtendedTableModel extends MyTableModel implements ExtendedTableModel{}
のようにするのでしょうか。

そもそもJTableを継承してsetModel(TableModel)が生きてる時点で、
「ExtendedJTableでは必ずExtendedTableModelを実装したテーブルモデルを
対にして使うことを強制するような設計」という要件が難ありですね。
やはり無理なことを考えているのでしょうか。
322デフォルトの名無しさん:2007/09/28(金) 09:52:23
Javaはインターネットブラウザの代わりに自動的に通信することは可能でしょうか?

定時毎に指定したID,PASSでログインして
HPから情報をもってきたいと思っております

323デフォルトの名無しさん:2007/09/28(金) 10:14:39
>>322
HttpURLConnection
324デフォルトの名無しさん:2007/09/28(金) 10:25:37
>>323
ありがとう!
325デフォルトの名無しさん:2007/09/28(金) 11:23:49
>>321
普通のTableModelがセットされたときは、普通のTableModelにExtendedな機能を外付けするラッパークラスをかぶせるっていうのはどうかな。

class ExtendedTableModelWrapper implements ExtendedTableModel {
 private TableModel originalModel;
 public ExtendedTableModelWrapper(TableModel originalModel) { this.originalModel=originalModel; }
 // 既存のメソッドはオリジナルモデルに転送
 public int getRowCount(){return originalModel.getRowCount();}
 public int getColumnCount(){return originalModel.getColumnCount();}
 ......
 // 追加の機能を実装
 public void getDimensionCount(){return 1;}
 ......
}

class ExtendedJTable extends JTable {
 public void setModel(TableModel model) {
  if (!(model instanceof ExtendedTableModel)) {
   model = new ExtendedTableModelWrapper(model);
  }
  super.setModel(modle);
 }
 ......
}
326279:2007/09/28(金) 12:35:31
>>292さま
号泣させてすいません。その辺をいじっていこ〜と思います。
次もし何か書くならもっと詳しく書きます↓↓
327デフォルトの名無しさん:2007/09/28(金) 13:00:56
なんか
オブジェクト、クラス、インスタンスのことがわかってきたぁぁ!

お前らマジでありがとう
328デフォルトの名無しさん:2007/09/28(金) 13:36:37
eclipseでjunitテストケースを大量に一括実行(500件くらい)すると、
400あたりでOutOfMemoryErrorが発生して、それ以降テストが実行されなくなるんだけど、
何か良い回避策ありませんか?
329デフォルトの名無しさん:2007/09/28(金) 13:43:29
テストされる側がメモリリークしてるってオチはないの?
330デフォルトの名無しさん:2007/09/28(金) 13:50:03
>>328
Antでやれば?
それだけの件数になると、EclipseのJUnitビューよりも
Antのjunitreportタスクの出力の方が見やすい。
331デフォルトの名無しさん:2007/09/28(金) 14:22:33
>>321
まだ眠いやw
ExtendedTableModelがTableModelを継承するのが元凶なので、それを回避する方針は変えないとして、
ExtendedTableModel内でTableModelの機能を使いたいのならExtendedTableModelがTableModelを持てばいいと思う。
public interface ExtendedTableModel {
void setModel(TableModel model);
void addedTableModelMethod();
}
にして、ExtendedJTableは>>316のままで、ExtendedTableModelの実装は例えば、
class DefaultExtendedTableModel implements ExtendedTableModel {
TableModel model = new DefaultTableModel();
public void setModel(TableModel model) {
this.model = model;
}
public void addedTableModelMethod() {
model.getRowCount();//TableModelの機能を使用するとき
}
}
コンストラクタでTableModelを指定することを強制するExtendedTableModelの実装もありだろうし。
ExtendedTableModelを抽象クラスにして、TableModelを持たせる部分あたりはExtendedTableModelで実装してしまう手も。
332デフォルトの名無しさん:2007/09/28(金) 14:38:11
問題はあるか。ExtendedJTableで、
public void setModel(TableModel model) { extendedModel.setModel(model); }
みたいにオーバーライドして、
public void somethingWonderful(){
TableModel model = extendedModel.getModel();
extendedModel.addedTableModelMethod();//拡張機能を使用するとき
model.getRowCount();//TableModelの機能を使用するとき
}
のようにしないといけなかった。ExtendedTableModelにもgetModel()を追加。
public interface ExtendedTableModel {
void setModel(TableModel model);
TableModel getModel();
void addedTableModelMethod();
}
333デフォルトの名無しさん:2007/09/28(金) 14:53:45
でも、これだとオーバーライドしていないJTableのメソッドを呼び出すと、
extendedModelが持っているTableModelを使わないねorz
public void setModel(TableModel model) { extendedModel.setModel(model); }
は、
public void setModel(TableModel model) { super.setModel(model); extendedModel.setModel(model); }
にしてsomethingWonderful()のTableModel model = extendedModel.getModel();は
このままでもmodel = getModel()にしてもいいという感じでいけるのかな。
JTableのTableModelとExtendedTableModelのTableModelが一致するようになっていればいいわけで。
334デフォルトの名無しさん:2007/09/28(金) 15:27:15
>>333
テストプログラムを作ったらコンパイルは通るけど実行時エラーが起きるよ
ExtendedJTableをnewする時にJTableのコンストラクタがsetModel(TableModel)を呼ぶもんだから
extendedModelが初期化されないうちにextendedModelを使おうとしてる

private ExtendedTableModel extendedModel = new DefaultExtendedTableModel();
public ExtendedJTable() {
setModel(extendedModel);
}
public void setModel(TableModel model) {
super.setModel(model);
if (extendedModel != null) extendedModel.setModel(model);
}
public void setModel(ExtendedTableModel model){
super.setModel(model.getModel());
extendedModel = model;
}
335デフォルトの名無しさん:2007/09/28(金) 15:42:39
javaでスマイルマークを作るにはどうすればいいのでしょうか?
↓このようなもの。
http://xqzone.marklogic.com/images/smiley_big.gif
336デフォルトの名無しさん:2007/09/28(金) 15:46:15
ExtendedTableModelにTableModelを引数として足りないところをデフォルトで補うコンストラクタを作ればいいんじゃないの?
337デフォルトの名無しさん:2007/09/28(金) 15:50:09
>>335
スマイルマークを作るって具体的にどういう意味だ。
Windowsのペイントみたいなお絵描きソフトを作りたいってこと?
338デフォルトの名無しさん:2007/09/28(金) 15:59:24
>>337
Javaで四角や三角を作れるようにスマイルマークは作れますか?
339デフォルトの名無しさん:2007/09/28(金) 16:04:17
>>338
四角や三角を作るって具体的にどういう意味だ。
340デフォルトの名無しさん:2007/09/28(金) 16:05:40
fillRect や fillPolygon で四角や三角を画面に描画するって意味なら、drawImage で gif 画像を描画すればいい
341デフォルトの名無しさん:2007/09/28(金) 16:08:09
javaの描画ライブラリで書きたいって事じゃない?
javaにはJava2Dというものがあってだね・・・
スマイルマークってドローベースの方が適切だよな。
342デフォルトの名無しさん:2007/09/28(金) 16:27:52
そんな面倒臭いことをしたいのか。
Path2D.Double クラスにベジェ曲線を設定していって、fill で塗りつぶせば描けるとは思うが。
343デフォルトの名無しさん:2007/09/28(金) 17:27:29
>>330
http://www.thinkit.co.jp/cert/tech/3/11/3.htm
ここを参考にantしてみたけど、全部ClassNotFoundExceptionになる。
antからテストターゲットクラスが参照できていないみたい
ターゲットのパスも間違ってないと思うんだけど..
344デフォルトの名無しさん:2007/09/28(金) 20:26:05
ant の build.xml に junit タスクを組み込もうと思ってるんだけど、エラーが出る。
環境は ubuntu feisty で、以下のような手順でやった。

$sudo apt-get install ant
$ant -version
Apache Ant version 1.6.5 compiled on July 5 2006
$sudo apt-get install junit
$ls /usr/share/java/junit-3.8.1.1.jar
/usr/share/java/junit-3.8.1.1.jar
$ls /usr/share/ant/lib
ant-bootstrap.jar ant-launcher.jar ant.jar junit.jar
$echo 'export ANT_HOME=/usr/share/ant' >> ~/.bash_profile
$source ~/.bash_profile
$which ant
/usr/bin/ant
$ant
BUILD FAILED
/home/xxxx/build.xml:68: Could not create task or type of type: junit.

なんででしょ?
345デフォルトの名無しさん:2007/09/28(金) 20:29:28
エラー書けよw
346デフォルトの名無しさん:2007/09/28(金) 20:34:04
>>345
Ant could not find the task or a class this task relies upon.

This is common and has a number of causes; the usual
solutions are to read the manual pages then download and
install needed JAR files, or fix the build file:
- You have misspelt 'junit'.
Fix: check your spelling.
- The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
Fix: check the documentation for dependencies.
Fix: declare the task.
- The task is an Ant optional task and the JAR file and/or libraries
implementing the functionality were not found at the time you
yourself built your installation of Ant from the Ant sources.
Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to the
task and make sure it contains more than merely a META-INF/MANIFEST.MF.
If all it contains is the manifest, then rebuild Ant with the needed
libraries present in ${ant.home}/lib/optional/ , or alternatively,
download a pre-built release version from apache.org
- The build file was written for a later version of Ant
Fix: upgrade to at least the latest release version of Ant
- The task is not an Ant core or optional task
and needs to be declared using <taskdef>.
- You are attempting to use a task defined using
<presetdef> or <macrodef> but have spelt wrong or not
defined it at the point of use

Remember that for JAR files to be visible to Ant tasks implemented
in ANT_HOME/lib, the files must be in the same directory or on the
classpath
347デフォルトの名無しさん:2007/09/28(金) 20:39:40
>>346
質問する前に読んだか?
348デフォルトの名無しさん:2007/09/28(金) 20:40:39
>>346
read the manual pages
349デフォルトの名無しさん:2007/09/28(金) 21:02:26
>>347-348
今読んだ。何が間違っているのかさっぱり分からん。
350デフォルトの名無しさん:2007/09/28(金) 21:07:39
>>349
- The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
351デフォルトの名無しさん:2007/09/28(金) 21:07:59
ant-optional インストールしたら出来た
352デフォルトの名無しさん:2007/09/28(金) 21:15:34
結局 web で調べて分かったんだけど、もうちょっと調べて書くべきだったと反省している。

が、
>>347-348,
>>350
きみら分かりもしないことにわざわざ答えなくていいよ。
マニュアル読めとか、何のためにこのスレあるの。
スレタイにマニュアル読んでも分からない質問専用って書いとけ。
353デフォルトの名無しさん:2007/09/28(金) 21:22:37
>>328
VM蹴るときに引数あげるだけ。
354デフォルトの名無しさん:2007/09/28(金) 21:27:13
>>352
なんで偉そうなの?
355デフォルトの名無しさん:2007/09/28(金) 21:29:04
>>352
The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
356デフォルトの名無しさん:2007/09/28(金) 21:33:36
>>350, 355
>>344

>>354
マニュアル読めとだけほざく奴や、質問すら読まず適当に返事する奴に何故敬意を払わないといけないのか。
357デフォルトの名無しさん:2007/09/28(金) 21:36:49
>>352
少なくとも質問してるくせに態度が横柄なお前のためにあるわけではないな。
358デフォルトの名無しさん:2007/09/28(金) 21:37:46
>>356
あー、あ、君、もう帰っていいよ。ごくろうさん。
359デフォルトの名無しさん:2007/09/28(金) 21:38:20
>>356
はいはいわろすわろす
360デフォルトの名無しさん:2007/09/28(金) 21:38:38
>>356
スレを占有しすぎですw

質問する前に、ググったり、質問の要点をまとめてこない人は
来ない方が、スレのためにもいいと思います。
正直、エラーを読んで「どこが分からない」とか書かない段階で読まないよ俺は。
すんげー親切なエラーじゃないかwww
361デフォルトの名無しさん:2007/09/28(金) 21:45:52
>>356
マニュアル嫁と、エラーメッセージに書いてあるんだよw
362デフォルトの名無しさん:2007/09/28(金) 21:55:35
>質問すら読まず適当に返事する奴に何故敬意を払わないといけないのか。
マニュアルすら読まずに質問する奴を何故人間として扱わないといけないのか。
363デフォルトの名無しさん:2007/09/28(金) 21:59:08
>>356
スレの住人はてめーの同僚でも先輩でも先生でもお友達でもないって覚えとけ
364デフォルトの名無しさん:2007/09/28(金) 22:01:15
>>361
エラーメッセージを繰り返すだけしかできないんだろ?質問の意味も分からず、
エラーメッセージ繰り返してるんだろ?
ubuntu では ant で拡張タスクを利用するのに apt-optional をインストールしないと
いけないということは知らなかったんだろ?

マニュアル読まずに質問した俺もまずかったが、質問に答えられない連中が偉そうに
マニュアル読めだの言う空気はどうかと思うよ。
365デフォルトの名無しさん:2007/09/28(金) 22:04:02
>>364
マジでくんな。
自分を棚に上げすぎ。
366デフォルトの名無しさん:2007/09/28(金) 22:06:10
なに無能が偉そうに講釈たれてんのよ
知ってる知らないにしても普通はマニュアル見るなりして調べるだろ
質問に答えられないとか笑わせるなカス
367デフォルトの名無しさん:2007/09/28(金) 22:15:06
>364
お前さんの書き込みを発端として、出来上がった空気である事がわからないほど子供なの?
感情より実益を優先させようよ。
すまんかった、他にもいい感じの情報があったら教えてくれないだろうか?ってふうに言ってみたら、棚ぼた的にもっと良い事を教えてもらえるかもしれないじゃん?
368デフォルトの名無しさん:2007/09/28(金) 22:33:36
>345>346の流れで既に空気嫁
369デフォルトの名無しさん:2007/09/28(金) 22:54:36
>すんげー親切なエラーじゃないかwww
親切すぎてコンソールからスクロールアウトしちゃうw
370デフォルトの名無しさん:2007/09/28(金) 22:55:44
初心者や質問者をこけにし過ぎ。
上級者なら通ってきた道、凡その見当がつくだろ?優越感に浸りたいだけなバカ共。
アドバイスも出来なら中傷すんな。
371デフォルトの名無しさん:2007/09/28(金) 22:59:12
というか一つのタスクが実行できないだけでこれだけの可能性を提示した上にマニュアル嫁まで言ってくれるantはとんでもなく優秀なエスパーだな。
372デフォルトの名無しさん:2007/09/28(金) 23:06:19
マニアル嫁ならアホでもな。
373デフォルトの名無しさん:2007/09/28(金) 23:23:01
わかりません。教えてください。初心者です。
374デフォルトの名無しさん:2007/09/28(金) 23:34:23
ああ、こんなに親切なチュートリアル付のエラーメッセージは始めてみたな
375デフォルトの名無しさん:2007/09/28(金) 23:59:30
流れぶった切りで申し訳ありません。
アプレットでJTextAreaを使った場合にTabキーがインデントにならず、
アドレスバーにフォーカスが移ってしまうのはどの様に回避すれば宜しいでしょうか?
過去ログでは逆の質問はよく見たのですが・・・
376デフォルトの名無しさん:2007/09/29(土) 00:05:53
アドレスバーにって、ブラウザ上での話?
ブラウザ上の話であれば、アプレットの問題じゃないから制御しようがないかも。
377デフォルトの名無しさん:2007/09/29(土) 00:12:24
マニアル嫁終了
378デフォルトの名無しさん:2007/09/29(土) 05:42:54
>>325>>331>>332-334
出払っていたので亀レスになってしまいましたが、
丁寧に回答頂きありがとうございます。
いま帰宅したところで脳みそぐったりなので、
後ほどゆっくり読ませていただきます。
379デフォルトの名無しさん:2007/09/29(土) 07:19:04
自己紹介いらねぇ
380デフォルトの名無しさん:2007/09/29(土) 07:25:57
俺antでant自身の構成が原因のエラーって出した事ないな。こんなに親切なのか。
381デフォルトの名無しさん:2007/09/29(土) 07:32:08
taskdefの書き損じで一発で出るぞ
そして、どんなエラーのときも同じメッセージが出るので全く親切じゃない
382デフォルトの名無しさん:2007/09/29(土) 10:52:58
>>366
無能無知はお互い様だろうが
383デフォルトの名無しさん:2007/09/29(土) 12:08:42
>>381
毎度同じ事言わせんなっていう開発者からのメッセージだな。
で、言いたい事は「マニュアル嫁」と。
384デフォルトの名無しさん:2007/09/29(土) 12:24:51
状況を知らないスレ住人が居る。

>>344

>>345

>>346

とりあえず、エラーの内容を住人が読んで、どこまで突き止めたか調べるために、
マニュアル嫁と言う。

>>349 今読んだ

自己解決した。無知の癖にくだらんレスすんなボケ。

住人「は?」

どう考えても、質問者の態度が悪いだろ。
385デフォルトの名無しさん:2007/09/29(土) 12:25:03
マニュアルは俺の嫁
386デフォルトの名無しさん:2007/09/29(土) 12:30:25
スレ住人は全知全能じゃない。暇だからこのスレに張り付いているわけで、
何か困難なことがあれば、一緒に助けてやるというスタンスのところに、
ああいう自己中が来ても意味無いよな。
387デフォルトの名無しさん:2007/09/29(土) 13:36:13
>>386
同意。なにサポートと勘違いしてるんだよって話だ。
アドバイザーはボランティアであって、知ってても答えてやる義務はない。
謙虚な初心者がいるなら、少しヒントでも出してやろうっていうぐらいなのに、
勘違いしたヤツが、教えてもらって当然とか思ってたら煽られても当たり前。
赤の他人にものを教えてもらってるって事を忘れるな。通りすがりの人に道を聞くのにもそんな態度がでかいのか?
388デフォルトの名無しさん:2007/09/29(土) 13:42:52
>>370
> 初心者や質問者をこけにし過ぎ。
> 上級者なら通ってきた道、凡その見当がつくだろ?優越感に浸りたいだけなバカ共。
> アドバイスも出来なら中傷すんな。

マニュアルやエラーメッセージ読めって立派なアドバイス。
アホでも書けるって言うけど、それすらしていない大アホが言うな。
389デフォルトの名無しさん:2007/09/29(土) 13:50:03
なんで最近の初心者ってマニュアル読まないんだろうね
初心者本とか入門サイトが氾濫してるせいかな?
390デフォルトの名無しさん:2007/09/29(土) 14:08:29
答えを引き出せる質問をひねり出せるか、ってのも重要なスキルだって事か。
391デフォルトの名無しさん:2007/09/29(土) 14:17:12
いわゆる質問力ってやつね
質問の仕方が下手糞で、相手から情報を引き出せない人をよく見かけるわ
愚直に質問力関連の本を読んで勉強するのもいいけど、
人の動かし方とか、自分が何を解決したいのかを伝えるプレゼン力ってのも必要になるから、
実践力を身につけたいなら、そういったスキルも勉強したほうがいい
392デフォルトの名無しさん:2007/09/29(土) 14:17:17
javaの学習の入門にいい本って
2chBook( ttp://deztec.jp/x/04/06/2ch/program/index.html )
に出ているものからほとんど変わってませんか?
古いものが多いので、最近のものでいいものがあればと思うのですが
参考になりそうなものがあれば、教えていただけませんでしょうか

ちなみに他の言語にも触れたことはありません
393デフォルトの名無しさん:2007/09/29(土) 14:27:06
>>392
上の方にそっくりの質問があったんだが、ここいって聞いてこい。

***Javaのオススメ入門書*** 『創るJava』 3.0
http://pc11.2ch.net/test/read.cgi/tech/1190032149/
394デフォルトの名無しさん:2007/09/29(土) 14:29:57
>>392
HeadFirstJavaがお勧め
わかりやすいし、それなりに実践的

じっくりやりたいなら、独習Java
章末に演習問題があって、それを解くことで力を養っていくスタイル

やさしいJavaは1日で読めてしまう、内容の無い本
ネットでJavaの入門ページ探せば事足りる程度
395デフォルトの名無しさん:2007/09/29(土) 14:39:32
>>393
最初に検索にかかったので行ってきたのですが
2ch初心者の私には正しい情報の取捨が出来ないと思われる雰囲気だったのでこちらにきました
>>394
ありがとうございます
まずはその順番で進めていこうと思います
396デフォルトの名無しさん:2007/09/29(土) 14:42:02
>>395
順番?
どれか1つでいいんだよ
迷ったら、とりあえずHeadFirstJavaでいい
あれが一番バランスのある入門書だろう
397デフォルトの名無しさん:2007/09/29(土) 15:20:54
>>391
>実践力を身につけたいなら、そういったスキルも勉強したほうがいい

実践力を身に付けたいって自分で思う奴なら大丈夫だと思う・・・
厄介なのは自分の事を棚に上げて「お前の力が足りない」と切れる奴なので・・・
398デフォルトの名無しさん:2007/09/29(土) 15:39:32
情報収集型インタビュー
399デフォルトの名無しさん:2007/09/29(土) 16:19:45
>>397
そういう人は、行動心理から勉強しないとだな・・・
防衛本能からくる無意識の思考って意識されないから、客観的に自分の言動を見る癖を付けておかないと気付かない

自分から質問して、相手にぞんざいな扱われ方をされたからって、相手を侮辱するのは、基本的には防衛本能による行動
見下されたという危機意識で攻撃的な行為に出てしまう
まぁ本能に忠実なサルでしたってことで
400デフォルトの名無しさん:2007/09/29(土) 17:08:15
http://code.nanigac.com/forum/view/127

↑この場合、変数の宣言を外でしても内側でしても変わらないような気がするんですけど、どうでしょうか?
(最適化される、されない以前の話で)

あと、回答にある、最近のコンパイラは文字列の連結をStringBuilderに最適化してくれるって話は本当ですか?
401デフォルトの名無しさん:2007/09/29(土) 17:16:50
>>400
変数の為の領域確保が、「もし」ループの回数行われるなら無駄ですよね?
でも、この場合はスタックに確保される変数なので確保は行われないはずですね。
コンパイル時点で、スタックの何処に入るか決まっています。
最適化云々ではなくローカル変数に利用するバイトコードの構造でそうなるだけです。
つまりString str1というのはバイトコードにならないということです。

StringBuilderに最適化するのは本当です。
以前は、StringBufferに展開していました。
ようは、分かりやすくコードを書けということです。
402デフォルトの名無しさん:2007/09/29(土) 17:32:12
JTableについての質問です。
JTableで行のダブルクリックを検出できるようにしたいのですがMouseListenerを取り付けてしまうとイベントを横取りしてしまうのか、行の複数選択ができなくなってしまいます。

よかったら打開策をご教授ください。
403デフォルトの名無しさん:2007/09/29(土) 17:37:14
書き込もうとしたら、>>401が既にレスを・・
私のほうは参考程度に・・

>>400
最適化されるされない以前の話でいえば、変数のスコープが変わる
ってそのページに言及されてる
一時的な変数は必要になる直前で宣言したほうがいい
だから、
String str1;
str1 = "foo" + i;
System.out.println(str1);
という実装はよくなくて、
String str1 = "foo" + i;
System.out.println(str1);
と、したほうがいい。
String str;の時点のデフォルトコンストラクタの呼び出しが省ける。まさに使う直前の宣言。
さらに言及すれば、
System.out.println("foo" + i);
がいい。strのスコープがwhile一回分から、printlnの引数内に収まるから。

これぐらいならコンパイラが最適化してくれるから関係ないって意見はあるかもしれないけど、
ポリシーは一貫しておいたほうが全体的なコードは綺麗になるし、コンパイラも万能じゃないから、最適化されないケースがあるかもしれない。
そんなことにいちいち左右されたくないでしょ。
もちろん、デバッグ効率を考えて、String strを生成するってのも一つの手。
何を優先させるかってのはポリシーの問題。


文字列の結合がStringBuilderに最適化されるのは本当
嘘だと思うなら、.classファイルを逆コンパイルしてごらん
ただし、文字列リテラルはその限りではないよ。
404デフォルトの名無しさん:2007/09/29(土) 18:23:04
>>403
いくらなんでもString str;でStringのデフォルトコンストラクタが呼ばれるなんて書くのは。
405デフォルトの名無しさん:2007/09/29(土) 18:37:40
>>404
あぁ、ごめん
C++と混同した
どちらにせよ、初期化のない変数宣言は推奨されていない
406デフォルトの名無しさん:2007/09/29(土) 18:52:20
>>405
言い換えると。
初期化する必要が出てくるまで宣言は遅らせるべき、と。
Effective Javaに出てたね。
407デフォルトの名無しさん:2007/09/29(土) 19:14:09
パフォーマンスの問題が、もちろん一つの理由なんだけど、
どっちかといえばプログラマーが楽なようにスコープを小さくするってほうが大きい。
これはあんまり賛同されないだろうけど、俺はなるだけ”{}”を使って、変数のスコープを小さくしてる。
408デフォルトの名無しさん:2007/09/29(土) 21:33:18
>>407
便乗で申し訳ないんだけど、
>"{}"を使って、変数のスコープを小さくしてる。

これってどういう意味?
if (hoge) {
int foo = 0;
bar(foo);
}
みたいな話?
409デフォルトの名無しさん:2007/09/29(土) 21:39:35
>>408
>>407ではないが、
{
String line;
while( (line=reader.readLine())!=null ){
hogehoge(line);
}
}

という事だと思う。
410407:2007/09/29(土) 21:58:10
>>408
>>409であってる。
これをするとインデントが深くなって、エディタによれば見にくくなるんだけど、
一つのスコープで同じ変数名を使いたいときなんかに、スコープを区切れば安全に使える。

ここまで書いてなんだけど、これ、主にCで有効な方法なんだよね。
411デフォルトの名無しさん:2007/09/29(土) 22:00:20
具体的でない質問で恐縮ですが、
自分の欲しい機能を持ったクラスを探すとき、
ググる以外ではどのように探していますか?

API仕様から直接探すと、クラス名だけでは判別が付きにくいのですが・・。
412デフォルトの名無しさん:2007/09/29(土) 22:04:47
>>411
例えばどんな機能が欲しい?いってみれば具体的な手順を教えられるかも。
ググる意外って書いてるけど、ほとんどのクラスは"Java 機能の名前"で出ると思う。
API仕様は確認のためだけだと思った方がいいよ
413デフォルトの名無しさん:2007/09/29(土) 22:07:12
readLineを使う時の書き方ってどうなんだろうな?
自分は、
while(true) {
    String line = reader.readLine();
    if(line == null) break;
    // 処理
}
と書く。
外に宣言ある書き方、どうしても馴染めない
414デフォルトの名無しさん:2007/09/29(土) 22:11:30
>>409
こんなのできたんだね。初めて知ったよ。
415デフォルトの名無しさん:2007/09/29(土) 22:12:19
>>411
APIはある程度使い込んである程度の把握が必要。
それが出来てくると、こんな感じで行う。
1. 行いたい機能の大雑把な分類からパッケージのアタリをつける
例えば、ファイル関係ならばjava.util.ioやjava.util.nioなど

2. 行いたい機能ではずせないキーワードを選び、パッケージ内から検索
例えば、File Read など

3. メソッドのサマリーを検索してみる

ここで、ないかな?と思ったならば、「似た機能」を探してみる。
似た機能のクラスを見つけたならば、そのサブクラスやスーパークラスにないかを探す。

基本APIから調べる場合はこんな感じだな。
とにかく、名前(英語名)。
正しく設計されたクラスは、適切な名前のパッケージに適切な名前で入っているわけで、英語に上手く変換できるかが肝。
416デフォルトの名無しさん:2007/09/29(土) 22:27:59
>>413
for使えばお望みどおりになるよ。
for(String line = null; (line = reader.readLine()) != null;){
  // 処理
}
やらないけどね。
417デフォルトの名無しさん:2007/09/29(土) 22:35:42
>>410
そゆ時はメソッド作っちゃう
418デフォルトの名無しさん:2007/09/29(土) 22:36:21
>>415
>ファイル関係ならばjava.util.ioやjava.util.nio
java.ioとjava.nioな
419デフォルトの名無しさん:2007/09/29(土) 22:39:16
>>416
String line が使いまわされているから微妙に違うだろ
420デフォルトの名無しさん:2007/09/29(土) 23:15:31
static finalなメンバの初期化を
宣言時にするのと、
静的イニシャライザするのと、
違いはありますか?
421デフォルトの名無しさん:2007/09/29(土) 23:17:01
>>419
意図した使い方は同じだから問題なくね?

本当は
while(String line = reader.readLine()) {
ほにゃらら
}
で書ければいいんだけど、どうしてだめなんだろうね。便利なのに。
422デフォルトの名無しさん:2007/09/29(土) 23:18:10
>>420
文法的には等価。
ifとか使うとパフォーマンスで差があるかも。
423デフォルトの名無しさん:2007/09/29(土) 23:38:13
>>420
ある。 例えば

static final int FOO = 1;
static final int BAR;
statuc {
BAR = 2;
}

とした場合、

switch(x){
case FOO: // OK
case BAR: // エラー
}
424デフォルトの名無しさん:2007/09/29(土) 23:42:59
アクセス制御について教えてください。

一部では、protectedなメンバやメソッドのスコープは、
そのクラス及び派生クラスからのみ。
と解説されています(下記など)が、
www.atmarkit.co.jp/fjava/rensai2/javaent09/javaent09.html
www.tohoho-web.com/java/modifier.htm

他の資料や、実際にコンパイラに通して試してみたのでは、
同一パッケージ無いからならば制限無く参照できるようなのです。

protectedをどういうときに使うのかいまいち解らないのですが、
どういった設計で使うのでしょうか。
425422:2007/09/29(土) 23:47:38
>>423
マジで。知らんかった。
それ、なにか理由があるのか?
426デフォルトの名無しさん:2007/09/29(土) 23:47:42
>>423
えらくマニアックな例だなw
427デフォルトの名無しさん:2007/09/29(土) 23:49:01
>>425
理由というか純粋なリテラルか、不変な変数に代入処理をしているかという違いかと。
swichでのcaseにはリテラルしかダメ
428デフォルトの名無しさん:2007/09/29(土) 23:51:41
>>424
例えば JComponent クラスの paintComponent メソッドは protected だが、これは派生クラスでオーバーライドできないと困るから、選択肢は protected か public のどちらかしかない。
なるべく外からは呼ばれたくないので、見える範囲を最小限にするなら protected ということになる。
429420:2007/09/29(土) 23:52:24
試したらホントでびっくり。
もとの疑問はますますわからなくなりましたが。

>>426
他に例があるのでしょうか?
430デフォルトの名無しさん:2007/09/29(土) 23:52:58
>>424
正しい記述が行われている専門書を1冊買っておくべき。
常に参照するのではなく、この手の疑問はやはり言語定義とかそれに準じた正確な書籍を頼り、Webを信用しちゃいけない。

で、質問の内容だが、protectedは同一パッケージ内のアクセスも許可する
public -> protected -> (default = package private) -> private
という4段階のアクセス制御ができるが、protecedは package private にサブクラスもOKとしたもの
431デフォルトの名無しさん:2007/09/30(日) 00:00:40
>>429
どうだろ?
自分もそんなマニアックな方法でコンパイルエラーになる例は知らんかったよ。
ただ、リテラルとfinalの違いを知っていたんで、理解はできただけ。

ぱっと思いついた例。
public @interface Hoge {
    int value();
}
-----------
    private static final int NUM;
    static {
        NUM = 10;
    }
    @Hoge (value=NUM)
    public HogeHo() {
    }
432デフォルトの名無しさん:2007/09/30(日) 00:00:57
>>428
ふと思ったんだけどさ、サブクラスでprotectedなメソッドをオーバーライドして修飾子をpublicにしちゃったら
結局外から呼ばれちゃうんじゃないの?
433デフォルトの名無しさん:2007/09/30(日) 00:02:30
>>432
継承すっときに、アクセス就職誌は緩くできないぞっ

キツクする分には問題ないが
434デフォルトの名無しさん:2007/09/30(日) 00:03:36
いや、逆w俺恥ずかしいw
435デフォルトの名無しさん:2007/09/30(日) 00:06:24
>>432
そりゃぁそうだけど、それは自分で new するクラスを選べる場合だけに可能な話であって、すでに存在してる任意のインスタンスに対して出来ることじゃない。
436デフォルトの名無しさん:2007/09/30(日) 00:07:23
オーバライドは可視性を広げる方向にしか許されない。
逆に言えば、可視性に大小関係が必要。

一方、継承はカプセル化を壊すので、
パッケージ単位でカプセル化するパッケージプライベートが
可視性が狭いのは妥当
437デフォルトの名無しさん:2007/09/30(日) 00:09:41
>>431
そっちの方がマニアックな例だと思うぞ

>>429
もとの疑問ってなに?
違いがあるかないかってことなら、「ある」でファイナルアンサー
438デフォルトの名無しさん:2007/09/30(日) 00:10:23
>>435
だから、コンパイルエラーになるってのw
439431:2007/09/30(日) 00:16:42
>>437
他に思いつかなかったぽ
しかし、よく知っていたなswichの例なんて

最初の疑問は単純に
static final NUM = 10;

static final NUM;
sattic {
  NUM = 10; // あるいは何らかの計算値
}
で、代入する位置が違う事が、なんらかの影響を及ぼすか?って話かと。
結論としては、NUMが不変な変数としては一緒だが、その値がリテラルかどうかという値があるという話だと思われ。
440デフォルトの名無しさん:2007/09/30(日) 04:21:19
単にstaticイニシャライザはクラスロード時に実行されるから、
ブランクfinalが初期化されなくてswichの評価時にコンパイルエラーになるだけじゃないの?

staticイニシャライザはJNIとその関連フィールドを初期化するためにあるようなものだから、
"ただのブランクfinal"をstaticイニシャライザで初期化しようって発想が間違ってるよ。

あと上であったC風に{}でスコープ隠すってのは、javaの思想としては間違ってるね。
文法として無名クラスのインスタンス化やstaticイニシャライザ文があるから副作用的にそういうことが出来るだけで。

スコープを最小化したい場合はes4みたいにletスコープがあればいいけど
スコープレベルがブロック単位なjavaには可読性を落とすだけだね。
441デフォルトの名無しさん:2007/09/30(日) 07:29:23
assertと非チェック例外を使うべき場面が自分には同じに見えてしまう
んですが、実際にはどのように使い分けるべきなんでしょうか?
442デフォルトの名無しさん:2007/09/30(日) 09:32:59
>>441
それ根本的にassertを理解していないぞ
assertは -ea で有効にしなきゃチェックされない

よく使うのは
public method の引数チェック → if + 実行時例外
これはどんな時にでもチェックすべき項目

逆にクラス内でしか状態が変わらない変数pがあったとして、実装上は0とはならない。
そんなときには、
assert p != 0;
int result = hoge / p;
とassert を使用してゼロ除算を念のためチェック
443デフォルトの名無しさん:2007/09/30(日) 09:36:33
>>441
似たようなもんだと思うよ。俺は最初assert使ってたんだが、今は非チェック例外使ってる。
細かく違いを挙げると、

assert利点
VM引数で有効/無効を制御できる
大抵一行なので見やすい
(せいぜい等価評価だが)無効にすることで余計な計算を省ける

assert欠点
C系からの移住者は、-eaを知らずになぜ効かないのか悩む(俺)
コードのみを移植しても、有効にはならない
エラーの内容が、例外クラスからはわからない(必ずAssertionError)

非チェック例外利点
必ず実行される
コードをコピーしても挙動は同じ
投げる例外で、ある程度原因がわかる(IllegalArgumentExceptionとか名前でわかる)

非チェック例外欠点
必ずコードが複数行になるので、場合によっては見にくい
有効、無効を制御できない

あとはここが参考になるか。

アサーションを使用したプログラミング
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/lang/assert.html
444443:2007/09/30(日) 09:43:44
まあ、assertの代わりに非チェック例外を使うってのならあんまり変わらないでしょ。
でも、使い分けるのなら、>>442の言うように事前/事後条件のチェックにはassertを、
publicなメソッドの例外は非チェック例外を使うのが一般的か。
個人的には、Javaのassertは文法が変則的だし、VM引数とかややこしいから
全部非チェック例外でいいんでないかとも思う。
チェック無効にして得られるパフォーマンスなんてたかが知れてるし、
それよりも有効/無効を制御する面倒さの方がコストが高い。

assertと同様の使い方でもっとスマートにできるのがAspectJ。
これなら事前/事後条件チェックを完璧に記述できるし、こっちはリリース版にソースも残らない。
もっとも、あの重さは何とかしてほしいが・・・。
445デフォルトの名無しさん:2007/09/30(日) 10:13:09
Javaのassertion はあくまでデバッグ用
>443のいうよう全て非チェック例外で行うのもいいんだが、1つの視点として単体テストがある。
つまり、public メソッドの引数チェックとその確認は単体テストで通すべき、クラス(メソッド)の仕様。

ところが、privateで外部から変更されないインスタンスフィールドに対して、状態チェックを行い単体テストをするのは流石に冗長。
そもそも、そんなありえないような状況を想定しているわけだ。

このようなケースではassertionが有効
単体テストの時には有効にして、念のためチェックもやらせておくことで品質があがる
446デフォルトの名無しさん:2007/09/30(日) 11:54:56
>>402
こっちで質問したほうがいい。
Java標準低速GUI 6 AWT/Swing
http://pc11.2ch.net/test/read.cgi/tech/1190807478/
447デフォルトの名無しさん:2007/09/30(日) 12:33:26
Seqencerを使ってMIDIをループ演奏させているんですが、
1ループ終わるごとに、プログラムサイズが1MBほど増加してしまいます。
ループが終わるごとにclose()したりしてみましたがうまくできません。
メモリ消費をしないような対処法は無いでしょうか。
448デフォルトの名無しさん:2007/09/30(日) 12:40:17
449デフォルトの名無しさん:2007/09/30(日) 12:47:57
>>447
プロファイラ使ってメモリリークの場所探すとか。
あと、こっちも面倒だがfindbugsとか使えばメモリリークしやすいところがわかるってばっちゃが言ってた。
450デフォルトの名無しさん:2007/09/30(日) 13:30:03
>>447
そのプログラムサイズってのはどうやって測ってる?
gcかけても解消しない?
451デフォルトの名無しさん:2007/09/30(日) 13:30:17
明快Javaってどうですか?
452デフォルトの名無しさん:2007/09/30(日) 14:16:41
質問です。
java.util.concurrentのExecutorsからスレッドプールを作って非同期処理をやろうしたら問題点が。
それは、各ワークスレッドでRuntimeExceptionやAssertionErrorが発生したときに
処理がひっそり落ちたままで気がつかないということです。
いろいろ調べて、Thread#setDefaultUncaughtExceptionHandlerやsetUncaughtExceptionHandlerを
設定したりして見ましたが、なぜかキャッチしてくれません。
これってひょっとして、ThreadPoolExecutorの内部で握りつぶされてませんか?
仕方がないので、Runnabl#runやCallable#callの中身を丸ごとtry〜catch(Throwable t)で囲んでいますが、
もう少しスマートな方法やイディオムは無いでしょうか?あれば教えてください。

きっと、大事なところを見落とした頓珍漢な質問だと思いますが、よろしくお願いします。
453デフォルトの名無しさん:2007/09/30(日) 14:40:09
そんなことなさそうだぞ
今setDefaultUncaughtExceptionHandlerやsetUncaughtExceptionHandlerを試してみたが、ちゃんと働く
ちゃんと設定されてないか、自分で握りつぶしてるんじゃない?

Callableに関しては、Future#getを呼べば発生した例外が伝達されるはず
454デフォルトの名無しさん:2007/09/30(日) 15:14:33
>>450
タスクマネージャです。
gcをかけても変わりません...
455デフォルトの名無しさん:2007/09/30(日) 15:17:52
>>452
これで普通にcatchできてるけど。できないっていうソースが出ないと何が悪いか分からない。
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
System.out.println(t);
System.out.println(e);
}
});
Executors.newCachedThreadPool().execute(new Runnable() {
public void run() { throw new RuntimeException(); }
});
456デフォルトの名無しさん:2007/09/30(日) 15:30:43
>>454
タスクマネージャか・・・あれあんまり当てにならな・・・
jconsoleで見てみたらどうだろう。

それと、ループするごとに1MB増えるのなら、100回ループすれば100MB増える?
そうだとしたら問題あるが、それともどこかで頭打ちになる?
457デフォルトの名無しさん:2007/09/30(日) 15:42:12
>>453>>455
ありがとうございます!解決しました
453さんのおっしゃるようにgetのコールまで伝達されないのが原因のようです

ちなみに、不具合が出るソースは下記です
submitをexecuteに変えると即座に伝達されるようです
callableかrunnableかどっちにしようか検討したりしたため、ずっとsubmitでやってました

import java.util.concurrent.Executors;
public class TestException {
public static void main(String[] args) {new TestException();}
public TestException() {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
System.exit(-1);
}});
Executors.newCachedThreadPool().submit(new Runnable() {
public void run() {throw new RuntimeException();}
});
}
}
458デフォルトの名無しさん:2007/09/30(日) 15:43:18
>>452
そんなことはない
call() で定義した例外は全て TaskResult に積まれる
get()で結果を取得しようとすれば、ExecutionException が発生する
実際に発生した例外は中にラップされているのでgetCauseで取り出す

なんか使い方を根本的に間違えているんじゃないか?
459デフォルトの名無しさん:2007/09/30(日) 15:48:38
TaskResult -> FutureTask
460デフォルトの名無しさん:2007/09/30(日) 15:48:43
>>457
それ、submitしたらFutureが返ってくるでしょ
その結果をgetするんだよ
461デフォルトの名無しさん:2007/09/30(日) 15:54:26
switch 文の case は異なる値しか取れないはずなので、
それが判断できるよう、定数(リテラルを含む)でなければならないっぽい。

ブロックがイニシャライザの副産物であるという話は聞いたことがないな。
よく、横着して別メソッドにせずに case 文にブロックを使ってる。
リファクタリングするような状況になったら、だいたい switch 文まるごとだし。
462デフォルトの名無しさん:2007/09/30(日) 15:58:30
>>441
昔のジャバワールドの記事で、
事前条件チェックは全部アサーションでやっちゃえばいいんじゃないの?
みたいな記事が載ってた。

-ea を使うかどうかは使う側の責任で、
使われる側の責任ではない、みたいな。
463デフォルトの名無しさん:2007/09/30(日) 16:12:34
assertはswitch文のdefaultとかif文の最後のelseで取りこぼしが無いかチェックするために使ってるなー
464デフォルトの名無しさん:2007/09/30(日) 16:22:23
>>462
事前チェックとしてもpublicで公開されているならばそれはマズイだろ
465デフォルトの名無しさん:2007/09/30(日) 16:25:12
事後条件や不変条件ならいいんじゃない。
466デフォルトの名無しさん:2007/09/30(日) 16:33:53
>>458>>460
ありがとうございます。簡略化した上記のソースでもFuture.get()すると例外が伝搬するのを確認しています

ただ、実際のソースでは、Future.isDone()は使用するものの、get()は特に使用しない仕様なのです
非同期の計算結果は各スレッドで勝手にストアするからです
これは、お前の設計が悪い、の一言でしょうか?
467デフォルトの名無しさん:2007/09/30(日) 16:37:54
エラーもストックすれば〜
468デフォルトの名無しさん:2007/09/30(日) 16:38:13
インタフェースに事前条件を書けないのは痛い。
リスナーのイベント引数の null チェックなんて、
public だからって、言語的に保証されてないからって、
いちいち、おいらは書きたくない。

非チェック例外を使うなら、
Commons Lang の Validate クラスが簡単。

アスペクトを使って入れるなら、
アノテーションと組み合わせた Contract4J が気になる。使ったこと無いけど。
ただ、条件は文字列で指定するので、リファクタリングの自動化は難しいと思われ。
また、実装・継承におけるアノテーションの癖も気をつける必要があるっぽい
469デフォルトの名無しさん:2007/09/30(日) 16:49:37
>>468
俺は現役でAspectJのアノテーション版使ってるんだが、Contract4Jなんてものがあったのか。知らんかった。
470デフォルトの名無しさん:2007/09/30(日) 16:59:28
>>468
ならば自分で言語作れば?

とはいえ、7.0あたりではアノテーションを使用した引数チェックやロギングは標準実装されそうな話もある
471デフォルトの名無しさん:2007/09/30(日) 17:03:18
>>466
そりゃ設計が悪い
>467にも書いてあるけど、Workerが実行結果をストアするのは構わん。
でも、例外が起きたってのも立派な実行結果じゃねーの?
自分で握りつぶしておいて何言ってんだよ。

Future<?> submit(Runnable task) を使うならばそうしろ
その欠点を補う為に、Callableは戻り値が指定でき、例外もthrowできるんだぜ
472デフォルトの名無しさん:2007/09/30(日) 17:35:53
>>467>>471
大変参考になります
なるほど、例外発生も確かに結果ですよね。ストアします

ついでに恥のかきすてということで質問させてください
java.util.concurrentのポリシーについてなんですが、
なぜFuture.get()とポーリングする形式なんでしょう?
非同期計算の終了時にイベントなりで終了通知してもらう方が便利なような気がするんですが。
メインスレッドがワーカースレッドを作って計算させている間、メインも別の仕事したいじゃないですか
Future.isDone()で何度もチェックし続けたり、get()でブロックされるというのはどうも勿体ないような
なんかやっぱり根本的に理解していないのかもしれませんので冷や汗ものですが…
473デフォルトの名無しさん:2007/09/30(日) 17:49:20
>>472
第1にブロッキングとポーリングは全く異なる。
ループでisDone() でポーリングする方法は従来のマルチスレッドでも可能な形。
これに対してFuture.get() でブロッキングする方法はExecutorフレームワークの中で最適な方法でポーリングしてくれる為、自前でポーリングするよりずっと負荷は減る。

メインスレッドは、ワーカースレッドを作成した後に別の仕事をするだろう。
だけど、get() でブロッキングして結果を処理するスレッドを立ち上げるとどうだ?
例えば、Swingを用いて計算にコストのかかるワーカーを作成し、実行させる。
EDTは指示のみを行い、さらに処理が終わったら画面の更新を行うスレッドを実行させて処理を返す。

確かにお前さんの言うように勿体無いかもしれないが、それ以上に設計も実装も簡単になりバグが減る効果のほうが重要。
詳しくは最近出た並行処理の本を嫁。
設計者のポリシーが全て書いてあるから。
474デフォルトの名無しさん:2007/09/30(日) 17:54:57
>>472
Futureでポーリングするっていうのは、根本的におかしいような気がする。
結局のところ何がしたいのか言ってみ。
それに合う別の方法があるよたぶん。
475デフォルトの名無しさん:2007/09/30(日) 18:03:05
Futureのgetってのはここで本当に最終結果がほしいってときに呼ぶもんだ。
ブロックされてしまうんじゃなくてブロックしてくれるのがありがたいんだろうが。
476デフォルトの名無しさん:2007/09/30(日) 18:10:20
>>473
>自前でポーリングするよりずっと負荷は減る
知りませんでした。ためになります

>だけど、get() でブロッキングして結果を処理するスレッドを立ち上げるとどうだ?
もう一枚噛ますんですね、確かにこれが簡単で便利そうです
早速書き直したいと思います
他の皆さんもご回答ありがとうございました
477デフォルトの名無しさん:2007/09/30(日) 18:17:43
>>461


{
int n=hoge;
hogehoge
}

はインスタンスイニシャライザ。
478デフォルトの名無しさん:2007/09/30(日) 18:32:15
プールのスレッドに UncaughtExceptionHandler をセットするには、
ThreadPoolExecutor のコンストラクタに渡す ThreadFactory を作って、
実行する前に親スレッドから設定するのが正道っぽい?

実行対象のタスクが吐き出す例外を対処するには、
タスクをラップするか、
ThreadPoolExecutor の afterExecute メソッドをオーバライドするらしい。
(execute の場合)
479デフォルトの名無しさん:2007/09/30(日) 21:11:49
気になったんだけど、publicメソッド内で呼ばれるprivate関数の事前条件違反は例外とassertどっちかな?
480デフォルトの名無しさん:2007/09/30(日) 21:32:23
>>479
基本は assert
外部から影響を受けるフィールド等であれば、例外の場合もあるけど
481デフォルトの名無しさん:2007/09/30(日) 21:42:51
public メソッド内で例外でチェックしているなら、
private メソッド内では、assert

public でチェックしてないなら、
private メソッドで例外でチェック

じゃね?
482デフォルトの名無しさん:2007/09/30(日) 21:49:13
>>481
publicでチェックしろ
483デフォルトの名無しさん:2007/09/30(日) 21:54:35
基本的にassertはリリース時に無効にするだろ。
だからpublic内でもprivateメソッドはassertでおk。
484デフォルトの名無しさん:2007/09/30(日) 22:31:27
質問です。

例えば以下のようなstaticのメソッドがあるとします。

public static boolean check(int number) {
if (number == 0) {
return true;
}
return false;
}

このメソッドが複数のスレッドから同時多発的に呼び出される場合、
メソッドの修飾子で同期(synchronized)を取っておかないと正しい
返却値が得られない(スレッドAからの呼び出しに対する結果がスレ
ッドBに返却されてしまうなど)可能性はありますか?
485デフォルトの名無しさん:2007/09/30(日) 22:34:21
ない
486デフォルトの名無しさん:2007/09/30(日) 22:38:52
>>484
マルチスレッドで気をつけないといけないのは複数のスレッドで共有していて変化してしまうものを扱う時。
そのメソッドには複数のスレッドから同時にアクセスされて変更されるようなものがない。
numberはローカル変数なのでスレッド個別に持っている。
487デフォルトの名無しさん:2007/09/30(日) 22:48:52
そして呼び出し側でstaticなnumber変数を渡してるというおちとか。
ああもちろんこのメソッドの問題ではない。
488デフォルトの名無しさん:2007/09/30(日) 22:51:47
>>487
値渡しなんだからstaticだろうと関係ないだろ
489デフォルトの名無しさん:2007/09/30(日) 22:55:56
>>488
プリミチブじゃない変数は実態は1つしかないぞ。

真の意味で値渡しなのはプリミティブな変数だけ。
プリミティブじゃない変数は、実態への参照の実態を渡してるんだぜ
490402:2007/09/30(日) 22:58:23
>>446
誘導ありがとうございます。
今までこういうことなかったので、落ち着いて見直していたら右クリックをmouseReleasedで検出するときに選択を勝手に単一にしてしまってました。
スレ汚してすみませんでした。
491デフォルトの名無しさん:2007/09/30(日) 23:00:17
>>489
落ち着け、今回のケースは少なくともプリミティブだ。
それにJavaに参照渡しってのは存在しない。
492デフォルトの名無しさん:2007/09/30(日) 23:09:15
実体の参照の実体を渡すから参照渡しではないってこと?

そもそも、実体の参照って考えから間違ってるとか?
493デフォルトの名無しさん:2007/09/30(日) 23:10:53
同じ private メソッドに単に処理を委譲する複数の public メソッドがあった場合、
それぞれの public メソッドで事前チェックの記述をするのは重複じゃね?

また、スーパクラスの public でないコンストラクタを呼び出す場合は、
その前に事前チェックを入れるのは困難。
コンストラクタだけは特別扱いすればいいのかもしれないけど
494デフォルトの名無しさん:2007/09/30(日) 23:15:06
実体の参照の実体?
Foo foo = new Foo();
としたならば、fooはオブジェクトの参照を格納する変数であり、値はオブジェクトの参照またはnull
メソッドに渡された場合は、その『値』が渡される。
つまり、
int i = 10;
として、メソッドに渡されているのと何も変わらない。

もし、参照渡しであった場合、bar() を呼び出すとfooの参照にnullが代入される事になる
Foo foo = new Foo();
bar(foo);
// foo is null or not ?
-------
void bar(Foo foo) {
  foo = null;
}
495デフォルトの名無しさん:2007/09/30(日) 23:21:31
>>493
たぶん、メソッドの名前とかアクセス制限を見直すべき状況じゃね?
ありがちなのはメソッドをオーバーロードしている状況だろうけど。
そういう場合は、一番最後に呼ばれるpublicでまとめてやればいいと思う。
まとめて処理するところがprivateだったとしたら、自分ならprotectedにするな。
そうしておかないと、継承した時にまとめて処理を変えられないから。

コンストラクタは特別だろう
privateだろうとネストクラスでもない限り、例外を投げるべき。
496デフォルトの名無しさん:2007/09/30(日) 23:27:36
>>494
変数=実体への参照

実体への参照の参照ではなく、実体への参照の実体として渡すってことか。

考えてることは同じでも、先生のように分かりやすく伝えることが出来ないとダメね
497デフォルトの名無しさん:2007/09/30(日) 23:32:51
>>494
というよりは実体とか曖昧な用語を使っている事がダメなんだと
実体への参照の実体とか、意味解らんよ
498デフォルトの名無しさん:2007/09/30(日) 23:33:48
1.JAVAは参照渡しはないよ
2.でも、変数は実体への参照で、実体への参照の実体を渡すんだよ。

初心者に両方同時に伝えても混乱させるだけだから説明しない。
初心者はしばらくすると、変数の中身がおかしくなったとか言い出すので、そこで2に気づかせる。

よくある話
499デフォルトの名無しさん:2007/09/30(日) 23:35:57
>>498
初心者に参照渡しって用語を覚えさせなければ済むじゃん
最初から変数に参照が入っていると教えちゃダメなの?
500デフォルトの名無しさん:2007/09/30(日) 23:39:52
>>499
よくある入門本の記述

1. 変数は値を格納する箱のようなものです
2. オブジェクトの場合もintとかと同様に変数に格納できます

これが諸悪の根源かと思われる
501デフォルトの名無しさん:2007/09/30(日) 23:45:53
そういう説明の仕方をしてる入門書って本当にあるの?
502デフォルトの名無しさん:2007/09/30(日) 23:50:57
JAVAで初めてプログラムするって人には、「JAVAには参照渡しはありません」って説明しないほうがよさそうだなw
503デフォルトの名無しさん:2007/09/30(日) 23:51:30
銭湯の靴箱の木札とロッカーでオブジェクトと変数の説明をしてた先生がいたが、
生徒達に銭湯の話が通じていなかった。
銭湯が少なくなったのが諸悪の根源かと思われる
504デフォルトの名無しさん:2007/10/01(月) 00:06:04
>>503
じゃあ居酒屋の下駄箱でいいんじゃね?
505デフォルトの名無しさん:2007/10/01(月) 01:30:36
>>501
プログラム初心者にもやさしいと謳っている本は大抵
506デフォルトの名無しさん:2007/10/01(月) 01:33:38
>>487だが、書き方が悪かったな。ってか言葉足らずだったな。
呼び出し側で例えばstaticな共有変数を使ってて、
それが複数スレッドから利用されるときに適切な同期を行ってなければ、
メソッドに渡す変数の値自体が問題あるかもしれないってこと。
※もちろん値渡しでも同じこと

まあ冗談で言ってみただけだ。
507デフォルトの名無しさん:2007/10/01(月) 03:40:01
書籍「Java 並行処理プログラミング」に、揮発性変数の説明のところで、
”SynchronizedInteger のメモリ可視性効果は、揮発性変数よりもやや強力”
と注釈に記述されているのですが、参照しろといわれている章を見ても、分かりません。

言語仕様3版になったときの変更のことを意味しているくらいしか
思い浮かばないのですが、本文には第3版の仕様の内容が書いてるので、
違うっぽいです。

同じじゃないんすか?エロイ人教えて
508507:2007/10/01(月) 03:48:49
あ、AtomicInteger と混同してた。どのみち疑問は同じなんだけど。
本に載ってる SyncrhozniedIntegerは、以下のような感じ

public class SynchronizdInteger {
private int value;

public synchronized int get() { return value; }
public synchornized void set(int value) { this.value = value; }
}
509デフォルトの名無しさん:2007/10/01(月) 05:56:11
>>500
なにそのやさしいjavaのコピペ?

javaの教本なのに参照渡しがどうのこうの説明してる本もあるな。
510デフォルトの名無しさん:2007/10/01(月) 06:27:43
>708
手元に本がないので確かな事はいえないが(読んではいる)、
this.value = value; の箇所で、同期が取られている分、揮発性変数よりも協力という意味じゃないのか?
揮発性変数にした場合、this.value とvalueを参照しに行く部分ではAtomic性を保証し、 = value で代入する部分でもAtomic性を保証する
だが、全体の代入処理に関しては以前非同期のままだから意図しない代入が行われるかもしれない(仕様次第)
511507:2007/10/01(月) 08:25:16
>>510
>全体の代入処理に関しては
すまん、ここわかんね

あと、同期の3つの性質(原子性、排他性、可視性)のうち
注釈は、可視性って限定してる。
512デフォルトの名無しさん:2007/10/01(月) 09:47:15
以前H2 databaseのことを書いていた者です。
サーブレット間でDBに入れたデータを渡せないとか言ってましたが、
全くの勘違いでした。
メモリに入っているDBのデータは普通にどこからでも取り出せます。

自分は結局、次のパターンで実装しました。
データを管理するクラスのArrayListを作る。
オブジェクトから上のArrayListのインデックスへHashMapで対応付ける。
513デフォルトの名無しさん:2007/10/01(月) 15:56:59
>>507
volatileは半同期だからじゃない?
volatile変数から値を読み取っても、書き込みは同期されない
volatile変数に値を書き込んでも、読み込みは同期されない
synchronizedは入口で読み込みを同期して出口で書き込みを同期するから、SynchronizedInteger#getを呼ぶだけで完全に同期される
全然違ったらすまそ
514デフォルトの名無しさん:2007/10/01(月) 16:24:30
しかしSynchronizedIntegerでもset(get()++);みたいな事をすれば駄目と。
そのためのアトミック変数と。
515デフォルトの名無しさん:2007/10/01(月) 22:28:41
H2は検索が遅いんだよな。
516デフォルトの名無しさん:2007/10/02(火) 11:16:38
>>514
それ可視性と関係ない
517デフォルトの名無しさん:2007/10/02(火) 11:28:39
>>515
マジすか?
つか何と比べて?
518デフォルトの名無しさん:2007/10/02(火) 13:23:17
すみません。WindowsのJDK1.6u2なんですが、classes.zipってなくなったんでしょうか?
検索しても見つかりませんでした。
519デフォルトの名無しさん:2007/10/02(火) 13:44:10
classes.zipはJava2の時点で消えたんではなかったかな
520デフォルトの名無しさん:2007/10/02(火) 13:50:04
>>517
他人だがH2のベンチマーク 
http://www.h2database.com/html/frame.html?performance.html&main

確かに、トップページのグラフ程の違いは無い気がする
HSQLDBに負けているのもある
521デフォルトの名無しさん:2007/10/02(火) 13:59:39
>>520
HSQLDBには機能的にないものがあるから
H2が負けても仕方がない部分はある
522デフォルトの名無しさん:2007/10/02(火) 14:12:15
<script language="JavaScript">と
<script type="text/javascript">は全く同じなんですか?それともブラウザによって違ったりするんでしょうか
523デフォルトの名無しさん:2007/10/02(火) 14:24:17
>>519
なるほど。やっぱりそうでしたか。
524デフォルトの名無しさん:2007/10/02(火) 14:28:32
>>522
スレ違い、板違いにもほどがある。>>1見ろ。
525デフォルトの名無しさん:2007/10/02(火) 15:25:04
>>520
ども
Client-Serverは遅いって事でしょうかね>>515
Embeddedは早いすね
526デフォルトの名無しさん:2007/10/02(火) 16:05:47
ベンチマークからすると、C/Sが遅いのはIOのせいで、
H2とMySQL自体はほぼ同等の性能と言う気がする。
計測者のPCの性能が上がったらもっと、EmbeddedがC/Sより早くなりそう。
MySQLにもC/C++のEmbedded版があるらしいからそれと比較して欲しい。
スレ違いだな・・・
527デフォルトの名無しさん:2007/10/02(火) 21:52:06
質問です。ArrayListに色々なクラスを登録し制御したいのですが
リストから取り出すときにキャストをしなくてはいけないみたいで、困っています。

ArrayList classs = new ArrayList();

@リストにいろいろ突っ込む
classs.add(new Ringo());
classs.add(new Mikan());
classs.add(new Unnko());
classs.add(new Nurupo());

A取り出し
Iterator it = classs.iterator();
while(it.hasNext()){

Ringo ta = (Ringo)it.next();
Mikan ta = (Mikan)it.next();
Unnko ta = (Unnko)it.next();
Nurupo ta = (Nurupo)it.next();
↑この部分をリストに登録されている型で効率よくしたいのです

ta.draw(g, frame1);
if(ta.isOutOfScreen()) it.remove();
}

どうかお願いします
528デフォルトの名無しさん:2007/10/02(火) 21:55:21
うーん。無理だろ?
そもそもこういう使い方ってあまりよくないんじゃなかったっけ?
ジェネリクスものすごく書きたい。
529デフォルトの名無しさん:2007/10/02(火) 21:58:24
>>527
そのクラスが全部1つのクラスorインターフェースから継承されてるなら

ArrayList classs = new ArrayList();

@リストにいろいろ突っ込む
classs.add(new Ringo());
classs.add(new Mikan());
classs.add(new Unnko());
classs.add(new Nurupo());

A取り出し
Iterator it = classs.iterator();
while(it.hasNext()){

Super ta = (Super)it.next();
↑この部分をリストに登録されている型で効率よくしたいのです

ta.draw(g, frame1);
if(ta.isOutOfScreen()) it.remove();
}

こんな具合にはなる
530527:2007/10/02(火) 22:19:05
>>529
素早いレスありがとうございます。
たしかに継承したサブクラスですが
drawなどのメソッドはオーバーライドして使っています。
大丈夫かな・・・ ちょっと試してみます。
531デフォルトの名無しさん:2007/10/02(火) 22:21:52
>>527
こういうのを使ってみるというのはどうだろう
class FluitsMap{
  private Map<Class<?>,Object> map = new HashMap<Class<?>,Object>;

  public <T> void set(Class<T> clazz, T fluit){
    map.add(clazz,fluit);
  }

  public <T> T get(Class<T> clazz){
    return clazz.cast(map.get(clazz));
  }
}

注意点
・ひとつのクラスにひとつの値しか格納できない
・Generics型は扱えない
532デフォルトの名無しさん:2007/10/02(火) 22:24:42
と、書いてみたはいいが元の文脈を見ると普通にインターフェースでいいな
533デフォルトの名無しさん:2007/10/02(火) 22:27:22
オーバーライドしてんなら問題ないよ

変数の見た目がスーパークラスでも、実際に動くのはオーバーライドしてるメソッドだ
534527:2007/10/02(火) 22:44:33
レスをくださった方々、どうもでした。
>>529さんのやり方で問題なく?動きました。
とりあえず、このやり方でプログラムを肥大化させます。
535デフォルトの名無しさん:2007/10/02(火) 22:50:32
肥大化さすなw
536デフォルトの名無しさん:2007/10/03(水) 01:17:27
質問させてください


<html>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
for(i=0;i<10;++i)
{
window.open(10);
}
-->
</SCRIPT>
</body>
</html>



これに画像を載せる場合、どんなタグをどこに入れればよいのでしょうか
537デフォルトの名無しさん:2007/10/03(水) 01:46:04
538デフォルトの名無しさん:2007/10/03(水) 02:26:12
>>526
H2はLOBファイルが1:1で作られるからC/SでIOの差が顕著なんだと思う。
LOBが1:1ってのはUSBメモリに入れるようなアプリの組み込み用途には厳しかったりする。
HDDガリガリやる事にもなるし。

ほかはpure java組み込みDBでは圧倒的なんだけどね。
539デフォルトの名無しさん:2007/10/03(水) 02:41:12
JAVAのHPでインストールしようとしたら致命的ななんとかかんとかが出てインストール出来ないんですけど
どうすればいいですか?

以前はいけてたんですけど、間違ってアンインストールしたみたいで。。
540デフォルトの名無しさん:2007/10/03(水) 03:26:14
すいません自己解決しましら!
迷惑掛けました><
541デフォルトの名無しさん:2007/10/03(水) 12:01:29
動画を入力としていろいろ処理するときはどんなクラスを使ったらいいんですか?
動画のRGBを処理したいです。
検索してもなにもでないので何かヒントください。
542デフォルトの名無しさん:2007/10/03(水) 12:22:06
>>541
スレ内検索
キーワード:動画 RGB
543デフォルトの名無しさん:2007/10/03(水) 12:22:51
>>537
なんでしょう?
544デフォルトの名無しさん:2007/10/03(水) 12:26:14
>>543
>JavaScript, Ajaxの質問は、ここでは受け付けていません。
545デフォルトの名無しさん:2007/10/03(水) 12:26:26
>>543
1を読めという意味だ。 お前のために要点を引用してやる。

>JavaScript, Ajaxの質問は、ここでは受け付けていません。
>Web製作板をご利用ください。http://pc10.2ch.net/hp/
546デフォルトの名無しさん:2007/10/03(水) 12:26:57
>>544
ありがとうコピペマン
どこ行けばいいの?
547デフォルトの名無しさん:2007/10/03(水) 12:30:23
>>545
そこいってきたよ
迷惑かけたね
548デフォルトの名無しさん:2007/10/03(水) 13:25:09
>>546
樹海に行けば良いと思うよ。
549デフォルトの名無しさん:2007/10/03(水) 14:19:24
>>541
http://www.google.co.jp/search?num=100&hl=ja&q=JMF+Java+Media+Framework+RGB
分からんけど、JMFでできなきゃ色々自作するしかないと思われる。
550デフォルトの名無しさん:2007/10/03(水) 14:24:07
pure javaじゃないし標準APIでもないが一応SDLのjavaポートがある。
551デフォルトの名無しさん:2007/10/03(水) 21:01:21
>>538
恥をしのんでお伺いしますが「LOBファイル」というのがわかりません。
教えていただけませんでしょうか。
何の略か、または何という語でぐぐればいいかだけでも結構です。
よろしくおねがいします。

# ラージオブジェクト型とは別ですよね?
# 1:1 というのが何と何の一対一なのかがわからず。すいません。
552デフォルトの名無しさん:2007/10/03(水) 21:04:41
>>551
H2 LOB でも結構ヒットすんぞ
553デフォルトの名無しさん:2007/10/03(水) 21:14:25
H2はドキュメントが真っ先に日本語訳されたりと、作者が日本びいきだから使いやすいよ。
なにせ作者本人が日本語の質問に答えてくれたらしいからな(返事は英語だったらしいが)。
今後もサポートは熱いだろうし、将来も期待できてマジオススメ。
554デフォルトの名無しさん:2007/10/03(水) 23:55:24
ぼうようってオブジェクト指向理解してないだろ…
555デフォルトの名無しさん:2007/10/04(木) 00:05:52
こんなところで愚痴らずに本人に人心を惑わすなと直接指摘してやるべきだろう
556デフォルトの名無しさん:2007/10/04(木) 00:44:47
コンパイル後に生成されるファイルについて

>javac *.java
こんな感じに何も指定しないとバイトコードとソースがごちゃ混ぜになって混沌としてくるので、

>javac *.java -d tmp
こうするとなかなか綺麗にまとまるんですが、実行するために逐一cd tmpとしないといけないので面倒です。


皆さんどうしていますか?
557デフォルトの名無しさん:2007/10/04(木) 00:47:01
eclipse使ってるからclassファイルなんて気にならない
558デフォルトの名無しさん:2007/10/04(木) 00:47:24
java -cp tmp Hogehoge
559デフォルトの名無しさん:2007/10/04(木) 02:22:28
マウスポインタの移動速度を変更することはできますか?
ある窓内にポインタがある時だけ、移動速度が変わるようにしたいのですが。
560デフォルトの名無しさん:2007/10/04(木) 03:12:29
>>556
二つ窓を開いておけば?
561559:2007/10/04(木) 04:18:21
すみません。自己解決しました。
562デフォルトの名無しさん:2007/10/04(木) 04:19:36
>>560
バッチ書けば良いだけだろ。
563デフォルトの名無しさん:2007/10/04(木) 12:08:00
javaで音量の変化を波形でバンッってわかるようにしたいんですが、なんせ無知なもんでググってもかかりません。
どうすりゃいいですか?
564563:2007/10/04(木) 12:26:18
追加:ビデオカメラで撮った映像の音の変化です。(AVI形式になるのかな)
565デフォルトの名無しさん:2007/10/04(木) 15:49:53
質問します。

String[][] A = new String[100][10]
String[][] B = new String[100][11]

とあったときに,Bの[x][0]には1次元目の要素番号自体(つまりx)を入れておき,
B[x][1-10]をAの[x][0-9]で埋めたいとき,どのようなコードがもっともよいでしょうか?

566デフォルトの名無しさん:2007/10/04(木) 16:03:19
もっとも良いかどうかは知らないが

for(int x=0;x<100;x++){
 B[x][0] = String.valueOf(x);
 System.arraycopy(A[x], 0, B[x], 1, 10);
}
567デフォルトの名無しさん:2007/10/04(木) 16:16:25
javaでiniのような設定ファイルが欲しくなったので調べてみると、
iniはもう古い、糞、XML使えってのが大方共通の主流意見みたいだった。

XMLの基本のきの字も知らなかったので、色々調べてみる。
その内だんだん全体像がつかめてきたので今度は実装方法を調べて
―これまた情報が少ない上に古い―試行錯誤の後にようやく完成した。やったー。

そんで、ふう疲れたなあと余韻に浸りながらネットサーフィンしてたらjava.util.Propertiesの存在を知る。
おいウェjf;あおいjlk;xzjvc「あ;。;
568デフォルトの名無しさん:2007/10/04(木) 16:21:34
>>567
独り言はチラシの裏にでも書いてくれ。
569デフォルトの名無しさん:2007/10/04(木) 16:21:54
>>566

ありがとうございます。求めていたようなコードです。

System.arraycopy,知りませんでした・・・
570デフォルトの名無しさん:2007/10/04(木) 16:24:47
>>567
用途によるけど java.util.prefs.Preferences というものもある
571デフォルトの名無しさん:2007/10/04(木) 17:01:20
>>570
あれはちょっとシステム依存が・・・。
572472:2007/10/04(木) 17:54:44
アドバイスに従ってコードを書き直したら
クラスが3つも不用になって消滅した上、全体の行数もばっさり半分ぐらいになりました
心なしか動作もきびきび速い気がします

Java並行処理プログラミング
http://www.amazon.co.jp/1/dp/4797337206/
を今日買ってきましたのでこれから勉強したいと思います

皆さんありがとうございました
573デフォルトの名無しさん:2007/10/04(木) 18:20:10
>>572
オレとしては、こちらのほうがお勧めだけど。

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」
http://www.amazon.co.jp/dp/4797331623/
574デフォルトの名無しさん:2007/10/04(木) 18:34:23
>>572-573
>>572の本も悪い本じゃないけれど、
ちょっと難しく感じるかも知れないね。

>>572の本は、たしか訳者のサイトに、
翻訳の訂正などもあったので見ておくと良いかもね。
>>573の本もお勧め。文章が分かり易いのが良い。
575デフォルトの名無しさん:2007/10/04(木) 19:08:36
>>573
両方読むとちょうどいいと思う。
Java並行処理プログラミングは1.5で導入されたフレームワークの教本ってのが大きいと思うぞ。
なにせ作者の本だからな
576デフォルトの名無しさん:2007/10/04(木) 19:24:58
Xmlといえばなんでjdomは本筋とマージされないの?
最初w3c標準の方使っててむちゃくちゃ面倒だった。
577デフォルトの名無しさん:2007/10/04(木) 21:10:49
DOM オルタナティブは、JDOM、DOM4J、XOMと、いろいろあるからなぁ
578デフォルトの名無しさん:2007/10/04(木) 22:04:23
名前にDOMがつくだけで実際には全く別物のパーサをいれても素人が混乱するだけだろ。
xml apiなんて異常に充実してんのに低レベルに位置するパーサーをこれ以上増やす意味はない。
579すみません。:2007/10/04(木) 23:36:50
重複していたらすみません。
単刀直入にお聞きします。
プロキシランダムのページを作成したいのですがどのように作成するのか教えてくれませんか?
580デフォルトの名無しさん:2007/10/04(木) 23:56:25
vipperとしては釣り針には全力で食いつきたいところだがここはエスパーさんに譲ることにする。
581デフォルトの名無しさん:2007/10/05(金) 01:31:11
質問です。2の入力した乗数(8ならば256)をfor文を使って求め、答えを表示する。
どうやって書けばいいのでしょうか?
582デフォルトの名無しさん:2007/10/05(金) 01:36:23
>>581
一応再帰/非再帰版を書いておくと、

//非再帰版
int answer = 1;

for (int i : kaijo)
 answer *= 2;

// 再帰版

int _2kaijo(int kaijo) {

 if (kaijo == 0)
  return 1;
 else
  return 2 * _2kaijo(kaijo - 1);
}


後、微妙にすれ違いだから、今度からJavaの宿題スレに言った方がいいぞ。
583デフォルトの名無しさん:2007/10/05(金) 03:34:20
Javaの標準ライブラリで、'< > & "' を '< > & "' にエスケープしてくれるユーティリィ関数はありませんか。
作るのは難しくないんですが、Javaで標準的に使われているものがあればそれを使おうと思っています。
584デフォルトの名無しさん:2007/10/05(金) 04:06:57
前後の違いが分からない
585デフォルトの名無しさん:2007/10/05(金) 04:18:50
後者は一つ目のシングルクォートの前に空白があるな。
586デフォルトの名無しさん:2007/10/05(金) 04:31:51
&amp;と書きたかったのだろう。
587デフォルトの名無しさん:2007/10/05(金) 04:38:47
&&amp;とやればいける?

そういやなかったような。たいていフレームワークで準備されててそれ使ってるよ。
588デフォルトの名無しさん:2007/10/05(金) 04:59:05
>>587
>&&amp;
何か違うと思う。
589デフォルトの名無しさん:2007/10/05(金) 05:09:17
&amp; と掲示板に表示するための方法のことを言ってるのだが、
'< > & "' を '&lt; &gt; &amp; &quot; ' に と書きたかったわけだろ。

&amp;amp; でいけるね。
590デフォルトの名無しさん:2007/10/05(金) 07:44:06
>>583
専用の関数を作るほどじゃないと思う
s = s.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
で済むし
591デフォルトの名無しさん:2007/10/05(金) 07:44:51
quot忘れてた
まぁ脳内補完よろ
592デフォルトの名無しさん:2007/10/05(金) 09:01:52
サーブレットについて質問なんですけど、ResultSetなどでデータベースの
テーブル一覧を得ることは可能ですか?
593563:2007/10/05(金) 10:13:34
お願いします。
594デフォルトの名無しさん:2007/10/05(金) 10:21:45
>>592
DBによるが基本的に出来るハズ
通常、システム系のテーブルの中に、定義されているテーブル一覧を格納したテーブルがある。
そのテーブルに対し適切なSQLでテーブル一覧を引っ張ってくればOK
もしくは、DBによっては専用のSQLが用意されているかもしれない。
この辺はDBに依存する部分なので、どんなDB使うのかによる。
595デフォルトの名無しさん:2007/10/05(金) 10:27:40
>>593
>563は建築屋で言えば犬小屋もろくに作れないレベル
ところが質問の内容は南欧風一戸建ての建て方を教えてくれというレベル
596デフォルトの名無しさん:2007/10/05(金) 10:45:10
初心者ではないが、初歩的な質問。
クラス名の命名規則は、先頭文字が大文字となってるけど、
小文字から始めて何か弊害とかあるかな。
597デフォルトの名無しさん:2007/10/05(金) 10:51:33
ファイル名も変えないといけなくなる
598デフォルトの名無しさん:2007/10/05(金) 10:52:35
>>592
MySQL なら show tables;
599デフォルトの名無しさん:2007/10/05(金) 11:15:07
アンパサンド問題でハマるわけか。
600デフォルトの名無しさん:2007/10/05(金) 12:35:24
>>576
クラス名は大文字から、メソッド名や変数は小文字から、という規則があるのでソースコードを読むときにヒントとなる
なんで、小文字から始めてもその場での弊害はないけど、後から自分でも読みにくいし、チームで開発していると読みにくくて仕方ない
601596:2007/10/05(金) 14:00:15
>>600
個人開発だからいいかな。いちおう命名規則にはうるさい人間なんだけど、
リフレクション使うときに小文字だと余計な変換がなくて楽な部分があるから。
602デフォルトの名無しさん:2007/10/05(金) 14:50:13
>>601
リフレクションを使うときにクラス名の先頭が大文字だとどういう余計な変換があって楽じゃなくなるの?
603596:2007/10/05(金) 15:07:00
>>602
サーブレットで、リクエストURLのファイル名部分がindex.jspならIndexControllerクラスで処理、
submit.jspならSubmitControllerで処理みたいなことをやってるんで。
indexController,submitControllerになっておけば、リフレクションするのに楽。
index_hoge_poge.jspとか長いファイル名になってもindex_hoge_pogeControllerで対応できる。
別にファイル名をIndex.jspとかIndexHogePoge.jspにしてもいいんだけど、
なんとなくURLに大文字使うのは嫌な気がしただけ。
604デフォルトの名無しさん:2007/10/05(金) 16:43:37
public void stop() {
if (thread != null) {
thread.stop();
thread = null;
}
}

これはどういう風に変化させれば良いですか?
verj2sdk1.4.1_07
605デフォルトの名無しさん:2007/10/05(金) 16:51:22
何がなんだかわからんが、スレッドを強制終了するな。
停止したければinterrupt()しろ。
そしてタスクの中身でinterruptに応答するように書くんだ。
606デフォルトの名無しさん:2007/10/05(金) 17:17:26
>>605
ありがとうございます><
607デフォルトの名無しさん:2007/10/05(金) 17:54:28
初歩的な質問で申し訳ないです(><)

サブクラスで乱数を用いて発生させた1元配列を
メインクラスに持ち込むには、どうしたらいいですか?
配列じゃなくて、1つの数なら下のように難なくできるのですが・・・

メイン
=====================================================
public class Play1 {
public static void main(String Args[]){

Sub p = new Sub();
p.generate();
System.out.println(+p.generate());
}
}
=====================================================

サブ
=====================================================
public class Sub {
public int generate()
{
int k;
k=(int)(Math.random()*20);
return k;
}
}
608デフォルトの名無しさん:2007/10/05(金) 18:02:20
配列を返せばいいだけだろw
どうせ出力するだけならリストのほうが楽だろうが
609デフォルトの名無しさん:2007/10/05(金) 18:02:26
public class Sub {
 public int[] generate()
 {
  ........
 }
}
610デフォルトの名無しさん:2007/10/05(金) 18:04:56
あとサブクラスという言い方はやめいw
継承したクラスに聞こえるからw

それとこれくらいならわざわざオブジェクトを作らなくてもstaticメソッドで実装したほうがいいだろ
611デフォルトの名無しさん:2007/10/05(金) 18:21:18
>>608-610
ありがとうございます。
609についてですが、
例えば、1元配列の要素数を10個にしたいとして、

public class Play1 {
public static void main(String Args[]){

Sub p = new Sub();
System.out.println(+p.generate());
}
}
=====================================================
public class Sub {
public int[] generate()
{
int i;
int[] k= new int[10];

for(i=0;i<10;i++)
{
k[i]=(int)(Math.random()*20);
}
return k;
}
}

としたのですが、下の方のプログラムにはエラーは出ないのですが、
上の方のSystem.out.println(+p.generate());
の部分にエラーが出てしまいます。

非常に初歩的で申し訳ないのですが、どなたがご教授いただけないでしょうか?
612デフォルトの名無しさん:2007/10/05(金) 18:29:05
配列を + とかできないでしょ。

int[] k = new int[10]; があったとして、

System.out.println( +k ); とか書くのか?
613デフォルトの名無しさん:2007/10/05(金) 18:36:12
1.+p.generate()のプラスの意味がわからない
2.1を直せばとりあえず何か画面に表示できるだろうが、たぶん求めているものではない。
なぜなら、配列の文字表現はtoStringで取得できるが、この書式が"型@ハッシュコード"になっているから。
中身を表示したければ、ループを使って中身を1つ1つ表示するか、配列のかわりにリストを使うかしろ。
Javaのバージョンが5.0以上ならArrays.toString(int[] a)も使える。
614デフォルトの名無しさん:2007/10/05(金) 18:37:31
>>612
おかげさまで解決しました。
ありがとうございます。
615デフォルトの名無しさん:2007/10/05(金) 18:39:44
>>613
>中身を表示したければ、ループを使って中身を1つ1つ表示するか

この方法で解決済みです。ありがとうございます。
616デフォルトの名無しさん:2007/10/05(金) 19:49:51
なぁ、JAVAの配列ってさ
宣言するときに要素数も決めて記述しないとだめじゃん?

でも必要な要素数が未確定でその後の処理で決まるような場合はどうするの?
からっぽにしたらエラーが出るし多目の要素数で確保しておくのはメモリもったいないし

いろいろ調べたけどわかんない。誰か教えて。
617デフォルトの名無しさん:2007/10/05(金) 19:51:41
>>616
ArrayList使え
それか、要素数が足りなくなったら新たに配列を確保してそっちに元のをコピーしろ
618デフォルトの名無しさん:2007/10/05(金) 19:53:26
>>616
>いろいろ調べたけどわかんない。誰か教えて。
ゆとりのよく使う手だなw
619デフォルトの名無しさん:2007/10/05(金) 19:57:06
>>617
さんくすこ〜検討してみる
620デフォルトの名無しさん:2007/10/05(金) 19:58:26
>宣言するときに要素数も決めて記述しないとだめじゃん?
駄目じゃないよ
621デフォルトの名無しさん:2007/10/05(金) 20:02:25
配列を利用開始する前までに要素数を確定してメモリ確保しないと駄目じゃん?
てことじゃね

ジャヴァの配列の作りの悪さは異常
622デフォルトの名無しさん:2007/10/05(金) 20:21:07
低レベルな扱いをある程度もたせないとコレクションの素材としては使いにくいとか?
まあ継承での共変性とかlengthが関数じゃなくてフィールドだったりすることとか変な仕様は多いわけだが。
623デフォルトの名無しさん:2007/10/05(金) 20:21:09
それ宣言じゃ無くて初期化
624デフォルトの名無しさん:2007/10/05(金) 20:21:56
>>622
ごめん、関数じゃなくてメソッドだな
625デフォルトの名無しさん:2007/10/05(金) 20:39:31
配列.length がフィールドなら、クラス.class もフィールドだな
Javaの配列はおかしいし、オブジェクト以外にプリミティブが用意されているのも変な仕様だな
626デフォルトの名無しさん:2007/10/05(金) 20:49:25
>>625
配列は、Objectです。
627デフォルトの名無しさん:2007/10/05(金) 20:52:20
単純に高速化のためだろうがなプリミティブもlengthがフィールドなのも
素直にリストでも使っとけ
628デフォルトの名無しさん:2007/10/05(金) 21:57:28
本当は配列オブジェクトにlengthフィールドなんて存在しない
629デフォルトの名無しさん:2007/10/05(金) 22:07:19
でも、言語規定では public final field って書いてあるな。
http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7

まさかと思ってリフレクションでとってこようとしたが、失敗した。なにこれ
630デフォルトの名無しさん:2007/10/05(金) 22:36:08
配列のlengthは構文上public final fieldに見せかけているだけで本当のフィールドじゃないよ
631デフォルトの名無しさん:2007/10/05(金) 22:37:05
ttp://www-06.ibm.com/jp/developerworks/java/030808/j_j-dyn0603.html
あった。配列クラスに定義されているフィールドじゃないみたいだ。
Java仮想マシン仕様によると配列の長さを取得するarraylengthって命令があるっぽいので
結構低レベルなところであれこれしてるのかもわからん
でも意味あるんかいな、それ。
632デフォルトの名無しさん:2007/10/05(金) 23:07:01
っっh
633デフォルトの名無しさん:2007/10/05(金) 23:10:54
これからプログラミングを始めて習うんですが、
どちらのコースを受けるか迷ってます。

1.JAVA基礎+サーブレット+UML
2.JAVA基礎+サーブレット+アプレット

HTML・DB・XMLは共通して授業(基礎)があります。

どちらがより未経験者でも需要があるのか
アドバイスいただけませんでしょうか。(スレチならすみません)
634デフォルトの名無しさん:2007/10/05(金) 23:13:51
>>633
需要っていうのは人気があるってこと?それとも役に立つかということ?
人気があるのは上、役に立つのは下。
635デフォルトの名無しさん:2007/10/05(金) 23:14:29
>>634
ごめ、逆だ。アプレットは既に死んでいる。
636デフォルトの名無しさん:2007/10/05(金) 23:14:36
アプレットなんて役に立つの?
637デフォルトの名無しさん:2007/10/05(金) 23:19:37
JavaWebStartのほうがマシだし、それも普及してないし。
とっととJREをモジュール化してローディングを早くしないと駄目だな。
Java6の内にやるらしいが。
638デフォルトの名無しさん:2007/10/05(金) 23:24:42
やさしいJavaとプログラミングレッスンはどっちがいい?
639デフォルトの名無しさん:2007/10/05(金) 23:38:51
633です、レスサンクス。
アプレットは、意味がないですか??
この授業が終わったら、仕事を探します。
未経験可でもOKな実務になりそうなほうを受けたいのです。
640デフォルトの名無しさん:2007/10/05(金) 23:42:30
うるせーよゆとり
641デフォルトの名無しさん:2007/10/06(土) 00:27:02
>>640
>>1
642デフォルトの名無しさん:2007/10/06(土) 02:11:56
getClass..getFields()で得たField[]に対して
それぞれのFieldクラスが示す元の変数(のインスタンス)を得るには
どうすればいいですか?
643デフォルトの名無しさん:2007/10/06(土) 02:35:09
644デフォルトの名無しさん:2007/10/06(土) 09:55:12
java.awt.event.WindowListener#windowIconified(WindowEvent) では
javax.swing.JWindow インスタンスが
「デスクトップの表示」(Windowsキー + D)によって最小化されたことを
検知できないようなんですが、
代わりに何を使えばいいでしょうか。
645デフォルトの名無しさん:2007/10/06(土) 10:49:20
>644 Windowsキーの無いキーボード
646デフォルトの名無しさん:2007/10/06(土) 11:35:15
プラットフォームのホットキーのマッピングとリアクションはLnFの仕事。
647デフォルトの名無しさん:2007/10/06(土) 14:08:18
質問です。thisによる明示的なコンストラクタの起動について、
this()の引数としてインスタンス変数やインスタンスメソッドの戻り値を渡すことはできない。
ていう記述があるのですが、これってどういうことでしょう?
648デフォルトの名無しさん:2007/10/06(土) 14:12:10
>>647
this(this.instanceField) とか、this(this.instanceMethod()) はダメって事
649647:2007/10/06(土) 14:27:53
>>648 速レスありがトン
同一クラス内でオーバロードされたコンストラクタではないインスタンス変数や
インスタンスメソッドは起動できませんよ。 ってこと?
650デフォルトの名無しさん:2007/10/06(土) 14:32:50
いや、コンストラクタ起動前は、インスタンスフィールドは初期化されてないので、
初期化されてないフィールド使っちゃダメって話だと思うが。
あと、インスタンスメソッドもフィールドが初期化されてない状態では
正常に動作しないので使っちゃダメ。じゃなかったっけか?
651647:2007/10/06(土) 14:41:30
>>650 おおっわかりやす! ありがトン!

今月21日に基本情報技術者試験でJAVA選択しようと思って勉強中で、、、
この調子じゃ間に合いそうにないかなwww
とりあえずコンストラクタは初期化動作みたいなもの、てことでおk?
652デフォルトの名無しさん:2007/10/06(土) 15:40:00
>>651
少し正確に言えば、オブジェクトを作成する時の手順は
1. オブジェクトのメモリが確保
2. フィールドの初期化
3. コンストラクタに記述された文の実行

オブジェクト生成の初期化を行うのはコンストラクタは不完全
コンストラクタではオブジェクト生成時の初期化処理を記述できるが正解。
653647:2007/10/06(土) 15:45:03
>>652 ありがとう!!  参考書にはそういうこと書いてないから困る
人に聞くのが一番だね
654デフォルトの名無しさん:2007/10/06(土) 16:07:46
× 人に聞くのが一番だね
○ プログラムを書きながら理解するのが一番だね
655デフォルトの名無しさん:2007/10/06(土) 16:12:48
× プログラムを書きながら理解するのが一番だね
○ ちゃんと仕様書読むのが一番だよね
656デフォルトの名無しさん:2007/10/06(土) 16:23:06
ちゃんと仕様書読んで
プログラムを書いて理解して
それでも分からないとこを人に聞くのがいいね

一番何て作らない方がいい。
657デフォルトの名無しさん:2007/10/06(土) 16:31:06
>>652
センセー(AAry、スタティックイニシャライザとインスタンスイニシャライザを忘れてます。
658デフォルトの名無しさん:2007/10/06(土) 16:49:49
>>657
初期化子なんて辛気臭いものは書かなければいい
659デフォルトの名無しさん:2007/10/06(土) 16:50:42
親クラスの初期化が抜けてる。これは、フィールドの初期化の前。
しかも、親クラスのコンストラクタに渡すべき引数を探すに
先に子クラスのコンストラクタの頭を見なくてはいけない。
660652:2007/10/06(土) 17:11:28
>>657
イニシャライザはフィールドの初期化の一環だから2に含まれるよ
>>659
抜けているのではなくて、今回の説明には不要な箇所
質問者が知りたいのはコンストラクタの動作
>>653
良質な参考書であれば最低限、このくらいは書いてある
>657とか>659の話だと言語仕様とかそれに近い本でないと書いてないが…
まともな参考書を探す事をお勧めする
661デフォルトの名無しさん:2007/10/06(土) 17:29:50
質問者が知りたいのは、
コンストラクタの最初にかける this() でなんで、フィールドが使えないかってことだろ。

先に親コンストラクタを初期化しなくてはならないから、
this() のチェーンの先のコンストラクタに記述される super() を探さなくてはならない。

そして、親コンストラクタの呼び出しは、フィールドの初期化より前に行われる。

したがって必然的に、this() の呼び出しの瞬間には、
フィールドは本当に初期化されていない。
このため、フィールドを引数として使うことはできない。

ここまで説明せねば。
662647:2007/10/06(土) 19:02:02
なんかすみません
663デフォルトの名無しさん:2007/10/06(土) 22:12:06
いやイニシャライザの種類にフィールドイニシャライザとスタティックイニシャライザとインスタンスイニシャライザがあるんだろ。

順番はクラスが初めてロードされたとき、スタティック。
親クラスの初期化後、フィールドイニシャライザ。
フィールドイニシャライザが完了後、記述順にインスタンスイニシャライザ。
664デフォルトの名無しさん:2007/10/07(日) 00:01:02
かなりどうでもいいことかもしれないのですが、パッケージ名についての質問です。
ドメインを逆にしていく、というのは分かるのですが、個人的な開発で、加えてドメインの取得やサイトでのパッケージ名の登録をしたくない場合、皆さんはどのような名前にしていますでしょうか?
orgやjpに代わる、個人的な使用の印みたいなものはないのでしょうか?
公開しないのであれば、ユニークにする必要はないのでしょうが、どうも気持ちが悪くて・・
よかったら意見を聞かせてください。
665デフォルトの名無しさん:2007/10/07(日) 00:11:31
案:アプリケーション名やライブラリ名で作っちゃう。
666デフォルトの名無しさん:2007/10/07(日) 00:12:09
>>664
メールアドレスは?
667デフォルトの名無しさん:2007/10/07(日) 00:33:52
そりゃ変だろ。
668デフォルトの名無しさん:2007/10/07(日) 00:54:22
>>665
今のところその方法をとっていますが、ちょっと最近かっこつけたくなっちゃって・・
やっぱりそれが堅いかもしれないですね。

>>666
イイ!!…とも思いましたが、そうなると全く自分に関係のない会社の名前ついてしまいますしね。

ここで聞いて出ないということは、こういう場合のスタンダードってのは無いみたいですね。
今まで通り、ライブラリ名で始めることにします。
案出していただきありがとうございました。
669デフォルトの名無しさん:2007/10/07(日) 00:59:07
前は jp.gr.java_conf でパッケージ名登録サービスとかやってたけど、
今は使えないんだっけか? まぁ、パッケージ名が長くなっちゃうけど。
670デフォルトの名無しさん:2007/10/07(日) 03:40:22
>>668
公開しないのであれば com.example.dan.sos.haruhi.* とかでいいんじゃまいか。
671デフォルトの名無しさん:2007/10/07(日) 05:02:39
>>670
公開しないのなら、公開されたパッケージと一緒に使うことを考えて、
パッケージ名の最初の識別子がjavaやjavax、comやgovやカントリーコードでなければ何でもいいと思う。
672デフォルトの名無しさん:2007/10/07(日) 05:10:13
>>671
アンカー間違えた。
>>670じゃなくて>>668
673デフォルトの名無しさん:2007/10/07(日) 10:31:25
Java で DB にアクセスするプログラミングの定石を紹介した書籍、web サイトってありませんか?
674デフォルトの名無しさん:2007/10/07(日) 10:45:30
入門用ならばJDBCと使いたいDBで検索すれば幾らでも出てくる
SQLとかのチューニングとかまで含めるのであれば、プログラマのためのSQLって本がいい
ただ、第3版が和訳されていないし、内容的にはちと古い
あとはオライリーのJDBCによるJavaデータベースプログラミングが定番?
触る程度であれば、J2EE関連の本に10ページ程度はあるだろうから、それで充分。
675デフォルトの名無しさん:2007/10/07(日) 13:28:31
質問です。
「Javaゲームプログラミング」という本のサンプルのゲームを元にして、
自分なりに改造してみています。それで、あるキャラクターをアニメーシ
ョンさせると、コンパイル時は全く問題ないのに、実行時、途中まで順
調に進んでいても、何度実行しても同じところで下のようなメッセージが
コマンドプロンプトに繰り返し出てきます。

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsExcepti
3
at Sprite.paintScreen(Sprite.java:492)
at Game2D.update(Game2D.java:411)
at sun.awt.RepaintArea.updateComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

676デフォルトの名無しさん:2007/10/07(日) 13:31:06
(675の続き)

下は問題のソースです。Enemy1はアニメーションさせても正常に進行しますが
Enemy2をアニメーションさせるとアニメーション自体は正常に表示されますが、途中でエラーが出ます。

/** 下方に流れ体当りする敵物体を表すEnemy1クラス */
class Enemy1 extends GameObject {
 int count = 0;
 public Enemy1(int plnNo, Sprite sprite, Queue keyQ, int x, int y,
   GameObjects gos, int targetPlnNo) {
   super(plnNo, sprite, keyQ, x, y, gos, targetPlnNo);
   attribute = ENEMY;
   sprite.setPlaneGrp(plnNo, 1, 12);
   sprite.setPlaneGrp(plnNo, 2, 12);
   sprite.setPlaneGrp(plnNo, 3, 13);
   sprite.setPlaneAnime(plnNo, true);
   sprite.setPlanePos(plnNo, x, y);
   hitX = hitY = 8;
   hitW = hitH = 16;
   scorePoint = 10;
 }

 public void move() {
         (中略)
 }
 public void beDestroyed() {
         (中略)
 }
}
677デフォルトの名無しさん:2007/10/07(日) 13:32:08
/** 出現位置から中心方向に動き弾を撃つ敵物体を表すEnemy2クラス */
class Enemy2 extends GameObject {
 int count = 0;
 int direction;
 public Enemy2(int plnNo, Sprite sprite, Queue keyQ, int x, int y,
   GameObjects gos, int targetPlnNo) {
   super(plnNo, sprite, keyQ, x, y, gos, targetPlnNo);
   attribute = ENEMY;
   sprite.setPlaneGrp(plnNo, 0, 14);
   sprite.setPlanePos(plnNo, x,y);
   scorePoint = 20;
   hitX = hitY = 8;
   hitW = hitH = 16;
   if(x > 134)
     direction = -2;
   else
     direction = 2;
 }
 public void move() {
         (中略)
 }
 public void beDestroyed() {
         (中略)
 }
}

説明不足な点があるかもしれませんが、宜しくお願いします。
678デフォルトの名無しさん:2007/10/07(日) 13:49:21
関係ないソース載せられても。

ArrayIndexOutOfBoundsException
at Sprite.paintScreen(Sprite.java:492)

って出てるんだから、Sprite.java の 492 行目あたりで配列インデックスが境界超えてないか調べればいい
679デフォルトの名無しさん:2007/10/07(日) 15:41:23
>>668
ライブラリとして配布する場合だけでいいと思う>名前が重複しないようにとかこだわるの。
最終的なアプリケーションとなるものなら、他とパッケージ名が重複することはないので、
俺はappってパッケージ名にしてる。
ただし、別のプロジェクトで使い回しそうなコードは、
ドメイン名使ったパッケージにいれてるけどね。
680デフォルトの名無しさん:2007/10/07(日) 16:26:14
パッケージ名なんて簡単に自動リファクタリングできちゃうわけだし
気にせず適当に作っちゃえ
681デフォルトの名無しさん:2007/10/07(日) 16:35:55
TransferHandlerでペーストとかをしたいのですが、
どのようにCTRL+Vを通知してやればいいか分かりません。
たぶんActionMapとかを使うと思うのですが、
どのように記述すればいいですか?
682デフォルトの名無しさん:2007/10/07(日) 18:48:19
なんの転送をするの?javaオブジェクト?

Swingコンポーネント上でテキストのクリップボードへの転送するだけならActionとかActionMap周りだけでTransferHandlerはいらないはずだけど。
683デフォルトの名無しさん:2007/10/07(日) 19:27:42
>>682
ファイルのリストを転送していろいろしたい。D&Dもしたいし(これはできた)からTransferHandlerを使ってます。
684デフォルトの名無しさん:2007/10/07(日) 19:44:54
Linkedlistに入力した情報(ID,名前など)を自動的にMember.txtに書き込んで
あとでremoveItemなどで特定のNodeの情報を消したりしたいんですが
よくわかりません。
Member.txtは
101,太郎
102,次郎
99,三郎
のように書き込まれて、removeItemで次郎を消すと
101,太郎
99,三郎
になるような感じです。
わかりにくいかもしれないけど、よろしくお願いします。
685デフォルトの名無しさん:2007/10/07(日) 19:49:15
>>684
何をよろしくお願いなのかわからんw
その仕様のプログラム作ってくれって事なのか?
686デフォルトの名無しさん:2007/10/07(日) 20:02:54
作ってもらえたらうれしいけど
今一番知りたいのはlinkedlistの情報のファイルへの書き込み方法です。
File f = new File("Member.txt");
で作って
ID, 名前をStringにしてwriteで書き込みしようとしたりしてるんだけど
そうすると書き込むだけで消せないんです。
言い忘れたけど、消すときはIDをキーにしたいです。
687デフォルトの名無しさん:2007/10/07(日) 20:58:45
上書きすればいいんちゃう?
688デフォルトの名無しさん:2007/10/07(日) 21:01:23
オブジェクトへの追加・削除を、ファイルと同期したいなら、
クラスを継承して自前のを用意するのが一番いいと思う。
689668:2007/10/07(日) 23:14:25
>>669>>670>>671>>679>>680
いろんな方のご意見が聞けて参考になりました。
本当にありがとうございました!!
690デフォルトの名無しさん:2007/10/07(日) 23:29:51
どういたしまして
がんばってね^^
691デフォルトの名無しさん:2007/10/08(月) 00:23:23
>>683
じゃあ、基本的な部分だからjavadocとsunのチュートリアルの通りにすればいい。
692デフォルトの名無しさん:2007/10/08(月) 00:39:59
>>691
今チュートリアルにあることに気が付いて読んでるけど、
日本語訳ないし、サンプルがけっこう複雑だなって…
693デフォルトの名無しさん:2007/10/08(月) 01:33:54
TransferHandlerのサンプルで複雑とか言ってたらjava.awt.dndパッケージ使ったDnD処理が書けないぞw

TransferHandlerは低レベルな部分を全部ラップして
フレーバーとハンドラ実装すれば良いだけだから半端無く楽になってるよ。

java.awt.dndで低レベルな部分いじってTransferHandlerでは出来ないか逆に面倒なこと実装するか。
TransferHandlerで超楽して単純な実装するかで使い分ければ良い。
694デフォルトの名無しさん:2007/10/08(月) 01:40:33
http://www.dotup.org/uploda/www.dotup.org4567.txt.html

ばかなのでここまでしかできません・・・だれかどうすればいいのか教えてください。
695デフォルトの名無しさん:2007/10/08(月) 09:23:01
>694 単位落として留年するといいと思うよ。
696デフォルトの名無しさん:2007/10/08(月) 12:24:51
学坊ばっか
697デフォルトの名無しさん:2007/10/08(月) 12:32:13
     γ´`ヽ
     _ゝ -''` ー- _
   /          \
  /             ヽ    、′     、 ’、  ′     ’      ;  、
  ,':..              ',       . ’      ’、   ′ ’   . ・
  !:::::.  , -────── 、 |     、′・. ’   ;   ’、 ’、′‘ .・”
  |:::::::. |  `ィェァ    `ィェァ| |         ’、′・  ’、.・”;  ”  ’、
  |::::::::.. `───────' |    ’、′  ’、  (;;ノ;; (′‘ ・. ’、′”;
  .|:::::::::::..            |  ’、′・  ( (´;^`⌒)∴⌒`.・   ” ;  ’、′・
  |::::::::::::::..           l   、 ’、 ’・ 、´⌒,;y'⌒((´;;;;;ノ、"'人      ヽ
   l:::::::::::::::::....        /        、(⌒ ;;;:;´'从 ;'   ;:;;) ;⌒ ;; :) )、   ヽ
   |:::::..ヽ:::::::::::....      /         ( ´;`ヾ,;⌒)´  从⌒ ;) `⌒ )⌒:`.・ ヽ
   |:::::::....` 、:::::::::..  /  ′‘: ;゜+° ′、:::::. :::  ´⌒(,ゞ、⌒) ;;:::)::ノ
   }::::::::::::::::...`ヽ_人,ノ{          `:::、 ノ  ...;:;_)  ...::ノ  ソ ...::ノ
  ̄:::::::::::::::.:::::::::::::::::::..  ̄ ー- _
::::::::::::::::::::::::::::::::::::::::::::::::....       \
698デフォルトの名無しさん:2007/10/08(月) 16:47:54
eclipseで開発してるのですが、他のPCで作ったプロジェクトを
コピーしてきたら動きません。
正しいプロジェクトの移行方法を教えてください。
699デフォルトの名無しさん:2007/10/08(月) 17:03:49
>>698
Eclipseスレで聞け。
700デフォルトの名無しさん:2007/10/08(月) 17:10:19
>699
すんません。了解しました。
701デフォルトの名無しさん:2007/10/08(月) 19:13:01
なんだか聞くのも恥ずかしいような初歩的っぽい事なのですが、恥を忍んで・・・
java.sql.Timestamp型の値をStringに変換するにはどうすれば良いのでしょうか?
702デフォルトの名無しさん:2007/10/08(月) 19:30:40
>>701
Stringならなんでもいいのか?
それならば、toStringで適当な文字列になる。

一般的には、getTime()で基準時からのミリ秒を取得してjava.util.Date に渡す。
後はSimpleDateFormatなりで変換する
703デフォルトの名無しさん:2007/10/08(月) 19:32:46
J2EEのインストールが出来ません。
ダウンロードは出来るのですが、Java_ee_sdk-5_03-windowsをインストールしようとすると、
「Java_ee_sdk-5_03-windows が原因で MSVCRT.DLL にエラーが発生しました」
というエラーメッセージが出てインストールが中止してしまいます。
OSをupdateしたり他のバージョンのJ2EEをインストールしたりしてみたのですが解決出来ませんでした。
PCはノートのWindows Meです。
他にJ2EEをインストール出来る方法はないでしょうか?
704デフォルトの名無しさん:2007/10/08(月) 19:54:56
今日日Meに対応してるのか?と思ってググったら、案の定こんなのが見つかった。

J2EE on ME
http://mail2.nara-edu.ac.jp/~asait/java/j2ee/j2ee_modified.htm

上の方法でもできる可能性はあるが、
本当にそのPCで使いたいのなら、2kかXPに切り替えた方がいいぞ。
705デフォルトの名無しさん:2007/10/08(月) 20:14:10
2kはともかくXPは動くのかね?
PC板でもないので詳しくは書かないけど、開発環境+ネット+メール程度で利用するならばいっその事Linuxいれちゃえば?
706デフォルトの名無しさん:2007/10/08(月) 20:32:09
同じIDのファイルを作ろうとしたときには
どのExceptionを使えばいいんでしょうか?
あと、IDが数字じゃないときには何を使えばいいんでしょうか?
教えてください。
707デフォルトの名無しさん:2007/10/08(月) 20:33:57
>>706です。
IDが数字じゃないときにはどのExceptionを使えばいいんでしょうか?
でした。
日本語変ですみません。
708703:2007/10/08(月) 20:39:30
>>704
>>705
自分だけが使うPCではないのでOSを入れ替えるのは難しいです。
教えて頂いたアドレスの方法に挑戦してみます。
ありがとうございました
709デフォルトの名無しさん:2007/10/08(月) 20:43:37
>>706
自分で 「同じIDのファイルを作ろうとした例外」 クラスや 「IDが数字じゃない例外」 クラスを作ればいい
710デフォルトの名無しさん:2007/10/08(月) 21:21:37
>>708
開発用のマシンでMeって終わっているがな
711デフォルトの名無しさん:2007/10/08(月) 21:28:30
>>709
ありがとうございます
712デフォルトの名無しさん:2007/10/08(月) 21:32:36
Vectorを使ってtxtファイルに書き込んだ情報を
情報のIDで選んで消すことってできますか?
713デフォルトの名無しさん:2007/10/08(月) 21:55:23
Vectorじゃtxtファイルには書き込めない
情報のIDで消す事はそのように実装すればできる

まずは入門本でも読んでこい
714デフォルトの名無しさん:2007/10/09(火) 00:08:04
最近XMLEncoderってクラスを知った
なんであんな便利なのに入門書とかに載ってないんだ?
715デフォルトの名無しさん:2007/10/09(火) 00:09:26
入門書だから
716デフォルトの名無しさん:2007/10/09(火) 10:13:35
なんかXml関連は混乱してるからなあ。
今のところ公式なXmlライブラリがw3c以外にないってのがまずおかしい。
717デフォルトの名無しさん:2007/10/09(火) 11:04:07
じゃあまずおまえが代替物を作れ
718デフォルトの名無しさん:2007/10/09(火) 12:23:32
まあ待て、公式なライブラリが複数あるのもおかしくないか?
719716:2007/10/09(火) 12:28:19
>>717
>>577のいってるように、ライブラリはたくさんあるよ?
でも、これだけxmlが広がって、XmlEncoderとか標準ライブラリ内でも使ってるのに、
基本的な読み書きが、w3cでしかできないっていうのは不親切じゃないのかな、と思ったわけで。
実際自分もw3cで一通り書いてからJDOM知ったし。
720デフォルトの名無しさん:2007/10/09(火) 13:06:30
JavaAppletの質問で恐縮です。
JavaAppletでエクスプローラからのファイルのドラッグ&ドロップでの
受け取りをしたいのですが、どこかにサンプルは無いでしょうか?
googleでいろいろ検索してみたのですがなかなか見つかりません。
もし御存知の方がおられましたらご教示くださいませ。
721デフォルトの名無しさん:2007/10/09(火) 13:20:02
無理
722デフォルトの名無しさん:2007/10/09(火) 14:24:24
署名なしのアプレットは、ローカルファイルを開くことが出来ない。
エクスプローラからドラッグ&ドロップしたファイル名を受け取ることは出来ると思うが、
ファイル名を受け取ってもそのファイルは開けないから意味がない。
723デフォルトの名無しさん:2007/10/09(火) 21:30:36
署名ありにするにはどうしたらいいでしょうか?
724デフォルトの名無しさん:2007/10/09(火) 22:13:39
VerSignとかGlobalSignと契約
725デフォルトの名無しさん:2007/10/10(水) 01:09:51
uploadするくらいならできるだろ
726デフォルトの名無しさん:2007/10/11(木) 00:00:45
実行可能なjarファイルを作ったのですが、
jarのアイコンをダブルクリックしても全く反応しません。
コマンドから実行してみたら

Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)

と表示され、動きませんでした。
画像ファイルが読み込めてない、ということなのでしょうか・・・?
いくら見直しても指定したファイルはちゃんとあるし、階層も、ファイル名も合ってました。
それともパスの指定とかいうものが必要なのでしょうか?
初心者丸出しの質問ですみません。
727デフォルトの名無しさん:2007/10/11(木) 00:15:26
本当はjarのエントリを読みたいのだが、実はファイルを読み込んでるとか、そういうことはない?
jarの中のエントリはファイルじゃないので、ファイルとして読もうとしても読めない

画像をどこにおいてるのかその正確なところと、
その画像をどうやって読み込んでるかそのコードを示してみ
728デフォルトの名無しさん:2007/10/11(木) 00:21:02
jar化する前は動作していたというのなら、
画像ファイルの指定の仕方を間違えている。
リソースとして読み込んでいるかどうか確認汁。
また、jarの中に入れたファイルの読み込みに失敗する原因として、
名前の大文字小文字を間違えている可能性がある。
Windowsなどの大文字小文字の区別をつけないファイルシステムで動作しても、
jarの内部はその区別をつけるのでファイル名の確認はそこまで合っているかどうか見れ。
729デフォルトの名無しさん:2007/10/11(木) 00:44:23
>>726
フォルダ構成と画像のURLを取得している部分のソースを書け
730デフォルトの名無しさん:2007/10/11(木) 01:09:02
>>727
>>728

すみません、ファイル、エントリ、リソースとして読み込むのは
どう違うのかが具体的によくわかりません。

クラスファイルを置いている階層にフォルダを作り、その中にgifとpngを置いています。
名前の大文字小文字は、確認しましたが間違えていませんでした。



ソースはどの箇所を示せばいいのかいまひとつわからないんですが

String file = "images\\○○○.gif"
Toolkit.getDefaultToolkit().getImage(getClass().getResource(file)));

というような感じです
731デフォルトの名無しさん:2007/10/11(木) 01:13:29
\\ じゃなくて / を使ってみる
732デフォルトの名無しさん:2007/10/11(木) 01:21:06
>>731

実行できました!すごく単純なミスでしたね(´Д`;)
皆さんどうもありがとうございました。
733デフォルトの名無しさん:2007/10/11(木) 04:19:14
別にxmlの公式はW3CだけじゃないよXMLファミリの標準化をW3CがやってるだけでXML basedな仕様はいろんな所で標準化やってるんだから。
734デフォルトの名無しさん:2007/10/11(木) 07:30:55
>>732
ミスとはちと違うな
誰でもはまる場所の1つだから、\\と/で何が異なるのかを学んでおかないと、同じような原因で何度もはまるぞ
735デフォルトの名無しさん:2007/10/11(木) 08:23:58
>>734
>>726じゃないが、是非教えてくれないか?
俺も一度はまった口なので、理由を教えてもらえると非常にありがたい。
736デフォルトの名無しさん:2007/10/11(木) 08:49:30
そりゃあ単に getResource が区切り文字に / を使う仕様だからじゃない?

http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/ClassLoader.html#getResource(java.lang.String)

>リソースの名前は、「/」で区切られたパス名であり、これによってリソースが識別されます。
737デフォルトの名無しさん:2007/10/11(木) 08:56:07
>>735
そんなに難しいことか?
\\は(主に)Windowsのファイルシステムでのパス区切り
原則として使わずに、File.SEPARATOR を使用するべき。
/はURL(URI)で階層を表す時に使用する区切り文字
こっちは環境に依存せず、世界中何処でもどんなマシンでも/

これらを踏まえた上で、リソース等をファイルなどから指定する場合、
カレントディレクトリからのファイルの相対パス、またルートからの絶対パスでファイルとして指定するパターン。
リソース内での絶対パス、もしくはリソースのルートからの絶対パスでURLとして指定するパターンの2つがある。

で、はまる理由は意外と適当に書いても動くから。
730がはまったのは、jarにしない時はgetClass().getResource(file) でファイルとしてImageを取りに行った事。
これはjar に固める前では、当然クラスのある場所の構造と画像のある場所の構造がURL指定とファイル指定で一緒。
だけど、jarにしてしまったら、全部同じファイルの中にあるだろ?
そうなると、リソースとしてみないと階層をたどって画像ファイルにたどり着けない
738デフォルトの名無しさん:2007/10/11(木) 08:58:37
>>736
そうなんだけど、クラスローダーがリソースを見つける時に、ファイル区切りでも見つけちゃうわけ。
739デフォルトの名無しさん:2007/10/11(木) 09:49:27
そういえば過去スレに、MP3を再生したいとかあった気がするんだけど、
http://www.tritonus.org/
http://www.javazoom.net/mp3spi/mp3spi.html
http://code.compartmental.net/tools/minim
この辺使うとできるかも。
試してはいない。
Java用encode-Libとかもある感じ。
740デフォルトの名無しさん:2007/10/11(木) 13:31:44
import java.io.*;
import javazoom.jl.player.advanced.jlap;

public class HelloMp3 {

 public static void main(String args[]) {
  if (args.length != 1) System.exit(1);
  String filename = args[0];
  System.out.println(filename);
  try {
   jlap j = new jlap();
   j.play(filename);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 System.out.println("うんこ\n");
}
741デフォルトの名無しさん:2007/10/11(木) 14:40:59
appletやってます。
-Xmxオプション付けない場合ってメモリどれぐらい使えますか?
64MBでしょうか?
JRE/JDKのバージョンによって変わったりするのでしょうか?
情報のポインタ知ってる方教えてください。
742デフォルトの名無しさん:2007/10/11(木) 14:56:45
public class Grade{
public static void main(String args[]){
Data Suzuki=new Data("Suzuki",90);
System.out.println("Suzuki="+Suzuki.getData());
}
}
class Data{
private String name;private int grade;
public Data(String name, int grade){
this.name=name;
this.grade=grade;
}
public int getData(){
return grade;
}
}

このjavaプログラムに関する問題が出題されたのですが、javaはまったくやった
ことなく、どうしていいものか悩んでます。
文が長すぎるので問題は下に書きます。
743デフォルトの名無しさん:2007/10/11(木) 14:57:49
>>742の問題文

1:このプログラムのメソッドgetData()のアクセス修飾子publicを修飾子staticに
変えてコンパイル、実行してみよ。エラーがでるので修正したプログラムを作りなさい。

2:このプログラムにはthisキーワードが2箇所使われている。これらのキーワードを使わずに
同じ実行結果が得られるように、プログラムを修正しなさい。

3:このプログラムで、int grade(評点)はclass Dataのコンストラクタの2番目の引数
を、例えば90から85に変えることによって任意に変更できるが、最初の引数"Suzuki”を"Kimura"
に変えても結果はSuzuki=85のようになり、Kimura=85とはならない。
 名前と評点を自由に出力できるように、このプログラムを修正せよ。
修正前の分には、先頭に//を付してコメント文とせよ。また、修正、付加した文
には、語尾に//修正//,//付加のコメント文を付けよ。
(修正および付加する箇所)
・ Data Suzuki=new Data("Suzuki",90); →
  Data data=new Data("各自の学籍番号",希望の点数);
・ System.out.println("Suzuki="+Suzuki.getData()); →
  System.out.println("修正せよ+data.getData());
・ getData()→getGrade()
・ getGrade()を参考にして、メソッドgetName()を新しく付け加える。

よろしくお願い致します。
744デフォルトの名無しさん:2007/10/11(木) 15:00:41
>>743
教えたこともないのにそんな問題出すんじゃねえ、この給料泥棒が!
と言ってやれ。
または、宿題は宿題スレへ。
745デフォルトの名無しさん:2007/10/11(木) 15:01:20
>>741
http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/windows/java.html
デフォルト値は、実行時にシステムの設定に基づいて選択されます。
746デフォルトの名無しさん:2007/10/11(木) 15:03:12
>>742、743はミスです
スレ違いすみません
747デフォルトの名無しさん:2007/10/11(木) 17:00:02
>>745
ありがとうございます。
しかし、「デフォルト値は、実行時にシステムの設定に基づいて選択されます。」は、
-serverを付けた時の挙動だと思います。

今回は、appletですので、おそらく-clientがついた状態になっていると思います。
この場合はやはり64MBでしょうか?

自分でググったかぎりは、64MBなのかなぁという感じです。
明確な情報がありましたら、是非・・・。
748デフォルトの名無しさん:2007/10/11(木) 17:56:02
749デフォルトの名無しさん:2007/10/11(木) 21:39:14
/ヾ〜〜╋┓ ┣¨┣¨┣¨┣¨┣¨ ┃┃¨╋┓┃┃¨╋┓
750デフォルトの名無しさん:2007/10/12(金) 00:32:16
ローカルのアプレットに権限を与えるには
(Windowsの場合) C:\Documents and Settings\(user)\.java.policy に

grant codeBase "file:/*" {
permission java.util.PropertyPermission "user.home", "read";
};

と書けばいいと思って試してみましたが、書く前と変わらず
java.security.AccessControlException: access denied
(java.util.PropertyPermission user.home read)
が出ます。どこが間違っているのでしょうか・・・
751デフォルトの名無しさん:2007/10/12(金) 00:43:39
>1:このプログラムのメソッドgetData()のアクセス修飾子publicを修飾子staticに
>変えてコンパイル、実行してみよ。エラーがでるので修正したプログラムを作りなさい。

頭の悪い問題だな。
自分でpublicをstatic変更しといておかしくなったならpublicに戻せば良いじゃないか。
言いたいことは分かるが国語力なさ過ぎだ。
752デフォルトの名無しさん:2007/10/12(金) 01:00:20
で?
753デフォルトの名無しさん:2007/10/12(金) 01:30:14
以前、アクティブデスクトップだとなぜかアプレットが使えない!と言っていたものですが
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="300" height="100">
 <param name="code" value="hoge.HogeApplet" />
</object>
と書いたら動きました。
解決したので一応報告。
754デフォルトの名無しさん:2007/10/12(金) 01:53:17
>>753
今年のお正月の話?ぼんやり覚えてる。懐かしいな。
要はwin2000ではappletタグでなくきちんとobjectタグにしなさいってことかな?
755750:2007/10/12(金) 02:02:14
自己解決しました。
ブラウザ再起動で反映されました。申し訳ない。
756デフォルトの名無しさん:2007/10/12(金) 04:04:56
>>752
講師の方ですか?
757デフォルトの名無しさん:2007/10/12(金) 05:02:52
というかgetDataをstaticにしたらオブジェクトの意味がよくわからなくなるんだが
758デフォルトの名無しさん:2007/10/12(金) 07:30:24
今swingでゲーム作っているのですが、
キャラの重ね合わせ制御の方法が解りません。

JLabelを使ってキャラを表示させています。
で、あるキャラとあるキャラが重ねあった場合、
特定のキャラを必ず上に表示させたいのですが・・・その方法がわかりません。
誰かご存じないでしょうか?
759758:2007/10/12(金) 08:06:06
書いた直後ですが・・・自己解決しました。
コンテナにJLabelをaddする際にインデックス0を指定するだけでした。
失礼しました。
760デフォルトの名無しさん:2007/10/12(金) 08:14:16
>>758
解決したようだけど、JLabelでいわゆるスプライトを行うのは限界があるよ。
スプライトは結構簡単に実装できるので、ゲームに興味あるならば勉強するべし。
「15歳からはじめるJAVAわくわくゲームプログラミング教室」がオススメ
名前はあれだけど、入門本スレでも評価が高い
761デフォルトの名無しさん:2007/10/12(金) 13:36:23
日付に対してデータを登録できるカレンダーを作ってみたいのですが、
javaでGUIを作るとなるとswingを使うことになるのでしょうか?
ネットで調べてみるとswingは廃れていく技術のように書かれてるのが多かったので気になりました。
経験多いプログラマーの方がカレンダーを作るとしたらどんな技術を選んで作りますか?
762デフォルトの名無しさん:2007/10/12(金) 14:21:50
>>761
ソースを下さい。
廃れているのは、SWTとかかれていませんか?
Swingは、むしろ最近力を入れて改良されている部分です。
763デフォルトの名無しさん:2007/10/12(金) 14:34:31
趣味ならまだしもSWTとかSwingって実践で使えるの?
SWT、Swing、AWT、applet、ここら辺の違いは何なんだろう
764デフォルトの名無しさん:2007/10/12(金) 14:49:10
一度LimeWireかV2Cを使ってみれば?
あれでSwing使えねーと思うなら使えない。
765デフォルトの名無しさん:2007/10/12(金) 15:38:54
>>763
うるおぼえ(<-なぜか変換できない)だが、

SWT Windowsに特化したGUI。早いがWindows以外では使えない。Eclipseでも使用
Swing もっとも一般的。どのOSでも一応動く。
AWT Swingの一層下。細かくいじれるが、扱いづらい。初心者は大人しくSwingへ。
applet ウェブブラウザ上でJavaを使えるようにする技術。その性質上リソースが著しく制限される。

って感じだと思う。適当に書いてることなので、間違ってたら訂正よろしく。
766デフォルトの名無しさん:2007/10/12(金) 15:46:46
>>763
Swingが余裕で実践に使えることはV2C(2ちゃんねるブラウザ)で証明されている
767デフォルトの名無しさん:2007/10/12(金) 15:58:58
>>765
SWTだけど、今はJavaも結構早くなってるからそんなにメリットはないかも。
昔は極端に遅かったからでC言語で仕事させたほうが速かったんだけど。

AWTはフレームに入る入れ子要素(パネルとかボタンとか)までOSに委譲している
Swingでは中身はSwing側で書いてるだけ
よってSwingのほうが軽量(LightWeight)といわれている
一部分使いまわしてるけどひとつ下の層というと語弊があるかな

あとアプレットの代替要素としてWebStartがあったり。
768デフォルトの名無しさん:2007/10/12(金) 16:26:56
アプレットやWebStartは(証明書なしで)ローカルファイルにアクセスできないのがつらい
769デフォルトの名無しさん:2007/10/12(金) 16:46:54
なんで、swingとAWTの解説サイトって全部アプレットなの。

イベントの処理の仕方も違うはずなのに

770デフォルトの名無しさん:2007/10/12(金) 17:04:16
>>769
積極的な理由として、webで解説するために、その場で動いた方がわかりやすい。
消極的な理由として、解説系のサイトでは主にロジック部分の解説が多いため、リソースの取得が必要でない場合が多い。
かな。
771デフォルトの名無しさん:2007/10/12(金) 17:32:16
yahoo gameってappletだよね
ってことはこれも実践で十分いけるんでない?
772デフォルトの名無しさん:2007/10/12(金) 17:58:09
773デフォルトの名無しさん:2007/10/12(金) 18:24:14
AppletとJWSじゃセキュリティモデルが違うのを忘れちゃだめだぞ。

てか、Swingが廃れたってソースはITなんとかか?
eclipseとnetbeans両方使ってるが大した違いはないぞ。
まあ、netbeansはデフォルトのVM引数が控えめなので自分のPCに合わせる必要があるが。

むしろ、SWT開発はめんどい。
javaとSwingがまともになった今、JNI使う意味は低レベルな部分触るときくらいしかない。
java.dev.netのgame.coreプロジェクトが良い例。

なんでまともに使いもせず定期的にJNIとpure java絡みの話が上がるのかが不思議だ。
Swing遅いって言う奴はだいたいSwingの作法間違えてるしな。
774デフォルトの名無しさん:2007/10/12(金) 18:28:16
Struts1.2.8使ってるんですが、メッセージリソースの中に左中括弧を含んだメッセージを定義したいのです。

普通に左中括弧書くと、プレースホルダの開始だと認識されてMessageFormatクラスで例外が出てしまいました。

JavaDoc読んだらシングルクォートで囲えばよさそうに見えたのでやってみたけどダメでした。
ダメ元でバックスラッシュも試しましたがダメでした。

何かうまい方法あったら教えて下さいm(__)m
775デフォルトの名無しさん:2007/10/12(金) 18:38:16
>>773
Wiiコンの入力を読んでみた時にはJNI使ったんだけど、pure javaで書けるのかな。

>>773
イベントディスパッチスレッドがうんちゃかって話ならTiming Frameworkで解決しそうな気がする
いやよく知らないんだけど
776デフォルトの名無しさん:2007/10/12(金) 18:39:02
アンカー重複したw
777デフォルトの名無しさん:2007/10/12(金) 23:06:04
Sun の JDK ダウンロード・サイトって、なんであんなに重いんですか?
やっぱ、サーバが Java だからですか?
だとしたらサーバに Java はやめといた方がいいですかね。
素直に Apache で PHP でも動かした方が無難ですか?
778デフォルトの名無しさん:2007/10/12(金) 23:36:14
ウィンドウの左上端を基点として、100,100の位置に
新しくウィンドウを表示したいのですがどうすれば良いでしょうか。
779デフォルトの名無しさん:2007/10/12(金) 23:42:05
>>777
重くないけど?
780デフォルトの名無しさん:2007/10/12(金) 23:57:04
>>779
あなたにとっては、アレが当たり前なんでしょうね。
781デフォルトの名無しさん:2007/10/13(土) 00:04:18
>>780
ダイアルアップじゃ大変だね
N88Basicでもやるといいよ
782デフォルトの名無しさん:2007/10/13(土) 00:16:31
>>778
Component#setLocation(int,int)
783778:2007/10/13(土) 00:47:42
>>782
それでは画面左上が基点になってしまいませんか?
そうではなく今あるウィンドウを基点にしたいんです。
784デフォルトの名無しさん:2007/10/13(土) 01:04:01
>>783
君は応用も出来ないバカですか?
今あるウィンドウの位置を増分としてsetLocationを使えばいいくらい分かりそうなものを
785778:2007/10/13(土) 01:18:16
>>784
ごめんなさい。
質問する前にそれは調べました。
けれど、見つからなかったのです。
今思えば>>778ではそちらを質問したほうが良かったのかもしれません。
お手間を取らせて、すみませんでした。

どなたかウィンドウの位置を知る方法を教えてもらえませんか?
786デフォルトの名無しさん:2007/10/13(土) 01:25:59
APIリファレンスの読み方を身に付けたほうがいいよ
設定したいフレーム.setLocation(基準フレーム.getX() + 100, 基準フレーム.getY() + 100);
787デフォルトの名無しさん:2007/10/13(土) 01:30:25
そんな厳密に決めずに
setLocationRelativeTo(親)
が楽でいいけどなー
788778:2007/10/13(土) 01:34:39
>>786
そんなに便利で簡単なメソッドがあったんですね。
探しきれずに恥ずかしいです。
ご親切にどうもありがとうございました。
789デフォルトの名無しさん:2007/10/13(土) 01:41:36
>>787
まあsetLocationRelativeToの方が楽だとは思うけど要求が(+100,+100)だったので

>>788
FrameとかJFrameのリファレンスしか見てないんじゃないのか?
getXやgetYはその親クラスのComponentで定義されているメソッド
〜から継承されたメソッドとかのリストも見てそれっぽいのを探すこともやった方がいい
790778:2007/10/13(土) 01:56:53
setLocationRelativeToは便利ですが、今回自分で値を設定したい所でした。

>>789
まったく見当外れのGraphicsConfigurationという場所を見ていました。
灯台下暗しですね。
これからは継承されたメソッドも詳しく見て行こうと思います。

それでは。
791デフォルトの名無しさん:2007/10/13(土) 02:08:21
標準のJavaDocは、見るのに少しコツがいるからな。
特に継承やインターフェイスを理解してないと結構つらい物がある。
逆に理解してれば、あれほど簡潔でわかりやすいものもないと思うんだが(言い過ぎ?
792デフォルトの名無しさん:2007/10/13(土) 02:54:46
その認識でいいんじゃないの
793デフォルトの名無しさん:2007/10/13(土) 03:05:30
>>775

>Wiiコンの入力を読んでみた時にはJNI使ったんだけど、pure javaで書けるのかな。

>JNI使う意味は低レベルな部分触るときくらいしかない。

javadoc嫁以下だな。
794デフォルトの名無しさん:2007/10/13(土) 03:18:40
>Swingの作法間違えてるしな

kwsk
795デフォルトの名無しさん:2007/10/13(土) 05:19:36
入力した画像の16階調のRGBヒストグラム(赤、緑、青の3種の16階調グラフ)
を表示させるプログラムの課題が出ているのですが
getRGB()の使い方がよくわかりません。
どうやって特定の色の値を計算するのでしょうか?
796デフォルトの名無しさん:2007/10/13(土) 11:37:31
(ビットのうち 24 〜 31 はアルファ、16 〜 23 は赤、8 〜 15 は緑、0 〜 7 は青)。
797デフォルトの名無しさん:2007/10/13(土) 11:41:11
つかgetAlpha、getRed、getGreen、getBlueってあるんじゃないの?
798デフォルトの名無しさん:2007/10/13(土) 11:52:01
「getRGB()」を使えと指示が出ている課題かも知れないジャマイカ
799デフォルトの名無しさん:2007/10/13(土) 11:55:36
この手の課題はシフト演算とビットマスクを学ぶという
目的がある事も多いのであまりおすすめしない
800デフォルトの名無しさん:2007/10/13(土) 11:59:27
>>797
>>795がjava.awt.Color#getRGBのことを言ってるのならね
java.awt.image.BufferedImage#getRGBのことならBufferedImageにgetRedの類は無いから
もしgetRed等を使うのならnew Color(bufferedImage.getRGB(...)).getRed()とかしないと
てか、もしかして>>796の個々のビットフィールドの取り出し方が分からないとか
801デフォルトの名無しさん:2007/10/13(土) 13:29:55
>>800
まさしくそうです…
802デフォルトの名無しさん:2007/10/13(土) 13:37:05
ビットマスク、とビットシフトでググッたら?
803デフォルトの名無しさん:2007/10/13(土) 13:44:41
っていうかJavaでビットを扱うっていうのが根本的に間違ってると思う。
そういうのはC向き。たぶん出題者もCでやることを前提で問題出したんじゃないの?
804デフォルトの名無しさん:2007/10/13(土) 13:55:25
まちがってるのはお前の頭のほうじゃね?
805デフォルトの名無しさん:2007/10/13(土) 14:30:29
いやbyte型でビット操作とかしたら暗黙の型キャスト周りで意外とめんどいことになる
806デフォルトの名無しさん:2007/10/13(土) 14:33:26
あとunsignedがないからな
807デフォルトの名無しさん:2007/10/13(土) 14:34:01
理解していないからすぐ言い訳する
808デフォルトの名無しさん:2007/10/13(土) 14:36:47
自分で作成したjavaプログラムを動かすにはjavaコマンド打つんですが、
ネットからダウンロードしたjavaで作られたプログラムを使うときってアイコンをダブルクリックとかで動きますよね。
前者の状態から後者の状態にするにはどうすればいいんでしょうか?
809デフォルトの名無しさん:2007/10/13(土) 14:41:38
>>808
たぶんJarファイルのことをいってるんだろう。
俺はEclipse使ってるので、エクスポートからしてるが、コマンドラインでもできるはず。
810デフォルトの名無しさん:2007/10/13(土) 16:43:09
java -jarで確かuseageが表示されるからやってごらん。
811デフォルトの名無しさん:2007/10/13(土) 16:43:48
間違えた。jarだけでいいな。
812デフォルトの名無しさん:2007/10/13(土) 18:57:23
>>808
アイコンをダブルクリックとかで動くやつを実行可能jarという。
jarのヘルプだけでは実行可能jarの作り方は分からないと思うので、
sunサイトのドキュメントを参照したり、実行可能jarでぐぐったりするといい。
813デフォルトの名無しさん:2007/10/13(土) 19:06:55
ttp://www.nec-mfriend.com/jp/lecture/lecture7_1.php

このサイトにあるex.3の結果をコンソール上にではなく、実機で表示されるようにするには、どう変えたらいいでしょうか。
814808:2007/10/13(土) 19:23:50
>>809
>>810
>>811
>>812
なるほど、単なるクラスファイルとは別にプログラムを実行するためのファイルってのがあるんですね。
jarファイルでググってやってみます。ありがとうございました
815デフォルトの名無しさん:2007/10/13(土) 20:19:32
>>799
javaだと型昇格して全部intになっちゃう・・・って先を超されたか。
816デフォルトの名無しさん:2007/10/13(土) 21:14:37
>>813
マルチするな
817デフォルトの名無しさん:2007/10/14(日) 02:01:40
ObjectInputStream(以下ois)とObjectOutputStream(以下oos)を使ってオブジェクトの入出力を行っています。
oos.writeObject()で書き込んだデータをネットワーク経由で受信し、
ois.readObject()を実行した場合に、オブジェクトデータであれば問題はないのですが、
オブジェクトデータ以外(バイナリ配列)であった場合にも、Exceptionをキャッチした後バイナリ配列として読み取りたいと考えています。
しかしoisのストリームのポジションを戻すことができず、困っています。
oisでreadObject実行前に全てを一度バイト配列として読み取って退避させ、
再度バイナリ配列からoos→oisという具合に復元させる方法も考えたのですが上手くいきませんでした。
データを再送信させる以外の方法ってありますか?
ご存知の方いらっしゃいましたらお願い致します。
818デフォルトの名無しさん:2007/10/14(日) 02:05:54
ファイルIO(CSVファイル)でいい本があれば教えて下さい。
重複チェックのロジックとか、あるデータのキー値が
他のファイルに存在してるとか、

ファイルIOと読み込んだCSVデータに関するロジックを
知りたいです。
819デフォルトの名無しさん:2007/10/14(日) 02:09:52
>oisでreadObject実行前に全てを一度バイト配列として読み取って退避させ、
>再度バイナリ配列からoos→oisという具合に復元させる方法も考えたのですが上手くいきませんでした。

その考え方でいけるはずだが、やり方が悪いんじゃないか
復元するのに oos が入ってるのはなぜ?
コードみせてみ
820デフォルトの名無しさん:2007/10/14(日) 02:10:29
すいません
初心者なんですが、コマンドプロンプトのc:\Dcument and Settings\(ユーザ名)にあるディレクトリって、どこのことですか?
821デフォルトの名無しさん:2007/10/14(日) 02:13:25
どこのことって、そのまま c:\Documents and Settings\ユーザ名 だと思うけど。
エクスプローラでも辿れるでしょ。
何がわからんの?
822デフォルトの名無しさん:2007/10/14(日) 02:18:17
CSVの仕様はRFCが公開されてるんだっけ?あれ読んだ方が早い。
あとは、java.ioかjavax.nioのjavadoc読む。
823820:2007/10/14(日) 02:24:10
コマンドプロンプトでのmkdir javaとやって、画面上に何も出ず、
それでマウスで(?)それを作って、で、消した(ゴミ箱からも)んですけど、
コマンドプロンプトでもう一度作ろうとしたら、もうあるって出たので……
で、一体どこにあるんだろう?と思って人に聞いてみたら、c:\Dcument and Settings\(ユーザ名)だと言われ、
なんのことだろうと思って来た次第です。。
824820:2007/10/14(日) 02:24:59
(つけたし)
初心者発言ばかりで恐縮ですが、コマンドプロンプトっていうのは、絵じゃなくて文字でPCを動かすものですよね?
てことは、目に見えるどっかに「java」がつくられているんでしょうか??
825デフォルトの名無しさん:2007/10/14(日) 02:26:41
>>823
マイコンピュータ → (C:) → Documents and Settings → ユーザ名 と辿っていけ

というか、Windows の基本をまず勉強した方がいい
826デフォルトの名無しさん:2007/10/14(日) 02:28:53
>>820
C:\Users\<ユーザー名>はある?
windows板行って来い。

>>821
今の時期だとvistaってオチだろ。
c:\Documents and Settings\ユーザ名は下位互換のためのソフトリンクだから。
827820:2007/10/14(日) 02:31:13
なるほど……あった……orz
プログラム学ぶ上でそうしたいとは思ったのですが、図書館に行っても「パソコン基本入門〜おじいちゃんでもできる!メールの方法〜」とかしかなく……
独学ってのは案外いやなところでつまずく;

ありがとうございました
828820:2007/10/14(日) 02:37:37
>>826
次からはそこに聞いたほうがよさそうですね
了解です
829デフォルトの名無しさん:2007/10/14(日) 02:40:49
String配列の要素数ってどうやって調べますのん?
length()もsize()も使えないYO!
830817:2007/10/14(日) 02:41:03
>819

復元するのにoosを入れたのはバイト配列にする際に先頭4バイトのマジックナンバーなどが抜け落ちていたためです。
(oosを介しても同様でしたが・・・)

import java.io.ObjectOutputStream;
import java.util.*;
import java.io.*;

public class Test2 {
protected static final int BUFF = 512;
public static void main(String args[]){
Hashtable hash = new Hashtable();
try{
ByteArrayOutputStream baos = new ByteArrayOutputStream(BUFF);
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(hash);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);

byte[] b = new byte[baos.toByteArray().length];
//ここで情報が抜け落ちる
bais.read(b);
System.out.println();

}catch(Exception e){
e.printStackTrace();
}

}
}
831デフォルトの名無しさん:2007/10/14(日) 02:45:23
>>829
.length
括弧いらない
832デフォルトの名無しさん:2007/10/14(日) 02:45:35
>>829
String配列だろうがint配列だろうが配列は配列
lengthしかないのは分かりきってるじゃないか
833デフォルトの名無しさん:2007/10/14(日) 02:54:10
>>830
bais.read する必要なんかなくて、baos.toByteArray() をそのまま使えばバイナリ配列になってるんじゃないの?
834デフォルトの名無しさん:2007/10/14(日) 02:54:53
>>831
>>832

ありがとう!!
()いらないなんて想定の範囲外だった。
ホンマにありがとうやでー
835デフォルトの名無しさん:2007/10/14(日) 03:16:52
じゃあ今までどうやって配列の要素数を求めてたんだよって聞こうと思ったけど
アプリケーションプログラミングから入ると最初に出会う配列ってString配列なんだなw
836デフォルトの名無しさん:2007/10/14(日) 03:44:22
>833
いやこれは簡素化したもので、baosやoosはネットワークの向こう側で見えない。
837デフォルトの名無しさん:2007/10/14(日) 04:00:52
見えなくても、バイト列を送ってるわけでしょ。
それそのままでいいじゃん。
838デフォルトの名無しさん:2007/10/14(日) 17:55:41
ttp://www7a.biglobe.ne.jp/~java-master/samples/string/HankakuNumberToZenkakuNumber.html

このサイトの
if (c >= '0' && c <= '9') {
sb.setCharAt(i, (char)(c - '0' + '0'));

って部分なんですがどうしてc - '0' + '0'としか書いてないのに0以外の数も変換されるんですか?
839デフォルトの名無しさん:2007/10/14(日) 18:01:25
0からみた9と、0からみた9は相対的に文字コードの距離は相対的に等しいから
まず、ある全角数字の相対コード(変な言い方ですが・・)を計算(c - '0')し
その後絶対的な位置として( + '0')をしてやる。

こんな感じっしょー
840デフォルトの名無しさん:2007/10/14(日) 18:02:00
うわ、相対的にって使いすぎww
ごめんなさい。恥ずかしい。。
841デフォルトの名無しさん:2007/10/14(日) 18:03:06
>>838
0が変換されるのがわかればわかるんじゃね
842デフォルトの名無しさん:2007/10/14(日) 19:14:15
たった10通りだから、紙の上で確かめてみるのもイイかも。
843デフォルトの名無しさん:2007/10/14(日) 19:27:45
>>838
前提として、文字コードでは0〜9が連続して並んでいる
全角0〜9も同様

>if (c >= '0' && c <= '9') {
これで対象が全角数字の場合に限定している

>c - '0'
これで、文字コードから一桁数値に変換する。
'0'-'0'==0
'1'-'0'==1
...
'9'-'0'==9

>c - '0' + '0'
数値に変換した物に'0'を足すことにより、半角数値となる。
0+'0'=='0'
1+'0'=='1'
...
9+'0'=='9'
844デフォルトの名無しさん:2007/10/14(日) 19:31:05
文字で考えるんじゃなくてunicodeのコードポイントで考えれば良いんじゃない?
そこら辺が分からないのかな。
845デフォルトの名無しさん:2007/10/14(日) 19:35:29
スレッドがタイムアウトするってどういう状態なのですか?
846デフォルトの名無しさん:2007/10/14(日) 19:35:45
いや、もう分かってるんだろうよ
847デフォルトの名無しさん:2007/10/14(日) 20:44:52
GCっていつおこっているか、どのくらいの時間がかかっているか知りたいのですが、
どうやってしればいいのでしょうか?
また、GCのチューニング方法が載ってるサイトや本はないでしょうか?
今、eclipse、Java4、Tomcat、strutsで開発しています。
848デフォルトの名無しさん:2007/10/14(日) 20:52:02
-verbose:gc オプションを付けて起動すれば表示される
849デフォルトの名無しさん:2007/10/14(日) 20:56:31
javaコマンドのVM引数読め。
それかプロファイラのようなものでも監視できる奴が無いわけでもない。
850デフォルトの名無しさん:2007/10/14(日) 21:00:33
>>848 >>849
ありがとうございます。

すみませんが、javaコマンドのVM引数ってどうやって読むんですか?
監視できるツールは普段はjrocketを使ってるんですけど、SunのJavaではやりかたがわからなかったんです。
851デフォルトの名無しさん:2007/10/14(日) 21:12:42
>>847
なんで今、サポートが切れる直前の1.4で開発しているのかは知らんけど、5.0以降ならJDKに付属しているJConsoleってツールを使えば簡単にモニタリングできる。
852デフォルトの名無しさん:2007/10/14(日) 21:20:17
>>850
jrocketワロタw
853デフォルトの名無しさん:2007/10/14(日) 21:24:27
jrockitな
854デフォルトの名無しさん:2007/10/14(日) 21:34:02
DoJaだからか? < 1.4
855デフォルトの名無しさん:2007/10/14(日) 21:50:57
>>851
jrockitは1.4.1ベースなのでEOF期間終了してる。EOF期間中なのは1.4.2。
というか現実問題java7が出たらjava5.0がEOF突入するのに日本じゃまだ1.4.2ベースなんだよな。

5,6で最適化が全然違うんだが・・・。
856デフォルトの名無しさん:2007/10/14(日) 22:00:33
jrockitの5.0ベースのやつ、もう出てるんじゃなかったっけ?
世界最速をうたってたと思うけど
857デフォルトの名無しさん:2007/10/14(日) 23:14:12
世の中誰もが最新の環境を追っかけてくれていたら苦労しないんだが、そうもいかんって顧客は多いんだ、これが
でも開発側は使う使わないは別にしても最新の情報を追っかけてないと死んじゃうよ>>850
858デフォルトの名無しさん:2007/10/14(日) 23:58:39
>>857
Java6にするだけで速度がかなりあがりますよ、とプラス面を大きく言えば結構簡単に納得してくれるもんだよ
特に未だに1.4.2を使えといってくるところは、Javaは遅いという幻想を抱いているんでパフォーマンスをちらつかせると効果高い
859デフォルトの名無しさん:2007/10/15(月) 00:05:21
>>858
1.4から1.6に更新したとき、パフォーマンスが三割以上上がってマジビビったわ。
860デフォルトの名無しさん:2007/10/15(月) 01:59:04
jrockitってことはサーバー用途だからやっぱ枯れて安定したやつを使いたいんだろ。

ただ、jrockitは最適化が速度重視で安定性重視じゃないしHotSpot技術とは別の最適化方法だから
serverモードでHotSpotが効いて来た頃のsun java6との総合性能でどういう違いがあるか気になる。

>>858
javaやswingが未だに重いとか言ってる連中は頭が1.3,1.4で止まってるからな。
あの頃とはSun HotSpot VMの実装が別物なのになぁ・・・。

今はCDCで普通にSwingが動く時代なのに。

>>859
5.0のクラスファイルをリコンパイルなしに6で
実行してSwingが明らかに早くなってたんだから1.4~6ならそりゃビビるわw
ただ、6は目に見えるバグが多いな。やっと直ってきたが。

問題はjdk6uNとjdk7か。
861デフォルトの名無しさん:2007/10/15(月) 08:57:00
6でリコンパイルって速度になんか関係あるの?
862デフォルトの名無しさん:2007/10/15(月) 10:43:02
>>861
少しはあるよ。
有名どころでは、文字列連結の+演算子の展開に
StringBufferを使ってたところをStringBuilderにしてたりとか
863デフォルトの名無しさん:2007/10/15(月) 12:43:29
Javaで、「あったら便利」と思うようなシステムを作ろうと思っているのですが、
何かいいアイデアがあったら教えてください。
864デフォルトの名無しさん:2007/10/15(月) 12:55:51
すみませんが、質問です。
Apache Tomcat(4.1.34)を使っているのですが、server.xml の context要素の
子要素で
<Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1"/>
というものがあるのですが、
このDevLoaderというクラスは何をするものなのでしょうか?
Google検索してみましたが、よくわかりません。
865デフォルトの名無しさん:2007/10/15(月) 12:56:45
>>863
ちょっと考えてみたけど、以外と浮かばないもんだなあ。
Javaの特性から考えると、OSや環境に依存するようなシステムより、JavaVMを生かしてOSの違いを無視できる、
ネットワークを活用したシステムなんかを作ってみたらおもしろいんじゃなかろうか。
・・・と、ここまで書いてなんだけど、スレ違いでわなかろうか?
866デフォルトの名無しさん:2007/10/15(月) 14:16:34
>>863
RSSリーダー兼スクリーンセーバー
867デフォルトの名無しさん:2007/10/15(月) 15:18:46
>>863
俺のアイデアメモから一つ出してあげる。

Skypeログを2ch鯖形式で見せるソフト。
Javaでなくても.NETとかでもSkypeAPIアクセスできるからJavaである必要はないけど。

これがあれば、2chブラウザでSkypeログが見られる。
868デフォルトの名無しさん:2007/10/15(月) 17:02:51
プログラムの「前」ってどっちですか?

static void main(String[] args)
{
  int k = 0;             ← こっちが前?
  for (int i = 0; i < 10; i++) {
    k += i;
  }
  System.out.println("こたえ=" + k);  ← こっちが前?
}
869デフォルトの名無しさん:2007/10/15(月) 17:14:53
>>868
パパかママに聞こうね
870デフォルトの名無しさん:2007/10/15(月) 18:37:48
>System.out.println("こたえ=" + k);  ← こっちが前?

ていう発想が理解できないのだけど、もう少し分かりやすくいってくれないか?
871デフォルトの名無しさん:2007/10/15(月) 18:59:18
「前」というのは、時間的に言うと後ろだし、視覚的に言うと先になる。
日本語の不思議である。

筒井康隆だかの文でも見たような気がする。唯野教授だったかな?

まあ、定義は無いってコトだよね。文脈によって変わるから。
872デフォルトの名無しさん:2007/10/15(月) 19:00:58
って、アセンブラスレにも出没してたw
なんだこいつwwww
873デフォルトの名無しさん:2007/10/15(月) 19:02:41
>System.out.println("こたえ=" + k);  ← こっちが前?

こっちを前にする方法(Java)はあるのか?
874デフォルトの名無しさん:2007/10/15(月) 19:27:06
Java と アセンブラでは、「前」 が全然逆!

アセンブラ
http://pc11.2ch.net/test/read.cgi/tech/1172916032/135

Java
http://pc11.2ch.net/test/read.cgi/tech/1190169553/873
875デフォルトの名無しさん:2007/10/15(月) 19:30:06
まえ=forward
うしろ=backward
の意味の場合は System.out.println の方

まえ=before
あと=after
の意味の場合は int k = 0 の方

たぶん。
876デフォルトの名無しさん:2007/10/15(月) 19:44:37
じゃぁ
前方参照ってどっち?
後方参照ってどっち?
877デフォルトの名無しさん:2007/10/15(月) 20:22:48
Callable を使ったとき call は Exception を投げられるけど
InterruptedException はキャッチして復元するのが定石?

そのままだと Future 使ったときに get 用にと食われて
スレッドの大元まで伝わらないんだけど
878デフォルトの名無しさん:2007/10/15(月) 22:06:21
>>876
アセンブラで言うところの前方参照は、ソースファイルの下の方へ飛ぶJUMP命令など。
下はまだアセンブルしてないので距離(バイト数)が確定してない。そのためJUMP命令の長さも確定できない。
JUMP命令の長さを大きく確保して、コードが確定してから余った部分をNOPを埋めたりする。
879デフォルトの名無しさん:2007/10/15(月) 22:35:47
Cの前方参照も、下の方のまだコンパイルされてない定義を参照することだね
880デフォルトの名無しさん:2007/10/15(月) 22:37:03
つまり「下」が「前」という事ですね!
881デフォルトの名無しさん:2007/10/15(月) 23:33:51
いきなり前みせ
882デフォルトの名無しさん:2007/10/16(火) 00:11:49
宿題スレの方(Java宿題スレの238)に丸投げしている物ですが、javax.vecmathパッケージのGVectorとGMatrixのクラスが
どのようにして動いているのか分かったら自分で解けそうなので、こちらで質問させてください。
GVedctorクラスには、void mul(GVector v1, GMatrix m1) というメソッドが用意されているのですが、
自分で用意したベクトルv1と行列m1をこちらのメソッドに投げて、乗算した結果をコンソール画面に
出力させるにはどうすれば良いのでしょうか?
同じようにGMatrixクラスにも、void mul(GMatrix m1, GMatrix m2) というメソッドが用意されているのですが、
同じように自分で用意した行列m1とm2をこちらのメソッドに投げて、乗算した結果を出したいです。
883デフォルトの名無しさん:2007/10/16(火) 00:29:22
ttp://java.sun.com/products/java-media/3D/forDevelopers/J3D_1_3_API/j3dapi/javax/vecmath/GVector.html
>void mul(GMatrix m1, GVector v1)
> Multiplies matrix m1 times Vector v1 and places the result into this vector (this = m1*v1).
>int getSize()
> Returns the number of elements in this vector.
>double getElement(int index)
> Retrieves the value at the specified index value of this vector.
試してないけど、このあたりでできんじゃない?
884デフォルトの名無しさん:2007/10/16(火) 00:35:03
質問です。
激しくJava初心者なんで変なこと言ってたらすいません。
Javaで区分積分法を使って下の値を求めます。
関数x^2があり、その関数とx軸と区間[0,10]に囲まれたの面積Sの近似値を区間[0,10]を「5000分割」して求めます。
実際の面積Sは、普通に積分すれば求まります(S=∫[0,10]x^2 dt)がJavaで区分積分法のプログラムを作ることができません。
どなたかご教授ください。
885デフォルトの名無しさん:2007/10/16(火) 00:38:44
>>884
積分とはどういう意味かを理解していれば単純な長方形の面積の和となることくらい解るだろ?
後はfor文をつかって面積を足しこんでいけばいいだけ。
なにが解らないんだ
886デフォルトの名無しさん:2007/10/16(火) 00:42:21
>>885
激しくJava初心者というよりは激しく数値計算初心者じゃまいか?
887882:2007/10/16(火) 00:42:51
>>883
Javadocを読むと、このようなコンストラクタやメソッドが用意されている、
というのは分かるのですが、それを実際のプログラムに応用ができないのですorz
例えば、
double[] v1 = new double[3];
double[][] m1 = new double[3][3];
double[][] m2 = new double[3][3];
こういったメンバがある場合だと、どのようにメソッドを使えば、
乗算した結果が表示されるのでしょうか?
888デフォルトの名無しさん:2007/10/16(火) 01:00:42
>>887
double[][] m1 であるならば、行列M の要素M1[i, j] が各配列の要素に対応するんだよ
M1 + M2 であれば全ての要素を足せばいい。
forで二重ループつくって、m[i][j] = m1[i][j] + m2[i][j]
889デフォルトの名無しさん:2007/10/16(火) 01:01:31
>>884
プログラム初心者は入門本でも読んでからJava初心者を名乗るといいと思う
890デフォルトの名無しさん:2007/10/16(火) 01:04:25
こんな感じか

GVector v=new GVector(3);
v.setElement(0, (int)(Math.random() * 9) + 1);
v.setElement(1, (int)(Math.random() * 9) + 1);
v.setElement(2, (int)(Math.random() * 9) + 1);

GMatrix mat1 = new GMatrix(3, 3);
mat1.setElement(0, 0, (int)(Math.random() * 9) + 1);

public static void printvector() {
System.out.println("ベクトルの値");
for (int i = 0; i < getSize(); i++) {
System.out.println(v.getElement(i));
}
}

>>888
そこまでは出来てるみたい。GVectorを使って同じ事をしろって宿題だそうよ
891デフォルトの名無しさん:2007/10/16(火) 01:30:11
>>890
もう宿題スレの方に完成例を投げてあげたらいいんじゃね?
892デフォルトの名無しさん:2007/10/16(火) 01:33:30
>>879
ecma-262だとまだ定義されてない関数を参照する事を後方参照と呼ぶから意味が逆だな。
実行時にソースコードの存在があるかないか無いかの違いか?
893882:2007/10/16(火) 01:40:32
>>890
ありがとうございます。
一応、単純にベクトルと行列を出力するコードは書いてみました。
実際にこれらを掛け算する場合は、どういったメソッドを書けば良いのでしょうか?
894デフォルトの名無しさん:2007/10/16(火) 01:44:46
積分厨をいじめすぎじゃないか。きっとやつも涙目だしwwwwwwwww
895デフォルトの名無しさん:2007/10/16(火) 01:54:33
画像の輪郭をエッジ検出で出せるプログラムを考えているのですが、
どういう風に作っていけば良いですか?流れを教えてください。
よろしくお願いします。
896882:2007/10/16(火) 01:54:36
後、以下の箇所でその下に書いたエラーが出てしまいます。

v.setElement(0,〜);
Syntax error on tokens, AnnotationName expected instead
v.getElement(i)
Cannot make a static reference to the non-static field v
897882:2007/10/16(火) 02:31:20
色々とやってるのですが駄目ですorz
898デフォルトの名無しさん:2007/10/16(火) 02:44:26
ところで、ベクトルは1列の行列と考えて良いのでしょうか?それともコンセプト的に違うものなのでしょうか?
899デフォルトの名無しさん:2007/10/16(火) 02:44:33
明日の何時まで?
900882:2007/10/16(火) 02:46:28
>>898
一列の行列と考えて頂いて結構です。

>>899
10月16日の朝の6時までですorz
後3時間ちょっとですorz
901899:2007/10/16(火) 03:03:09
>>882
とりあえずざっと作っといた。宿題スレの方を見るよし。
俺は眠いからもう寝る。上手く行かなかったら自力でなんとかしてくれ。
902デフォルトの名無しさん:2007/10/16(火) 03:52:13
というか高校行け
903デフォルトの名無しさん:2007/10/16(火) 04:03:46
Javaプログラミングの質問とはちょっとずれるかも知れませんが教えてください。
開発環境はWindowsXP、JRE,JDK共に1.6です。

URLConnectionにて、とあるサーバへHTTPS通信をするプログラムを書き、
そのクラスファイルをバッチファイルからstart javaw 〜により起動しています。

この時、サーバへの接続において、Javaコントロールパネルにて設定した接続方法を
使用してもらいたいのですが、どうもそれが無視されているようなのです。
具体的に言うと、プロキシサーバの設定が反映されずに、直接続されてしまいます。

ブラウザ内で動作するアプレットではコントロールパネルの設定が使われているようなので
スタンドアロンアプリでもその設定が使われると考えていたのですが、間違いでしょうか?

または、動作させるべきjavawが違うのでしょうか?
Windowsの環境パスではJDKのbinディレクトリが指定されていましたので、
細かにバージョンのあるJREディレクトリ中の最新バージョンのjavawでも試してみましたが
ダメのようでした。

解決方法、または些細なアドバイスでもいただけるとありがたいです。
よろしくお願いします。
904882:2007/10/16(火) 04:34:39
>>901
ありがとうございます。動作確認しました。
あちらの方にもお礼を書いておきます。
905デフォルトの名無しさん:2007/10/16(火) 06:48:26
>>903
>URLConnectionにて、とあるサーバへHTTPS通信をするプログラム
>Javaコントロールパネルにて設定した接続方法
この2つが関連していないだけじゃないのか?
コントロールパネルで設定できるプロキシ設定ってJREのアップデートとかに使用するだけで、プログラムの実行には影響がないと思う
あったとしたらどうやって解除するの?って話になるじゃん。
プロキシはプログラム内で明示的に指定しないと繋がらないと思われ。
906903:2007/10/16(火) 08:29:34
>>905
ご返事ありがとうございます。
Javaコントロールパネルの通信設定が関係していないのでは?
の件について、ローカルのプロキシを立てて実験してみましたが、
やはり、ブラウザ上でのアプレットでのみこの設定は効くようです。
つまりあれはJavaプラグインのみの設定画面という事なのでしょうかね。

色々と調べてみたら、どうやらJavaでは昔、システムプロパティに
プロキシの設定を保持していたようです。
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/net/proxies.html
そこで2.1)HTTPの項目にある、実行時にシステムプロパティを設定する方法で
-Dhttps.proxyHost -Dhttps.proxyPort
をバッチファイルに追記したところ、プロキシを使うことが出来るようになりました。
というわけですので、取り敢えず解決とさせていただこうと思います。
皆さんどうもありがとうございました。
907デフォルトの名無しさん:2007/10/16(火) 15:26:16
Javaで作ったGUIアプリケーションをWindows向けに配布する場合の形式について質問があります。

まずダブルクリックで起動できるjarファイルを試してみたのですが、
・javawとの関連付けがうまくされていない人が結構いる(起動できない!)
・アイコンを設定できない
・見慣れない
と言う理由でさようならしました。

次にbatファイルを試してみましたがダブルクリックjarと似たような理由でやめました。

そこで、関連付けとは無縁でアイコンも設定できてエンドユーザにも馴染みのあるexeファイルで
起動ファイルを作ればいいじゃないか!と思ったのですが、この起動ファイルどうやって作るのが良いんでしょう?
Cを覚えるよりも簡単に出来る方法があれば教えてください。
908デフォルトの名無しさん:2007/10/16(火) 15:32:06
>>907
C#を覚える。
909デフォルトの名無しさん:2007/10/16(火) 15:32:10
Java1.6のTrayIconを使ってるんですが、
PNGのアルファチャンネルが適用されないみたいで透過のオンオフ1bitになってしまいます。
これをちゃんと8bitアルファにする方法ありますか?

ググったらWindowsではそうなる、MacやLinuxでは大丈夫、
というような情報があったんですけど解決策はみつけられませんでした。
910デフォルトの名無しさん:2007/10/16(火) 15:33:15
>>907
exewrapとかjsmoothとかlaunch4jとかでいいんじゃないすか
911907:2007/10/16(火) 16:38:20
>>910
おぉ〜、こんな良い物があったんですか。
想定の範囲外でした。

exewrapのサイトには他の二つの事が簡潔にまとめられていて分かりやすかったです。
レスありがとうございました。
912デフォルトの名無しさん:2007/10/16(火) 18:34:40
あるグループウェア上で管理してる、社内の人間のスケジュールデータを表示するページがあり、
このhtmlを解析して、スケジュールデータをmysqlで管理することになりました。

htmlソースをStringにいれて、解析モジュールに渡すところまでは作成しましたが、
このあとをどうするのがスマートなのか中々思いつきません。

どなたかよかったらご教授ください。htmlパーサなども見て見ましたがいまいちです。
913デフォルトの名無しさん:2007/10/16(火) 18:40:21
本末転倒って言葉は死語になったらしいなw
914デフォルトの名無しさん:2007/10/16(火) 18:47:50
>>912
たぶんスマートなのは、グループウェアの改修
915デフォルトの名無しさん:2007/10/16(火) 19:03:50
>>914
確かにその通りですが、グループウェア(サイボウズ)をどうこうはできませんし・・・

916デフォルトの名無しさん:2007/10/16(火) 19:10:47
>>909
アイコンのαを1bitしか認識しないのはwinの仕様じゃなかったか?
vistaで変更されたはずだが。
917909:2007/10/16(火) 19:18:15
>>916
やはりwindowsでは仕方ないんですか・・・
でもVistaでやってます。変更されてないんですかね。
918デフォルトの名無しさん:2007/10/16(火) 19:23:04
質問です。
EclipseかEmacsで、プロパティの定義部分にタグジャンプする方法はないでしょ
うか?今はgrep以外に方法がないので、かなり面倒なのです。
919デフォルトの名無しさん:2007/10/16(火) 19:45:26
>>917
PNGのフォーマットは?
920909:2007/10/16(火) 20:29:43
>>919
24bit、8bitアルファチャンネル付きのPNGです。
iTunesみたくアンチかかったきれいなアイコンをタスクトレイに表示したいんですけど・・・
921デフォルトの名無しさん:2007/10/16(火) 21:30:18
>>920
PNG-32のARGB8bitでつくってみて変わる?
922デフォルトの名無しさん:2007/10/16(火) 22:38:20
うまく表現できませんが、普通の変数とオブジェクトの違いが分かりません。
今の段階では両方とも何か数値を放り込んで
最後にSystem.out.printlnで表示するだけって感じなので・・・

全然違うよって言われそうですがゆくゆくは何かメリット、デメリットや使い分けがあるのでしょうか
923デフォルトの名無しさん:2007/10/16(火) 23:04:25
>>922
変数とオブジェクトは全く違う概念だ。

たぶんプリミティブ型と、オブジェクトで勘違いしている?
まず今の段階が何のことか分からん。
メリットデメリットは、しっかり教科書を読んでください。
924デフォルトの名無しさん:2007/10/16(火) 23:11:04
>>922
どんな段階かは知らんけど、変数とオブジェクトは概念からして違う
数値ってのは変数じゃなくて、変数に入っている値
オブジェクトは(厳密には違うけど)そんな値に近い概念
変数ってのはあくまで「値」の場所を示すラベルのようなもん
925デフォルトの名無しさん:2007/10/16(火) 23:16:06
Panelに長方形を表示する簡単なプログラムを作りたいのですが
以下のようにすると
"Exception in thread "main" java.lang.NullPointerException"
と出てしまいます。なぜでしょうか?

public class zukei {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();

frame.add(panel);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0)
; }
});

Graphics g = panel.getGraphics();

panel.getGraphics();
panel.setBackground(Color.red);
g.setColor(Color.blue);
g.fillRect(0,0,10,10);
frame.setVisible(true);
}

}
926デフォルトの名無しさん:2007/10/16(火) 23:19:15
その java.lang.NullPointerException の横に、ソースファイル名と行番号が出てない?
927デフォルトの名無しさん:2007/10/16(火) 23:24:55
>>926
↓のようにでてきます。29行目は"g.setColor(Color.white);"のとこですね。

Exception in thread "main" java.lang.NullPointerException
at zukei.main(zukei.java:29)
928デフォルトの名無しさん:2007/10/16(火) 23:25:17
>>920
たぶん、フレームを表示する前に描画することはできない
929928:2007/10/16(火) 23:25:50
間違えた、>>925 ですorz
930デフォルトの名無しさん:2007/10/16(火) 23:29:38
>>929
Frameは表示できました!
でも、白い長方形が出てこないようですorz
931デフォルトの名無しさん:2007/10/16(火) 23:33:26
>>928
コードは概ねあっているんだが、書く場所が違う。
paintComponents とか repaint でググってみるべし。
あと少しだ、頑張れ
932デフォルトの名無しさん:2007/10/16(火) 23:36:15
>>927
だったら29行目をよく見ることだな。

>>925 を数えたら21行しか無いぞ?
933デフォルトの名無しさん:2007/10/16(火) 23:53:56
>>931
ありがとうございます。
とりあえずframe.repaint(g);を最後の方の行に書き込むのかな?と
思ったのですが、どこの行に書いてもやっぱり長方形は表示されません…

>>932
書き込み時に無駄なimport文消してたらこうなっちゃったみたいです。
934デフォルトの名無しさん:2007/10/17(水) 00:00:28
描画は paintComponent をオーバーライドして、その中でしなければならない。
でなきゃいつ誰に上書きされても仕方がない。
こんな感じ。

public class zukei {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.blue);
g.fillRect(0, 0, 10, 10);
}
};
panel.setBackground(Color.red);
frame.add(panel);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
frame.setVisible(true);
}
}
935デフォルトの名無しさん:2007/10/17(水) 00:07:36
>>934
おお!ありがとうございます!
やっぱ勉強不足っすね俺orz
936デフォルトの名無しさん:2007/10/17(水) 01:04:00
>>934
たびたび質問して申し訳ないのですが、
そのようにJPanelを作る時(無名クラス?)でないところに
paintComponentを記述するときはどうすればいいのでしょうか?
937デフォルトの名無しさん:2007/10/17(水) 01:17:20
普通に JPanel のサブクラスを作る

public class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
...
}
}

MyPanel panel = new MyPanel();
938デフォルトの名無しさん:2007/10/17(水) 01:22:58
>>936
説明が足りないと思うけど、どうなって欲しいの?
939デフォルトの名無しさん:2007/10/17(水) 01:47:13
>>938
あらかじめパネルがフレームに張られている状態で
そのパネルにfillRectで描画したい、という感じです。
940デフォルトの名無しさん:2007/10/17(水) 01:57:47
既に上に提示されてるじゃん。
941デフォルトの名無しさん:2007/10/17(水) 01:58:58
ていうか、自分の思っていることをちゃんと(問題として)説明出来ないのが、今のおまえの限界なんじゃないか?
942デフォルトの名無しさん:2007/10/17(水) 02:04:57
>>941
すいません、リアルで初心者なので…orz
Cと比べてJAVAは用語やらが多くてかなりパニくります…
943デフォルトの名無しさん:2007/10/17(水) 02:27:40
>>942
多分Cやってるとみて怯んだ奴が何人かいると思うがww

paintComponentを記述する目的が見えないから困っていた。
paintComponentって初心者がいきなり手を出す部分じゃない。
paint関係は、VB何かのWindows系のGUIをやってると
ちょっと戸惑うAWT,Swingの入り口。

何かやりたい事に対して道具を間違ってるんじゃないかという疑問がある。
paintComponentやpaintは、画面上で描画が必要になったら
毎度呼び出される「描画ロジック」を置いておく場所。
恐らく、静的なイメージバッファに絵を描きたいという用途だと思うが
そうだとすると、バッファを別に用意して描画はバッファにたいして行い
paint系はそのバッファの内容を描画する、とした方がいいのでは?

説明しきれてないな・・・・
944デフォルトの名無しさん:2007/10/17(水) 02:41:37
CとかJavaとかの言語に関する問題でなく、ウィンドウシステム特有の問題だね。
Cしかやってなくても、Win32SDKなりXの経験があれば気が付く問題だと思う。
945デフォルトの名無しさん:2007/10/17(水) 02:43:11
用語が多くてパニックになるような初心者はGUIに手を出す前に
もっと言語そのものやそのバックグラウンドの設計思想とかを勉強したほうがいいんじゃないか
javaのGUIは言語そのもので規定されているわけでなく
その上に構築されているフレームワークだから
言語自体の言葉とフレームワークの言葉の両方が混じり合うので本当の初心者は面倒なことになる場合が多い
946デフォルトの名無しさん:2007/10/17(水) 02:51:12
CってCUIしかやったことないの?
Swingは描画するだけなら特に変なことはやってないけど。
947デフォルトの名無しさん:2007/10/17(水) 05:03:03
>>943のやりたいことと、やつの能力がまだつりあってない。今はまだ、素直にpaint()を上書きでオk
948デフォルトの名無しさん:2007/10/17(水) 07:52:47
>>942
>Cと比べてJAVAは用語やらが多い
用語が多いのは、色々な機能や概念を逐一説明するのが面倒だからだよ
Cでも用語多いぞ、ほとんどはその現場固有の呼び方だから、一般的に通じない事も多いけど…

まずはJavaの基本機能を習得してからGUIに入るべきだろう
少なくとも継承とオーバーライドは覚えろ
その上で最初に覚える事の少ないAppletで実装する事がいいと俺は思う
949デフォルトの名無しさん:2007/10/17(水) 08:11:54
俺は継承の意味とかもGUIやりながら覚えたけどな
適当にペイントツール作った
まったく使い物にはならなかったけど動くだけでそれなりにモチベ上がる
950デフォルトの名無しさん:2007/10/17(水) 08:17:04
>>949
やりながら覚えるのはありとは思うけど、一度にたくさんの事を覚えられる人は少ないし、なんだかんだと効率が悪いよ
別に継承を完全に習得してからにしろ!というわけじゃなくて、
class Foo extends Bar {}
では継承が行われていて、Barの機能を拡張している程度の理解でいい。

クラスって何?って段階で継承って何?というのは流石に厳しい。
951デフォルトの名無しさん:2007/10/17(水) 13:09:18
Jarから不要なclassファイルを取り除くツールってありますか?
952デフォルトの名無しさん:2007/10/17(水) 13:33:20
”不要”なクラスの特定が困難。
リフレクションとか使われたら、もう訳ワカラン
953デフォルトの名無しさん:2007/10/17(水) 14:53:18
javac *.java -source 1.2 -target 1.2
JDK1.6でこのコンパイルが通りました。

おそらく古いVMでも動作するようになるので、これからはコンパイルが通る限り
このオプションを付けていこうと思うのですが何かデメリットはありますか?
954デフォルトの名無しさん:2007/10/17(水) 14:58:03
GenericsとかEnumとか使う気無しって事?
955デフォルトの名無しさん:2007/10/17(水) 16:05:57
コンパイルが通る限り
956デフォルトの名無しさん:2007/10/17(水) 16:40:22
Java MEのCDCが1.4.2相当らしいから、1.4でいいんじゃないの?
957デフォルトの名無しさん:2007/10/17(水) 17:05:12
>>953
それでコンパイルが通ったからといって1.2のVMを含む環境で動作するとは限らない。
1.2より新しい環境で追加されたクラスやメソッドを使用していてもコンパイルを通るから。
1.2のVM向けのバイトコードしか生成しなくても、使っているメソッドとかまではチェックが入らない。
958953:2007/10/17(水) 17:56:39
レスありがとうございます。

どうやらJDK1.2で書かれたコードを1.2向けにコンパイルするというオプションなので
>>953は全く見当外れのレスですね。

JDK1.6を使ってコードを書く以上デフォルトのソースリリースである
1.5未満のバージョンは切り捨てなければいけないみたいです。

とは言っても、世の中の大半のマシンはJRE1.5未満だと思うので
一般向けに公開するファイルを作るにはJDKを1.4あたりにバージョンダウンしないといけなさそうです。
959デフォルトの名無しさん:2007/10/17(水) 18:09:43
>世の中の大半のマシンはJRE1.5未満だと思うので

脳内ソースですか
960デフォルトの名無しさん:2007/10/17(水) 18:16:52
いちおう、1.3以降で新しく導入されたクラスやメソッドを慎重に避けながらコーディングすれば、1.2で動くものも作れるけどな
961デフォルトの名無しさん:2007/10/17(水) 18:25:44
あんまりバージョンを低く設定しすぎると結果的に遅いJVMで動かすことになってJavaおせーとか思われそうだ
962デフォルトの名無しさん:2007/10/17(水) 18:26:06
>>960
でも、たとえば String#split とか今じゃ当たり前のように
使っているメソッドすら使えないってのは相当きついだろうね
963デフォルトの名無しさん:2007/10/17(水) 18:37:01
win98やマックは5が最高だからなあ
マックはナイトリーなら6が出てきてるけど
964デフォルトの名無しさん:2007/10/17(水) 18:43:37
Windowsについて知らんけど
Javaって一般アプリには全然浸透してないよね
ダウンロードから起動するまでの道筋がはっきり確立していないせい?
もうちょっとなんとかして欲しい。
965デフォルトの名無しさん:2007/10/17(水) 18:46:45
わざわざ50M近いランタイム落として実行しようって気にならないんだろう
966デフォルトの名無しさん:2007/10/17(水) 19:02:01
Java SE 6 Update Nでなんとかなるのかな。それって。
967デフォルトの名無しさん:2007/10/17(水) 19:23:10
>>964
javaで作ったアプリどうやって公開しようかと悩みつつどうせ完成してないし悩んでも無駄無駄

解凍してクリックで起動できたらそれでいいや
968デフォルトの名無しさん:2007/10/17(水) 19:49:33
>>964
JavaWebStartがあるだろ
969デフォルトの名無しさん:2007/10/17(水) 20:20:02
webstartもjreなかったら駄目じゃん
970デフォルトの名無しさん:2007/10/17(水) 22:10:45
execwrap
971デフォルトの名無しさん:2007/10/17(水) 22:11:49
exewrap
972デフォルトの名無しさん:2007/10/17(水) 22:39:24
状況:
 JavaWebStart 使ってます。
 あるユーティリティクラスに引数1つを持つメソッドが3つあって、
 long, Date, Calendar で各々オーバーロードしてます。開発ターゲットは 1.4です。
 ほとんど全てのユーザは 1.4 で、問題ないのですが、
 あるユーザは 1.6, 1.5, 1.4が入っていて、1.6 の javaws で起動したときのみ(キャッシュは同一かな?)、
 Date を引数にした関数が not found になります。
 以下のようにしても忽然と姿を消しています。

Method[] methods = TheClass.class.getMethods();
for (int i=0; i<methods.length; i++) {
System.out.println(methods[i]);
}

このユーザのPCからは 1.6 を除いてもらうことにしたのですが、
これに似たような状況を見聞きした方はいらっしゃいますか?
973デフォルトの名無しさん:2007/10/17(水) 22:55:55
exewrapもjreいるだろがw
974デフォルトの名無しさん:2007/10/17(水) 23:09:48
>>973
jre同梱してしまえ
975デフォルトの名無しさん:2007/10/17(水) 23:24:01
すみません、質問です。
javaアプリケーションを用いて描画を行い、描画された物をファイルに保存するプログラムを作成しています。

現在、Frameを用いて新たにウィンドウを開き、そこにマウスで描画を行い、ボタンを配置して閉じる事が
できるようになりました。描画には、Graphics、getGraphicsを使っています。
しかし、ボタンを押すことでファイルに保存を行い、ウィンドウを閉じる…というプログラムができません。
ファイル保存するためには、imageファイルにすると思っているのですが、変換が上手く行かず、
さらに本当にimageにするべきなのか解らず右往左往している状況です。

どなたかご教授よろしくお願います。
976デフォルトの名無しさん:2007/10/17(水) 23:32:22
とりあえず以下の3点をよろしく。
・GraphicsをもらうためのgetGraphicsはどのクラスのgetGraphicsを使ってるのか
・そのimageファイルっていうのは具体的に何のことを言ってるのか
・その上手くいかない変換っていうのは具体的にどうやってるのか
977975:2007/10/18(木) 00:02:11
>>976さん、返信ありがとうございます。
・GraphicsをもらうためのgetGraphicsはどのクラスのgetGraphicsを使ってるのか
フレームのクラス内にGraphicsの定義を行っています。getGraphicsはそのクラス内にある
マウスイベントを受け取るリスナーのクラス内で使用しています。

・そのimageファイルっていうのは具体的に何のことを言ってるのか
jpegやgif、pngといった画像ファイルの形式の事です。

・その上手くいかない変換っていうのは具体的にどうやっているのか
フレームのクラスには以下の事を書いています。
BufferedImage image = new BufferedImage(1000, 800,BufferedImage.TYPE_INT_BGR);
Graphics g;
マウスイベントのクラス内では、以下の通りに書いています。
g = image.getGraphics();
g.setColor(c);
g.drawLine(x, y, x1, y1);
このような形で描画を行おうとしていますが、描画が行えませんでした。

今まで、ただフレーム内に書くだけの場合は、フレームのクラスにおいて
Graphics g;
マウスイベントのクラス内では
g = getGraphics();
g.setColor(c);
g.drawLine(x, y, x1, y1);
の形にすることで描画を行う事が可能でした。
978デフォルトの名無しさん:2007/10/18(木) 00:26:22
>g = image.getGraphics();
>g.setColor(c);
>g.drawLine(x, y, x1, y1);
>このような形で描画を行おうとしていますが、描画が行えませんでした。

これはイメージに対して描画してるわけだけど、イメージとフレームは別物なので、イメージに描画してもフレームには表示されない。おk?

↓でイメージの内容をフレームに表示してみそ
g = getGraphics();
g.drawImage(image, 0, 0, null);
979デフォルトの名無しさん:2007/10/18(木) 00:28:27
あれだ。初心者なんだからソース出したほうが話は早いぞ。
980975:2007/10/18(木) 01:07:04
>>978さん、返信ありがとうございます。
g = getGraphics();
g.drawImage(image, 0, 0, null);
にすることによって描画を行う事ができました。しかし、
BufferedImage image = new BufferedImage(280, 170,BufferedImage.TYPE_INT_BGR);
の数値の分だけ画面が真っ黒になってしまいました…。


>>979さん、返信ありがとうございます。
考えてみればそうですね…。ただ、少し長くなるので、txtでどこのアップローダーがいいのかよく解らなくて上げていませんでした。
見れるか解りませんが、アップします。

http://www.uploda.org/uporg1070292.txt.html

先ほど、イベントのクラスを分ける、と書きましたが、作業を行っているうちに、イベントのクラスを作らない事にし、修正を行いました。
importの部分は…色々取ってきてそのままになっています。
981デフォルトの名無しさん:2007/10/18(木) 01:14:26
>>980
>の数値の分だけ画面が真っ黒になってしまいました…。

それは単に、最初にイメージ全体を白で塗りつぶしておけばいいんじゃない。
g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 280, 170);
とかで。
982デフォルトの名無しさん:2007/10/18(木) 01:15:13
複数のクラスからなるプロジェクト(A.java、B.java、C.java・・・)を
他のクラスをそのままコピペだけでA.javaに統合したのですが
エンクロージング・インスタンスが無いとのエラーが出ました

このままでは実行できないのですが、どうすればいいでしょうか?
983975:2007/10/18(木) 01:27:43
>>981さん、返信ありがとうございます。

fillRectで背景を真っ白にしようとしましたが、上手く行きませんでした…。
そこで、
BufferedImage image = new BufferedImage(1, 1,BufferedImage.TYPE_INT_BGR);
とすることで解決させました。
984デフォルトの名無しさん:2007/10/18(木) 03:06:19
javaや.netは1プラットフォームなのでランタイムではない。
まあ、そこら辺はjavaカーネルとか、モジュール化が進んでいくみたいだから初めは最小限のインストールで・・・で良くなるんじゃない?
985デフォルトの名無しさん:2007/10/18(木) 04:22:49
>>965
JREっていつの間にJDK並に大きくなったんだと思って確認した。
10〜20MBってとこだね。まあ50MBが大きいって人間には10MBでも面倒さは一緒かもしれんが。
986982:2007/10/18(木) 04:47:45
すいません、982もお願いします
987デフォルトの名無しさん:2007/10/18(木) 05:54:11
>>986
統合するな。以上。

訳が分かってからにしなさい。
988デフォルトの名無しさん:2007/10/18(木) 06:05:02
>以上。

とか言いながらも終わってねぇしw
989デフォルトの名無しさん:2007/10/18(木) 06:34:45
新スレどうする?
990デフォルトの名無しさん:2007/10/18(木) 06:51:42
>>989
任せた
テンプレに追加する事は特に無いかな?
991デフォルトの名無しさん:2007/10/18(木) 07:03:42
>>990
立てようとしたら、立てられませんだってさ…
テンプレに追加する事は特にないと思う。
992デフォルトの名無しさん:2007/10/18(木) 09:17:07
【初心者】Java質問・相談スレッド107【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1192666106/
993デフォルトの名無しさん:2007/10/18(木) 09:31:30
994デフォルトの名無しさん:2007/10/18(木) 11:06:15
>>992
995デフォルトの名無しさん:2007/10/18(木) 11:56:55
じゃあ、こちらは流そうか
996デフォルトの名無しさん:2007/10/18(木) 12:20:59
Saga2の流し目を百目みたいに攻撃するんだと思っていた小3の夜
997デフォルトの名無しさん:2007/10/18(木) 12:26:16
ひーかりあーれー
998デフォルトの名無しさん:2007/10/18(木) 12:26:47
神の右手
999デフォルトの名無しさん:2007/10/18(木) 12:27:22
神の左手
1000デフォルトの名無しさん:2007/10/18(木) 12:27:42
ひかりあれ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。