5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/05/13(水) 03:26:33
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド125【歓迎】
http://pc12.2ch.net/test/read.cgi/tech/1239708057/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

2 :デフォルトの名無しさん:2009/05/13(水) 03:26:53
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 8
ttp://pc11.2ch.net/test/read.cgi/tech/1227234261/l50
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part19
http://pc11.2ch.net/test/read.cgi/tech/1233822965/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
ttp://pc11.2ch.net/test/read.cgi/tech/1206017034/l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 67 ★★
http://pc11.2ch.net/test/read.cgi/tech/1232627790/l50

**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/index.html
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/


3 :デフォルトの名無しさん:2009/05/13(水) 16:55:36
class counter extends Thread{
public void run(){
for(int count1=0;count1<100;count1++){
System.out.println("カウンター1:"+count1);
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
}
}
public static void main(String arg[]){
counter counter1=new counter();
counter1.start();
}
}

これにカウンター1と同じように1.5秒毎に出力するカウンター2を追加したいんだけどどうしたらいいのか分からん
誰か教えてくれないか?

4 :デフォルトの名無しさん:2009/05/13(水) 17:14:40
class counter extends Thread{

private final name;
private final time;

public counter(String name,int time){

this.name = name;
this.time = time;

}

public void run(){

for(int count1=0;count1<100;count1++){
System.out.println(this.name+count1);
try{
Thread.sleep(this.time)
}
catch(InterruptedException e){}
}
}

public static void main(String arg[]){
counter counter1=new counter("カウンタ1",1000);
counter counter2=new counter("カウンタ2",1500);
counter1.start();
counter2.start();
}
}

5 :4:2009/05/13(水) 17:17:12
型名が抜けた

private final String name;
private final int time;


6 :デフォルトの名無しさん:2009/05/13(水) 17:32:31
>>4-5
ありがとう


7 :デフォルトの名無しさん:2009/05/13(水) 17:32:32
NIOのMappedByteBufferを取得する際、
FileChannel.MapMode.PRIVATE
を使う意味ってある?

バッファ内のデータは操作できるけど、
マップ対象の物理ファイルには何ら反映できないんでしょ?
ファイル側に影響無しでテストなんかをしたい場合用?

8 :デフォルトの名無しさん:2009/05/13(水) 17:32:56
システム開発中に配属されて苦悩中
開発環境はNetbeans6.5.1
同パッケージ(パッケージ名:csample)の中に
二つ(Menu.java,Kojin.java)がぶち込んであり
DBが一つ用意されていると仮定して

Menu.javaからString型変数であるStxt1をKojin.javaに引っ張ってくる方法で躓いてます。
その引っ張ってきた変数をSQLに入れて発行したい。
SQLでそのままの変数ならば'" + jtxtf1111 + "'でいけるけど
それでそのSQLを発行してデータベースのデータを引っ張ってきてそれぞれのjTextFieldに配置したい。
とりあえずMain.javaの方のソースはこんな感じ
ttp://balsamic.fam.cx/up-insalata/download/1242203446.rar
[DLKEY]java
で御願いします。

むーずーかーしーいー

9 :デフォルトの名無しさん:2009/05/13(水) 17:57:36
なんでrarなんだよw

10 :デフォルトの名無しさん:2009/05/13(水) 20:29:24
テキストフィールドの中身をノーチェックでsqlにつないだりしたら、
ブチ殺されるだろ。

11 :デフォルトの名無しさん:2009/05/13(水) 20:56:44
何というSQLインジェクション推奨コード・・・

12 :デフォルトの名無しさん:2009/05/13(水) 21:13:43
違う観点での話だけど、mysqlでSUPER権限あるユーザで繋ぐと、
トランザクションが有効にならないんじゃなかったっけ?
バージョンわからんし、まあそもそもサンプルなんだろうけど。

つーか、無闇にフィールドをpublicにしないで、privateにしてgetter/setterを作ろうぜ。
jLabel1.setTextの最初の空文字は何ぞや?文字列連結として扱わずに、素直にparseしよう。
DB繋ぎっぱなのは……例外の捕捉は……まあサンプルか……。

13 :デフォルトの名無しさん:2009/05/13(水) 21:39:33
javaで画面に折れ線グラフ書きたいんですけど、
どうすればいいでしょうか。
項目は日付と売上金額です。

14 :デフォルトの名無しさん:2009/05/13(水) 21:54:12
>>13
そーゆーライブラリを拾う/買う。
Java2Dで自力描画。


15 :デフォルトの名無しさん:2009/05/13(水) 22:13:35
JFreeChartあたりはどうよ

16 :前スレ991:2009/05/13(水) 22:42:00
>>前スレ992
ありがとうございます。

17 :デフォルトの名無しさん:2009/05/14(木) 06:36:47
チャート機能って皆無だよね。
漏れは、shapeでちまちま描こうと思ってる。

ググって見つけた良さそうなライブラリ付きのチャートアプリ。
Venice
ttp://mov.sourceforge.net/

18 :8:2009/05/14(木) 10:01:28
>>10
あ いやそれは一応考えてある。
ifとelseでmatchesと正規表現使って判別しようかなって。

>>11
確かにそうなんだけど スタンドアロンだしいいかなっていう糞適当な考え
だめなのかな?

>>12
Server version: 5.0.77-comunity-nt MySQL Community Edition
ちなみにそれは仕様なの?それともバグか何か?
一応俺も調べてみることにする有難う
ちなみにサンプルをかき集めて自分で作ってみた。
むやみにPublicにするなって誰かにも言われた覚えが少しある。
クラス分けしてる意味がなくなるとかとか。

おとなしくParseにしとく。

あとDB繋ぎっぱなしだとだめなのか・・・
そのたびそのたびにcon.close();でやって
尚且つどっかでfinalize使ってsuper呼んで閉じて・・ってやるのか・・・。
で 結局変数の持ち越し方がわからなんだ(´;ω;`)

19 :8:2009/05/14(木) 10:04:49
>>12
追記
getter#setterか 
何につかうんすか

とりあえず教えて君でここにカキコしてるうちに調べてこよう。

20 :デフォルトの名無しさん:2009/05/14(木) 10:18:54
SQLインジェクション対策だったら、
最低限として、jakarta-commons-lang/StringEscapeUtils#escapeSql()
とか、PreparedStatementあたりを使っておけばよいのでは?

21 :8:2009/05/14(木) 11:07:18
>>20
PreparedStatementでもインジェクション対策になるんだ
参考になります。有難う。

どのみち速度向上の問題もありあそうだし
PreparedStatement使ってみる。

22 :デフォルトの名無しさん:2009/05/14(木) 11:09:54
クラス分け云々というよりはカプセル化だな
本当にお遊びレベルで書いているならともかく、
このレベルだったら慣れのためにも常に意識するべき
せっかくオブジェクト指向言語を学んでいるんだから、
完全に覚えろとは言わないけれど、
そういう考えがあるという事実を認識しておいた方がいい

ConnectionやStatement、ResultSetのcloseはfinallyで行えばいい
自分でDB接続関連の汎用クラスを作ってみると勉強にもなるよ

23 :8:2009/05/14(木) 11:20:42
>>22
ふむ。
まずカプセル化の概念から探してみるかなぁ。
有難う。
あ finalizeじゃないfinallyだ

てことは、毎回はcloseしないでいい訳ね。

mainでDBに接続させるのと最初のコンストラクタのところでDBに接続させるのって
どっちがいいんだろ。
いまんところはKojin(){}の中とかに書いちゃってるけど。
あれ これってコンストラクタであってたっけ?_?;


だっはー javaやって1ヶ月くらいになるけどぜんぜん覚えられない

24 :デフォルトの名無しさん:2009/05/14(木) 11:27:26
>>23
素のJDBCでのコーディングは勉強になるけど、
なんとなく掴めてきたら、
jakartaのDbUtils使うといいかも。
JDBC直接よりは解りやすくコード量も少なめで、
O/Rマッピングツール使うよりはシンプル。
情報源やサンプルコードも、ググればたんまりと出てくる。

25 :8:2009/05/14(木) 12:31:31
>>23
なんていうかお前らすごす
おかげで色々と進みそうな予感がしてきた。
あくまで予感だけな予感だけ。

とりあえずJDBC関連の事とかもあさってみる。
正直昨日パッケージ変えてライブラリにMySQLドライバ入れ忘れてて
一人で発狂してたくらいだから。
はー頑張ろう

26 :デフォルトの名無しさん:2009/05/14(木) 16:21:33
class Car {
private int num;
private double gas;
public void setNumGas(int n,double g)
{ if(g>0 && g <1000){
num = n;
gas = g;
System.out.println("ナンバーを"+ num +"にガソリン量を"+ gas +"にしました。");
}else{
System.out.println(g+"は正しいガソリン量ではありません。");
System.out.println("ガソリン量を変更できませんでした。");}}
public void show(){
System.out.println("車のナンバーは"+ num +"です。");
System.out.println("ガソリン量は"+ gas +"です。");}}
class Sample1{
public static void main(String args[]){
Car car1 = new Car();
car1.setNumGas(1234,20.5);
car1.show();
System.out.println("正しくないガソリン量(-10.0)を指定してみます・・・。");
car1.setNumGas(1234,-10.0);
car1.show();
} }
これ private を外してコンパイルしても何も変わらないんだけど privateがあるとないじゃどー違うの?

27 :8:2009/05/14(木) 16:26:43
Menu.javaで
Private String jtxtf;
で定義して
jtxt = jTextField1.getText();で取得
public String getJtxtf1() {
return jtxtf;
}
を配置
Kojin.javaで
Menu mMenu = new Menu();
String jtxtf1 = mMenu.getJtxtf();
んで
sqlStr = "select * from member where mid = '" + jtxtf1 + "'";
これだとぬるぽ出るんだが。

Menu.javaのどっか間違えてんのかなぁ。
ちなみにそのjtxtfにぶち込むメソッドはボタン押されたら呼ばれる様になってるんだ。

ヒントがあったら頂けると助かります。

28 :デフォルトの名無しさん:2009/05/14(木) 16:47:44
public interface A{
  public Object get();
}

public class B<T> implements A{
  public T get(){...}
}

これって OK なんだな。

29 :8:2009/05/14(木) 16:52:23
>>28
これは俺に対してのレスだろうか。
ちょっと判らないけどさっきの>>27はかなり省略して書いてる。

ってこれ回答になってる?

30 :デフォルトの名無しさん:2009/05/14(木) 16:52:50
>>27
教科書を一冊読んでから出直すレベル

31 :8:2009/05/14(木) 16:58:37
すまん。それは確かにそうだと思う。
swingだけの本読むべきか・・・。
ネットだけで って訳にはいかないのかなやっぱり。
とりあえず本探してみるよ ありがとう。

32 :デフォルトの名無しさん:2009/05/14(木) 17:03:09
どこでヌルポでてんだよ

33 :デフォルトの名無しさん:2009/05/14(木) 17:07:57
>>29
いや独り言

34 :8:2009/05/14(木) 17:09:04
>>32
デバッグしてみた。
Kojinに入った時点で呼び出してるんだけど
DB接続前にブレークポイント置いてとめてみた。
そしたら既にnullだった。
Menu.javaの方で一応jtxtfも見てみたんだけど
ぜんぜん普通に値が入ってた。
だから豆が飛んでないのかな。と。

それでさっきからg−gr先生と対話中。

35 :デフォルトの名無しさん:2009/05/14(木) 17:13:17
ぬるぽってお前エラーは出てないのかよw

だとしたらボタン押した時にテキストフィールドから値を取る動作
>jtxt = jTextField1.getText();
が動いてないんじゃねw

36 :デフォルトの名無しさん:2009/05/14(木) 17:15:12
Menuには値が入ってるのか。

つーことは、Menuのjtxtに値が入る前にgetJtxtf1()呼んでるんだろ

37 :8:2009/05/14(木) 17:16:08
>>33
勘違い詰んだ

>>35
おっとすまん
Error: java.sql.SQLException: Illegal operation on empty result set.Illegal operation on empty result set.
そうだエラー書き忘れてたo...rz

38 :デフォルトの名無しさん:2009/05/14(木) 17:17:57
>>37
それはぬるぽとはいわねーw

39 :8:2009/05/14(木) 17:24:22
>>36
書き込みってそんな時間食うの・・?
一応こんなメソッドを呼び出してる。
private void mdisplay() {
jtxtf = jTextField1.getText();
if(jtextf.getText().matches("[0-9]+")){
new Kojin().setVisible(true);
}
んでKojin.javaのドライバ読み込む直前で
Menu mMenu = new Menu();
String jtxtf1 = mMenu.getJtxtf();
これしてる。 もしかして読み込みが間に合ってないのか
いやそんなことないか? うーん。

40 :8:2009/05/14(木) 17:26:51
>>38
すまんww
今気づいた 値見てたらnullになってたからぬるぽぬるぽと思い込んでた
これリザルトセットのとこがおかしーぞこらって言われてるのかな。

でもsql発行のところの・・・
ん?
sqlStr = "select * from member where mid = '" + jtxtf1 + "'";//変数で宣言?_?
//SQL文実行
rs = stmt.executeQuery(sqlStr);
こいつかもしかして

41 :デフォルトの名無しさん:2009/05/14(木) 17:39:14
>>40
エラー情報に何行目でエラーでたか書いてあるだろ

>rs = stmt.executeQuery(sqlStr);

これの更に後ろだろたぶん


42 :デフォルトの名無しさん:2009/05/14(木) 17:45:43
ソースはろだに上げてくれ

43 :8:2009/05/14(木) 17:50:12
>>41
エラー行数が出てないから涙目なんだ。

44 :デフォルトの名無しさん:2009/05/14(木) 18:08:14
JAVAのプログラム内からMySQLにデータベース作成したいんですけど、どう書いたらいいですか?

例えば、
  // ドライバクラスをロード
  Class.forName("org.gjt.mm.mysql.Driver");

  // データベースへ接続
  String url = "jdbc:mysql:///itemdb?useUnicode=true&characterEncoding=SJIS";
  Connection con = DriverManager.getConnection(url);

  ・・・後はステートメントオブジェクトを生成して、クエリー実行・・・・

で、読んだりしますけど、DB作成からの場合は、接続するDBがありませんよね?
そのときの書き方を教えてください。

SQLは”CREATE DATABASE itemdb” ですよね?

45 :8:2009/05/14(木) 18:14:03
executeQueryじゃなくてUpdateかもね


#ちょっと記述ミスしてた所(rsの抜き出しのところ)直したら先ほどのエラーは消えた。
だけど今度はガチでぬるぽ先生がお出ましになった。
見た感じやっぱりgetterで取れてないっぽい。
Error: java.lang.NullPointerExceptionnull


46 :デフォルトの名無しさん:2009/05/14(木) 18:22:54
>45
ぬるぽはコーディングミスだからね。
戻り値はちゃんとnullチェックをしましょう。

47 :デフォルトの名無しさん:2009/05/14(木) 18:29:34
>>26
privateを外すと同じパッケージ内ならアクセス出来る様になる
privateが一番キツいアクセス修飾子だから外しただけなら制限が緩くなるだけで
エラーの発生要因にはならない
逆に制限を強めるとエラーが起きる可能性が出てくる

48 :8:2009/05/14(木) 18:36:33
>>46
でした。
Main.java側のString jtxtf;をprivateとかpublicとかにしてたものの
staticにしたらいけました^o^;
staticはカプセル化の上で絶対なので? 
確かそのクラスに属する・・とかって感じだった様な気がします。

49 :デフォルトの名無しさん:2009/05/14(木) 18:56:04
>>44
普通はセキュリティや物理配置、ポートの割り当てやらプロセスの立ち上げやらの環境構築が
必要なので DB のインスタンス自体をアプリケーションから作成するようなことはしない。

一旦別の DB に接続して CREATE DATABASE を発行して再接続すれば希望は叶うかもしれないが、
インスタンスが 1 つも無い時は JDBC ではどうしようもない。どうしてもと言うなら MySQL
固有のライブラリが用意されていないか調べるしかない。

50 :デフォルトの名無しさん:2009/05/14(木) 18:59:39
読み直すと否定文テンコモリであまりよろしくないな。誰か肯定文に直して。

51 :デフォルトの名無しさん:2009/05/14(木) 19:02:46
>>50
ないをあるに変えてみた。こうか?

普通はセキュリティや物理配置、ポートの割り当てやらプロセスの立ち上げやらの環境構築が
必要なので DB のインスタンス自体をアプリケーションから作成するようなことはしないアル。

一旦別の DB に接続して CREATE DATABASE を発行して再接続すれば希望は叶うかもしれないアルが、
インスタンスが 1 つも無いアル時は JDBC ではどうしようもないアル。どうしてもと言うなら MySQL
固有のライブラリが用意されていないアルか調べるしかないアルよ。

52 :44:2009/05/14(木) 19:12:02
>>49
ありがとうございます。
いっくらググって検索しても、方法が見つからないわけですね(^^;

普通にやります。

53 :デフォルトの名無しさん:2009/05/14(木) 19:14:30
>>51
ワロタw

54 :デフォルトの名無しさん:2009/05/14(木) 20:31:53
すみません
class nicyan{
String name;
nicyan makeClone(){
nicyan cl;
try{
cl = (nicyan)this.clone();
System.out.println(cl.name);(**)
return cl;
}
catch(Exception e){
}
}
}
}

55 :つづき:2009/05/14(木) 20:33:56
class hogeのmain内部{
nicyan[] n = new nicyan[4];
n[0].name = "giko";
n[2].name = "monar";
n[3].name = "itteyoshi";
n[1] = (nicyan)n[0].clone();(*)
n[3] = n[2].makeClone();
System.out.println(n[3].name);(***)
}

というコードで
1,(*)で「clone()はprotectedアクセスされます」って言われるんですが
protectedって修飾子なしより制限緩いはずなのにどうしてですか?
(javaのapiの普通のメソッドはこんな事言われませんよね)
2,(*)をコメントアウトして実行した時の話ですが
(**)で出力された名前を見るとmonarでn[3]はn[2]のクローンになってるのに
なぜ(***)の出力はitteyoshiのままなのですか?

56 :デフォルトの名無しさん:2009/05/14(木) 20:39:21
修飾子無しがprotectedだと思うが

パッケージ外から呼べるのはpublic

57 :デフォルトの名無しさん:2009/05/14(木) 20:47:55
うーん、ここの説明だと
ttp://www.tohoho-web.com/java/modifier.htm
修飾子なしとprotectedは別物(後者のほうが制限緩い)
ように見えますけど。

58 :デフォルトの名無しさん:2009/05/14(木) 20:56:48
>修飾子無しがprotectedだと思うが
勘弁してくれ
protectedはサブクラスから参照できるが、無指定は参照できん

59 :デフォルトの名無しさん:2009/05/14(木) 21:37:25
修飾子なしの可視性は、defaultとかfriendlyとか俗に言う。
前世紀にJavaHouse-Brewersで見かけた表現だから今でも通用するかは不知。


60 :デフォルトの名無しさん:2009/05/14(木) 21:49:10
ttp://www.y-adagio.com/public/standards/tr_javalang2/names.doc.html#104285 によると
デフォルトアクセスと訳されている。
私はパッケージプライベートと覚えた気がする。

61 :デフォルトの名無しさん:2009/05/14(木) 22:25:01
>>54
(*)の行でprotectedアクセスされます
っていうのは、n[0].clone()がhogeクラス内から呼ばれたものだから。
clone()はprotectedメソッドだから、nicyanオブジェクトであるnに対して
clone()を呼ぶときは、nichyanクラス「内」からしか呼べない。
つまり、this.clone()あるいは単にclone()という使い方しか出来ない。

62 :デフォルトの名無しさん:2009/05/14(木) 22:30:51
>>61
追記。
super.clone()も可。
ただし、nicyanクラスでclone()をオーバーライドしてないので、
super.clone()とthis.clone()とclone()は全て同じ意味になる。

63 :デフォルトの名無しさん:2009/05/14(木) 22:35:26
sub packageのクラスからも参照できるんだっけ

64 :デフォルトの名無しさん:2009/05/14(木) 23:18:31
>>63
サブクラスでパッケージは関係なくできる。
サブパッケージでもサブクラスじゃなければ出来ない。

65 :デフォルトの名無しさん:2009/05/15(金) 08:29:21
月を表すJComboBoxの項目を選択すると
その月の最大日数を取得して
日を表すJComboBoxの項目を作成するプログラムを作成しているのですが
うまくいきません。

ActionListenerを作成しその中で
cbDay.removeAllItems();
cbDay.addItem(・・・・);
とするとエラーが出てしまいますがこの方法はまずいですか?

66 :デフォルトの名無しさん:2009/05/15(金) 10:00:39
PreparedStatment(設定自体はJava側です)でSQLを先にロードさせる。
判らない所は?で示す様になるんだけど そこをどういう風に表示させるか分かりません。
あくまで予想だけど
sqlStr = "select * from t_member where ? = ?"
みたいな感じになると思うから 違ってたら教えて下さい

67 :デフォルトの名無しさん:2009/05/15(金) 10:33:02
>>65
何度も言われていることだが、
なんのエラーが出たのかを書け。

68 :デフォルトの名無しさん:2009/05/15(金) 10:34:02
>>66
なんでやってみてから質問しないの?

69 :デフォルトの名無しさん:2009/05/15(金) 10:43:20
javaからMySQLのAutoincrement属性が付いたフィールドへ突っ込む時は
どうすればいいんだ?
MySQLと違ってjava側でnullで送ったら致命的エラーが出て終わるんだが。
insert into timber (member_id) values (null)
今ここ

70 :デフォルトの名無しさん:2009/05/15(金) 12:08:41
>>68
なにか問題でも?

71 :デフォルトの名無しさん:2009/05/15(金) 12:30:51
>>67
失礼しました。
ぬるぽです。

・・・・・
import java.util.*;
class calendarTest implements ActionListener{
protected JFrame frame1;
protected JComboBox cbY, cbM, cbD;
calendarTest(){ {
Calendar cal = Calendar.getInstance();
//省略
//日の表示
cbD = new JComboBox();
for(int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++){
cbD.addItem(i);
}
cbD.setSelectedIndex(cal.get(Calendar.DAY_OF_MONTH) -1);
//省略
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==cbM){
cbD.removeAllItems();
}
}
public static void main(String args[]){
new calendarTest();
}
}

72 :デフォルトの名無しさん:2009/05/15(金) 13:02:05
>>70
いや別に何も無いよ。やってみればすぐわかることだろうに。

73 :デフォルトの名無しさん:2009/05/15(金) 13:58:45
>71
残念ながら、ぬるぽはコーディングミスです。
出所不明な変数はnullチェックをしましょう。
特定の引数にnullが含まれるとぬるぽを返す仕様のメソッドもあります。

74 :デフォルトの名無しさん:2009/05/15(金) 14:02:15
>>71
問題ないように見えるんだけど。
cbD.removeAllItems();
のところでデバッガ止めてみたりした?

気になったんで調べたら
http://forums.sun.com/thread.jspa?threadID=542445
ってのが見つかった。解決方法も書いてあった。

75 :デフォルトの名無しさん:2009/05/15(金) 14:26:25
>>72
失礼しました。
解決しました。お手数かけました。

76 :デフォルトの名無しさん:2009/05/15(金) 14:28:30
どなたかThreadについて分かりやすく解説してるサイトをご存知ですか?
いろいろ調べてみたのですが、どうも分かりにくいのばかりで・・・

77 :デフォルトの名無しさん:2009/05/15(金) 14:57:01
preparedStatementってバインドの?使わないと使えないとか
そんなことってあったりする?_?

78 :デフォルトの名無しさん:2009/05/15(金) 15:28:54
いまAwtで画面にDBの内容表示して、SWINGでも同じようにしているけど
SWINGがawtに比べて何が便利なのかわかりません。
awtのほうがプログラムが見やすいのですけど、如何なものでしょうか

79 :デフォルトの名無しさん:2009/05/15(金) 15:45:46
Write once, run anywhereとはいうが、
AWTはGUIがプラットフォームで異なるのが大きい

利便性というよりは共通化の観点が大きいんじゃなかったっけ

80 :デフォルトの名無しさん:2009/05/15(金) 15:57:20
>>78
コンテナとか使ってなかったらそう感じるかもね。
Swingではawtのほとんどを使い回せるから、別にメリットを感じないならawtのままでいいんじゃない?

81 :デフォルトの名無しさん:2009/05/15(金) 15:58:14
>>77 そんなことはない。 さっきから言われているとおり、試せって。

82 :デフォルトの名無しさん:2009/05/15(金) 16:10:13
>>81
試さずに書くかよ。
それでもnull吐き出続けるから俺の書式がおかしいのか
もしくはその概念自体を間違えてるのか確かめたくてね。

83 :デフォルトの名無しさん:2009/05/15(金) 16:22:34
JSPで、Railsのようなレイアウトテンプレート機能を使いたいんですけど、どうしたらいいですか。
たとえば、
layout.jsp
---------------
<html>
<body>
<%= yield %>
</body>
</html>
---------------

nantoka.jsp
---------------
<h1>Hello ${user}</h1>
---------------

とあったら、layout.jsp の <%= yield %> のところに nantoka.jsp の結果が差し込まれてくれる、というかんじの機能です。


84 :sssssssssss:2009/05/15(金) 16:40:52

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1326202453

85 :デフォルトの名無しさん:2009/05/15(金) 16:42:13
カスタムタグ作ったら?

86 :デフォルトの名無しさん:2009/05/15(金) 16:43:20
>>82
どこでヌルポってんだよw
例外キャッチしてスタックトレースはかせれば行番号ぐらいでねえか?

87 :デフォルトの名無しさん:2009/05/15(金) 16:55:25
>>82
少しググれば例が使ってない例があるんだから、そういうこと言われるんだろう?


88 :デフォルトの名無しさん:2009/05/15(金) 16:56:27
>>84
これ、答え書いてなかったか?

89 :デフォルトの名無しさん:2009/05/15(金) 16:56:44
任意のサイズのファイルを作成する際に、
中身は空で、とにかくサイズだけはあるファイルを
作成するのに良い方法ありますか?

今は、FileオブジェクトにOutputStream系を使って
無意味なbyteデータをループ回して
延々書き込んでるんですが。

90 :sssssssssss:2009/05/15(金) 16:57:58
>>88
本当ですか?

91 :デフォルトの名無しさん:2009/05/15(金) 17:06:37
前スレ945だな。

92 :デフォルトの名無しさん:2009/05/15(金) 17:12:34
>>89
ファイルの中身が何でもいいなら
RandomAccessFile raf = new RandomAccessFile(filename, "rw");
raf.setLength(length);
raf.close();

0x00で埋められてなきゃいかんなら延々書き込むしかない。
延々書き込む際に FileChannel と ByteBuffer#allocateDirect()
使ったほうがちょっとだけ早いかもしんない。

Windows 限定でいいなら
Runtime.exec("fsutil file createnew " + filename + " " + length)
とかでもいいけど。

93 :sssssssssss:2009/05/15(金) 17:14:23
>>91
もしかして前スレ945で回答した人ですか??

94 :デフォルトの名無しさん:2009/05/15(金) 17:16:32
ですけど、なにか

95 :デフォルトの名無しさん:2009/05/15(金) 17:23:15
LnFのSynthの設定に関する事で質問したい事があるんだが、この板でOK?

96 :デフォルトの名無しさん:2009/05/15(金) 17:26:33
あ 俺もL&Fのこと聞きたいんだけど。
FileChooserのボタンだけを戻すとかできないのかな。
個々に設定するのはbindのtype使ってやればいいとして
Dialogもそうすればいいとして・・・

chooserどうやってやるんだああああちくしょうおおおおおお

97 :デフォルトの名無しさん:2009/05/15(金) 17:27:09
>>93
もう回答ついてるじゃん。よかったな。

98 :デフォルトの名無しさん:2009/05/15(金) 17:27:12
>>92
ありがとうございます。

自分でもググってみて、FileChannelとMappedByteBuffer使ってもできました。
たとえば、512MBの空ファイルを作る場合は、
RandomAccessFileから取得したFileChannelを使って、
MappedByteBuffer buf = ch.map(FileChannel.MapMode.READ_WRITE, 1024 * 1024 * 512, 0);
で可能でした。

RandomAccessFile#setLength()でも可能なんですね。
そちらも試してみます。

99 :sssssssssss:2009/05/15(金) 17:51:34
>>97
よかったおー

100 :デフォルトの名無しさん:2009/05/15(金) 18:17:09
JPanel上に、縮小した複数の画像を並べてスクロール出来るようにしたいのですが、スクロールが出来ません。

//WorkPanelクラス
for(Object ob: files)
{
//画像縮小+ImagePanel上に配置
imagePanel = new ImagePanel((File)ob, ImageList.size());
WorkPanel.this.add(imagePanel);

WorkPanel.this.window.repaint();
}

//Windowクラス
workPanel = new WorkPanel(this)

JScrollPane scrollPane = new JScrollPane(workPanel);
scrollPane.setPreferredSize(new Dimension(this.getWidth(), this.getHeight()));
this.getContentPane().add(scrollPane, BorderLayout.CENTER);

何故なのでしょうか。よろしくお願いします。

101 :デフォルトの名無しさん:2009/05/15(金) 18:27:21
さーて
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1026206395
自分の無知さに笑いが出るw

102 :デフォルトの名無しさん:2009/05/15(金) 18:38:45
>>100
フレームのサイズが設定されてないからじゃ?

103 :デフォルトの名無しさん:2009/05/15(金) 18:47:12
JTextAreaやJScrollPaneはコンテンツペインを経由するけど
JListはコンテンツペインを経由していないです
コンテンツペインを経由するしないの判断は、どこにあるのでしょうか。

104 :デフォルトの名無しさん:2009/05/15(金) 20:15:53
>>69
「nullという値」を突っ込もうとしてるからじゃね?
autoincrement属性の付いてるフィールドに値を入れようとした場合、その値が優先されるはず。
で、not nullか何かが付いててエラーになってるんでは。
autoincrement属性の付いてるフィールド「以外」のフィールドにだけ値を入れてみたらどうなる?

105 :デフォルトの名無しさん:2009/05/15(金) 20:45:45
Servletで質問です
out.println(htmlConstant.html);
out.println(htmlConstant.head);
out.println(htmlConstant.title);
out.println(htmlConstant.css);
out.println(htmlConstant.head_e);
out.println(htmlConstant.body);
out.println(htmlConstant.Hello);
out.println(htmlConstant.body_e);
out.println(htmlConstant.html_e);
こんな感じで記述していて、Helloは問題なく出力されます。
が、cssが反映されない。
Servletに遷移する前のhtmlだとcssは反映されてます。
out.println(htmlConstant.css);の中は
public final static String css = "<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">";
こうなってます。
htmlからServletに遷移してるわけだから階層変わってるのかなぁと思ってcssをclassesの下とかに
置いてみたりしたけど何も変わりませんでした。

106 :デフォルトの名無しさん:2009/05/15(金) 21:16:04
>>102
public Window()
{
super();
this.setSize(500, 800);

フレーム・・・こういう事でしょうか。

107 :デフォルトの名無しさん:2009/05/15(金) 21:19:28
>>105
それによって出力されたHTML文のソース自体は確認した?

108 :デフォルトの名無しさん:2009/05/16(土) 00:11:44
public class TestSwing extends JPanel {
  private JButton selectAllButton = null;
  public TestSwing() {
    this.selectAllButton = new JButton("全選択");
    this.selectAllButton.setEnabled(true);
    this.selectAllButton.addActionListener(new SelectAllActionHandler());
    add(selectAllButton, BorderLayout.WEST);
    private class SelectAllActionHandler implements ActionListener {
      public void actionPerformed(ActionEvent e) {
        Thread selectAllThread = new SelectAllThread(true);
        selectAllThread.start();
      }
    }
    private class SelectAllThread extends Thread {
      public SelectAllThread() {}
      public void run() {
        selectAllButton.setEnabled(false); // ★
        // do hoge
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            // do hogehoge
          }
        });
      }
    }
  }
}

このようなコードがあったとして、★の位置でselectAllButtonを指定する際、thisのキーワードは使えませんが、
一般的に内部クラスから大元のインスタンス変数を参照する際にはキーワードは何も付けないものなのでしょうか?

109 :デフォルトの名無しさん:2009/05/16(土) 00:21:57
>108
俺はよくフィールドで
private TestSwing testSwing = this;

みたいにしちゃうんだけど邪道なのかな

110 :デフォルトの名無しさん:2009/05/16(土) 00:42:35
そのtestSwingは何なんだよって事でソースの中探しちゃうな。

111 :デフォルトの名無しさん:2009/05/16(土) 00:53:41
TestSwing.this.selectAllButton.setEnabled(false);

と書けなくもないが長ったらしいので付けない。

112 :デフォルトの名無しさん:2009/05/16(土) 01:07:12
>>109
それの効果は?
thisがあるんだからthis使えばいいんじゃないかなと思うんだけど、

113 :デフォルトの名無しさん:2009/05/16(土) 01:24:41
内部クラスでthis使えないじゃない

完全に内部クラス用になっちゃうけどさ

114 :デフォルトの名無しさん:2009/05/16(土) 01:28:24
なるほどね。
内部クラスっていまいちありがたみがわからないんだけど、
例えばアプレットとかで、一つのclassファイルに納めたいときに、
内部クラスで機能わけとかをするのに使ったりするの?

115 :デフォルトの名無しさん:2009/05/16(土) 01:33:33
内部クラスあったらクラスファイルは複数できるって

116 :デフォルトの名無しさん:2009/05/16(土) 01:42:11
>>107
はい、それは勿論。
Helloも表示されているし、headタグやその他のタグにも以上はありませんでした。
cssの外部呼出しもServlet前の画面では同じ記述で反映されてるため
Servletで出力したhtmlは階層が変わっているのではないかと思ったのですが
解決策が見つかりませんでした。

117 :デフォルトの名無しさん:2009/05/16(土) 02:17:02
>>116
情報が断片的なんでアドバイスしにくいわけだが、

cssのURLをフルパスで書くわけにはいかんの?
これでCSSファイルの位置が悪いのかどうかははっきりする。

118 :デフォルトの名無しさん:2009/05/16(土) 02:36:40
>>115
あ、そっかぁ。
じゃぁ、なおさらわかんなーぃ。。。
だれか教えて下さぃ(>_<☆。

119 :デフォルトの名無しさん:2009/05/16(土) 03:00:30
>>118
http://blogs.wankuma.com/nagise/archive/2007/08/01/88273.aspx

120 :デフォルトの名無しさん:2009/05/16(土) 04:17:24
初心者です
かなり基本的な質問で申し訳ないのですが、現在蔓延しているウイルス対策にjavaを切りたいのですが
どうすればいいのでしょうか
ググっても該当項目が出てこないのでこちらで質問させていただきました
ブラウザはIEとLunascape5です

121 :デフォルトの名無しさん:2009/05/16(土) 04:27:41
この辺で聞け

【マジレス】超初心者の質問に答えるスレ113【エスパー】
http://pc12.2ch.net/test/read.cgi/win/1241574086/

JavaじゃなくてJavaScriptね
別物

ウィルス名はgumblar.cnね
これも忘れないように

122 :デフォルトの名無しさん:2009/05/16(土) 04:38:30
即レス・誘導ありがとうございました
該当スレで聞いてきますm(_ _)m


123 :デフォルトの名無しさん:2009/05/16(土) 07:03:48
一応スイングスレも有るよ。

http://pc12.2ch.net/test/read.cgi/tech/1227234261/
Java低速GUI Swing 8

124 :デフォルトの名無しさん:2009/05/16(土) 10:13:41
Proxy#getInvocationHandlerの使い所ってどこよ?

125 :デフォルトの名無しさん:2009/05/16(土) 10:39:27
インスタンスがプロキシだと分かっていて、その InvocationHandler を取得したい時。

126 :デフォルトの名無しさん:2009/05/16(土) 12:16:54
ん? ここはレドモンドじゃないはずだが?

127 :デフォルトの名無しさん:2009/05/16(土) 15:15:42
再帰代入演算について質問させてください。

3
33
333
3333

という風に数字を出力したいのですがgが『重複ローカル変数』と言われてしまいます。
どうしたらいいでしょうか


int g = 0;

for(int i=0; i<5; i++){
int f = 3;
int g = (int)(f*Math.pow(10,i)+g);
System.out.println("答え="+g);
}


128 :デフォルトの名無しさん:2009/05/16(土) 15:22:59
ループの中のgのintを取る。


129 :デフォルトの名無しさん:2009/05/16(土) 15:33:37
>>128
できました。ありがとうございます。
なぜ、intをつけるとダメなのでしょうか。
教えてクンですいません。


130 :デフォルトの名無しさん:2009/05/16(土) 15:36:36
2重定義だろ

131 :デフォルトの名無しさん:2009/05/16(土) 15:43:54
>>130
あ、わかりました
こんなことにも答えてもらって、どうもありがとうございます

132 :デフォルトの名無しさん:2009/05/16(土) 18:32:41
public static void main(String[] args) {

javaの例題やってるけどメインプログラムの上に関数(メソッドっていうんだっけ?)が羅列されてるなぁ
C言語の例題はメインプログラムの下に関数作ってたけど

133 :デフォルトの名無しさん:2009/05/16(土) 18:39:07
クラス内なら定義する順番は無いんだ。

134 :デフォルトの名無しさん:2009/05/16(土) 20:17:05
むしろ大昔のC言語処理系なんかだと、mainの前に関数を定義か宣言をしておかないと
コンパイルエラーになったりする。

135 :デフォルトの名無しさん:2009/05/16(土) 21:05:04
K&Rはそういうもんじゃなかった?

136 :デフォルトの名無しさん:2009/05/16(土) 21:19:54
K&Rだと、呼び出す前に定義するか、戻り値の型を事前に宣言。
高級アセンブラ的視点で、関数の戻り値のアドレス幅だけは使用
前に知っておく必要があった。
ANSI Cだと、同じく呼び出す前に定義するか、引数型を含めた
プロトタイプを宣言。実際の呼び出し時には引数を含めてチェック。

というところだったかねぇ。



137 :71:2009/05/16(土) 21:21:00
>>74
ありがとうございます。
英語読めないのでじっくり解読します

138 :デフォルトの名無しさん:2009/05/16(土) 21:31:08
逆だろ。大昔のはプロトタイプ宣言なくてもコンパイル通ってた。
だが矛盾もなにもお構いなしで動いてバグになりやすかったから宣言必須になった。

139 :デフォルトの名無しさん:2009/05/16(土) 21:31:58
K&Rの関数宣言はプロトタイプじゃないよ。


140 :デフォルトの名無しさん:2009/05/16(土) 21:34:38
K&Rの場合は、関数の戻り値型宣言を省くとintだと判断してたハズ。


141 :デフォルトの名無しさん:2009/05/17(日) 00:03:51
ローグクローン2日本語版のソースが少なくとも今のコンパイラだとエラー吐かれたきがす

142 :デフォルトの名無しさん:2009/05/17(日) 00:06:59
RMI でサーバ側からコールバックってできる? サーバ側にイベントソースがあって
クライアント側にコンシューマがいるような。

143 :デフォルトの名無しさん:2009/05/17(日) 01:45:55
クライアントもRemoteを実装して、サーバからRMIで呼び出す。

144 :デフォルトの名無しさん:2009/05/17(日) 03:07:48
それってセキュリティ的に(ry

145 :デフォルトの名無しさん:2009/05/17(日) 10:49:15
セキュリティ持ち出すならそもそもRMI使うのか?
CORBAに変更して暗号化するしか無くなるような・・・

146 :デフォルトの名無しさん:2009/05/17(日) 12:25:32
java初心者です。このプログラムのコンパイルができません・・・

import java.io.*;

class 01
{
public static void main(String args[]) throws IOException
{
System.out.println("整数と文字を入力してください");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));


String str1 = br.readLine();
String str2 = br.readLine();

int num1 = Integer.parselnt(str2);

System.out.println("最後に入力されたのは"+ num1 +"、最初に入力されたのが"+ str1 +"です");
}
}

147 :デフォルトの名無しさん:2009/05/17(日) 12:26:18
>>146
class 01


148 :デフォルトの名無しさん:2009/05/17(日) 13:55:31
ここを乗り越えれば理解が一気に深まりそうなんだがまだ解らない

public class Rpg02 extends Applet implements Runnable{

↑なんですがRpg02が子クラスでAppletが親クラス(スーパー?)なんだよね?
でここには長いから書かないけど上記プログラムの後は
Rpg02がAppletの関数つーかメソッド?を利用してるんだよね
子供が親(スーパークラス)を使うの?
親の下に子供があって子供を関数として呼び出して使うんじゃないのかい?

親 メインプログラム

子 サブプログラム(関数)

現在は↑のような認識なんですが><

149 :デフォルトの名無しさん:2009/05/17(日) 14:03:33
Rpg02 は Applet の持つ機能を全て引き継いでいる。

150 :デフォルトの名無しさん:2009/05/17(日) 14:05:36
継承と実装なんかネットでサンプルてんこ盛りだろ

151 :デフォルトの名無しさん:2009/05/17(日) 14:33:21
子クラスとかサブクラスなんて呼ぶから混乱するんだ。

派生クラスとか、ピッコロクラスとか呼べばいい。


152 :デフォルトの名無しさん:2009/05/17(日) 15:01:57
>>148
凄く違う。

サブルーチンと勘違いしてるのかもしれませんが、
他の言語の事は忘れて一からJava用語を覚えた方が良いと思います

153 :デフォルトの名無しさん:2009/05/17(日) 16:14:44
サブクラスもjava用語じゃないだろ

154 :デフォルトの名無しさん:2009/05/17(日) 16:58:35
クラスパスの環境設定ができません・・・
とりあえずコマンドプロンプトに
set CLASSPATH=%CLASSPATH%;.
と打ち込めばプログラムを実行できるようになるんですが
コマンドプロンプトを再起動させるとまたset CLASSPATH=%CLASSPATH%;.と
打ち込まないと実行できません・・・

ちなみにコンパイルはできます
jdkのバージョンは1.6.0_13です

155 :デフォルトの名無しさん:2009/05/17(日) 16:59:59
いあ、言語規定の8.1.4でサブクラスと命名されてる。

156 :デフォルトの名無しさん:2009/05/17(日) 17:00:03
autoexec.bat を編集する

157 :デフォルトの名無しさん:2009/05/17(日) 17:04:36
>>154
ああ、マイコンピュータのプロパティの、詳細設定の環境変数。
ここで設定しておかないと駄目。

でも今時なら、EclipseかNetBeansという無料の統合開発環境があるから、
そっちを使ったほうがいい。

158 :デフォルトの名無しさん:2009/05/17(日) 17:10:26
public class kadai2 {
public static void main(String args[]) {
for(int sum=0 , i=1; i<=10; i++) {
sum = sum + i;
System.out.println("n=" + i +" の時 " + sum);
}
}
}

のsum + iのiの部分を2のi乗にしたいのですが
どのように表記すればいいのでしょうか

159 :デフォルトの名無しさん:2009/05/17(日) 17:11:58
(1 << i)

160 :デフォルトの名無しさん:2009/05/17(日) 17:12:36
すみません
プログラムこっちでした

public class kadai2 {
public static void main(String args[]) {
int sum=0;

for(int i=1; i<=10; i++) {
sum = sum + i;
}
System.out.println(sum);
}
}

161 :デフォルトの名無しさん:2009/05/17(日) 17:13:37
>for(int sum=0 , i=1; i<=10; i++) {
>  sum = sum + i;
>}
これ答案に書いた時点で減点です。

162 :デフォルトの名無しさん:2009/05/17(日) 17:17:21
>>159
ありがとうございました

163 :デフォルトの名無しさん:2009/05/17(日) 17:36:38
おそらく流れ図を書く問題なんですがお願いします


n個の変数a1,a2,a3,・・・,anにそれぞれ値が入力されている。n個の数値の中で最大の値を変数MAXに最小の値を変数MINに入れるアルゴリズムをPADを用いた反復構造を用いて表せ。
なお,n個の値は-100≦a1,a2,a3,・・・,an≦100の範囲にあるものとする。(最小の値が-100で最大の値が100という意味ではない)


164 :デフォルトの名無しさん:2009/05/17(日) 17:41:36
ファイルの入出力に関する質問です。

テストの成績を管理するプログラムの練習をしています。
TEST[i]というオブジェクトを作り、
名前(name[i])、出席番号(num[i])、国語(jp[i])、数学(mathe[i])、英語(en[i])、社会(so[i])
というそれぞれの配列にデータを入力すると言うプログラムを作っています。

最初に登録したい人数を入力し、オブジェクトやそれぞれの配列を用意、
for(int i=0;i<num.length;i++)で入力させているのですが、
名前 出席番号 国語 数学 英語 社会  の順でデータが入力されているテキストファイルを引数から読み込み
簡単に入力する方法はどうしたらよいでしょうか?

165 :デフォルトの名無しさん:2009/05/17(日) 17:46:58
引数ってiのこと?


166 :デフォルトの名無しさん:2009/05/17(日) 17:54:42
ぶっちゃけ何がしたいのかわからん

>テキストファイルを引数から読み込み簡単に入力する

パラメータにファイル名を指定して、
読み込んだものを表示するだけなのか?
それとも手で名前やら出席番号やら科目の情報を入力するのか?

「テキストファイルを引数から読み込み」と言っているのに(これが入力になるのでは?)
「簡単に入力する」ってのが意味わからん

167 :デフォルトの名無しさん:2009/05/17(日) 17:54:50
まずは大学名をかけ。

168 :デフォルトの名無しさん:2009/05/17(日) 17:54:55
>>164
BufferedReaderで一行づつ読み込んだStringをsplit()で分割。
でいいのかな?いまいちエスパー気味に回答。

169 :デフォルトの名無しさん:2009/05/17(日) 17:59:39
DIコンテナって
ソースコード中でオブジェクトのプロパティを一々設定したりコンストラクタに大量の引数を渡したりしなくても
外部XMLで自動的に設定してくれる、って事?

170 :デフォルトの名無しさん:2009/05/17(日) 17:59:41
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/668.txt

国語の成績までの段階ですが、ソースなどはこちらにアップさせていただきました。

>>167
高専生です

171 :デフォルトの名無しさん:2009/05/17(日) 18:15:43
普通にこれだろ

BuffredReader = reader = new BufferedReader(FileReader("score.txt"));

String line = "";
while((line=reader.readLine()) == null){

// lineをsplitで区切ってなんやかんやする

}


172 :デフォルトの名無しさん:2009/05/17(日) 18:16:17
間違えた。!=nullな

173 :デフォルトの名無しさん:2009/05/17(日) 18:22:01
>>169
そう。外部XML「から」自動的に設定してくれる。

174 :デフォルトの名無しさん:2009/05/17(日) 19:35:49
全部2次元のリストに格納して
ObjectOutputStreamで書き込んどけば
操作メソッドつきのデータになるから便利だよね


175 :デフォルトの名無しさん:2009/05/17(日) 21:47:38
>>48
staticの意味も把握してないで、適当に付けたり外したりしてんのか、おまえ
筋金入りのバカだな

>んでKojin.javaのドライバ読み込む直前で
>Menu mMenu = new Menu();
>String jtxtf1 = mMenu.getJtxtf();
>これしてる。 もしかして読み込みが間に合ってないのか
んなわけねーだろ

自分で、既存のinstance無視して、new Menu();してんじゃねぇか
それじゃインスタンス変数がnullなのは当然だろ

176 :デフォルトの名無しさん:2009/05/17(日) 23:08:18
こんにちは、お願いします。
ColoSpaceについて質問があります。
やりたいことはXYZ色空間での値を、Javaでのデフォルトの色空間に変える(0~255のR,G,B)ことです。

一応それっぽいjavadocの説明を見つけました。↓
public abstract float[] fromCIEXYZ(float[] colorvalue);

CS_CIEXYZ 変換カラースペースにあると考えられるカラー値をこの ColorSpace に変換します。
このメソッドは、International Color Consortium 基準で定義されている相対色度測定を使ってカラー値を変換します。
すなわち、このメソッドがとる XYZ の引数値は CS_CIEXYZ カラースペースの D50 白点を基準にして表示されます。
この表現は、入力カラースペースから CS_CIEXYZ 領域へ、次に出力カラースペースに変換される、2 ステップのカラー変換処理において便利です。
このメソッドが返すカラー値は、色度計で測定するときにメソッドに渡される XYZ 値を生成するカラー値ではありません。
現在 CIE 推奨の計算方法を使った測定値に対応する XYZ 値を計算済みの場合は、その値がこのメソッドに渡される前に D50 相対値に変換する必要があります。詳細については、ICC_ColorSpace の fromCIEXYZ メソッドを参照してください。

いまいち「この ColorSpace に変換します」の、「この」が何を指しているのかわかりません。
個人的には
float[] abc ={X,Y,Z};
float[] abc2;
ColorSpace c= ColorSpace.getInstance(1001);
abc2= c.fromCIEXYZ(abc);
と書いてみました。とりあえず(X,Y,Z)=(1,1,1)を代入してみたところ
abc2の値は(0.9927063,0.9927063,0.9927063)でした。
できてるのかよくわかりません。
教えてください。

177 :デフォルトの名無しさん:2009/05/17(日) 23:27:39
色空間という概念については名前しか知らんので詳しいことは答えられないが、
ここで getInstance に与える引数は ColorSpace.TYPE_RGB ではないだろうか。
1001がその値なのかもしれんが。

そうすると RGB ColorSpace オブジェクトが得られるので、「この」は
RGB ColorSpaceになる。


178 :デフォルトの名無しさん:2009/05/17(日) 23:56:46
操作メソッドってなんだ?

179 :デフォルトの名無しさん:2009/05/18(月) 00:14:37
>>177
ありがとうございます「この」の意味は作成したインスタンスのことだったんですね。
1001はCIEXYZでした。
でもCS_RGBは返ってくる値が0〜1みたいです。

180 :デフォルトの名無しさん:2009/05/18(月) 00:23:13
ColorSpace.getInstance() の引数の名前が int colorspace だし、TYPE_系じゃ
なくてCS_系じゃないかな?と思った。思っただけ。

181 :デフォルトの名無しさん:2009/05/18(月) 02:10:10
JavaSoundでSequence()データをAIFFやWAVE形式で保存って出来ないんでしょうか?
MidiSystem.write()ではSMF形式でしか保存できないようで
AudioSystem.write()ではSequenceを引数に与えられないようですが・・



182 :デフォルトの名無しさん:2009/05/18(月) 07:52:04
ttp://java.sun.com/javase/6/docs/technotes/guides/sound/programmer_guide/contents.html
Chapter13〜15を参照して自分でSynthesizer組むがよい

183 :8:2009/05/18(月) 12:06:07
>>175
既存のインスタンス・・・ を無視か・・。
ヒント有難う
筋金入りの馬鹿なりにぐぐってみる。

184 :デフォルトの名無しさん:2009/05/18(月) 12:09:07
Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Drivercom.mysql.jdbc.Driver

javaからdbにデータを登録しようとするとエラーがでる件。

185 :デフォルトの名無しさん:2009/05/18(月) 12:09:58
>>184
nettobeansを使用してる

186 :デフォルトの名無しさん:2009/05/18(月) 12:14:56
ミスった
netbeans

187 :デフォルトの名無しさん:2009/05/18(月) 12:27:02
>>184
ClassNotFoundException
ってかいてあるやん。
MySQLのドライバはほんとにインストールしたの?

188 :デフォルトの名無しさん:2009/05/18(月) 12:51:44
>>187
したよ

189 :デフォルトの名無しさん:2009/05/18(月) 13:30:00
>184
pathが届いてないとか。

190 :デフォルトの名無しさん:2009/05/18(月) 14:04:51
ClassPath通して無いんだべ
初歩的で一番よく有るミスじゃね

191 :デフォルトの名無しさん:2009/05/18(月) 14:07:59
>>188
どこに?

192 :デフォルトの名無しさん:2009/05/18(月) 15:50:25
Class.forNameをを呼んでいないだけとエスパーしてみる

193 :デフォルトの名無しさん:2009/05/18(月) 15:51:50
forName() 呼ばないで JDBC URL からドライバ推測できるわけねぇじゃん。それなら no stable driver だろ。

194 :デフォルトの名無しさん:2009/05/18(月) 17:24:32
トランザクションができなす。
やったこと
・TYPE = INNODB;
・SET AUTOCOMMIT = 0;
・接続する時についでに
sql = "START TRANSACTION";
pstmt = (PreparedStatement) con.prepareStatement(sql);
pstmt.executeUpdate();
をやってる

・ボタンを押された時だけ
sqlStr = "COMMIT";
pstmt = (PreparedStatement) con.prepareStatement(sqlStr);
pstmt.executeUpdate();
でコミット

・ROLLBACKは明示的に指定していない。

これでjFrameを閉じた時に勝手にROLLBACK前までされてたのがされなくなった。
何かヒント頼む。
Default_Close_OptionはExit_on_closeな。

195 :194:2009/05/18(月) 17:33:40
見直したらぜんぜん具体性がなかった。
トランザクションができない というか
始まってるのか判らない。
それに加えてロールバックが、かからなくてもきゃーだからヒント御願いします。
って事ね。
なぜかそのボタンってのがjButtonなんだが
それを押してない時でもcommitされてるってことは
トランザクションが始まってないか、オートコミットが始まってないかだと思うんだが・・・。
ちなみにset autocommit = 0;ってのは毎回やらないといけない物?

196 :デフォルトの名無しさん:2009/05/18(月) 17:56:13
データベースからJデータ引っ張ってきてJTableに入れたいのだが
rec.getでカラムの値を抜き出すってのでおkなの?


197 :デフォルトの名無しさん:2009/05/18(月) 18:00:08
目の前にいる上司に聞いてみろ。

198 :デフォルトの名無しさん:2009/05/18(月) 18:09:18
>>197
え???

199 :デフォルトの名無しさん:2009/05/18(月) 20:58:51
>>184
つーか、よく見てみろ。
com.mysql.jdbc.Drivercom.mysql.jdbc.Driver になっとる。
com.mysql.jdbc.Driver を二回コピペしちゃっただけ。

200 :デフォルトの名無しさん:2009/05/18(月) 21:50:59
>>194
そんなsqlplus チックな使い方したこと無いからわからないけど
とりあえず java.sql パッケのリファレンスを読むことを勧める。
Connection クラスより
>注: 各文を実行後、デフォルトでは、Connection オブジェクトは自動コミットモードになり、自動的に変更をコミットします。
>setAutoCommit(boolean autoCommit)
> この接続の自動コミットモードを指定された状態に設定します。
>commit()
> 直前のコミット/ロールバック以降に行われた変更をすべて有効とし、この Connection オブジェクトが現在保持するデータベースロックをすべて解除します。

あとpreparedstatement のキャストは要らんでしょ。いいけどさ。

>>196
Jデータと rec って何?何かを伝えようっていう意思ある?
テーブル定義がそこにあるならResultSet からカラム名指定して取得すりゃええし
ないならResultSetMetaData でも使えば?

201 :デフォルトの名無しさん:2009/05/18(月) 23:48:51
すみません、わかる方がいらっしゃれば教えていただけないでしょうか。
GridBagLayoutを使用しているのですが、罫線(枠線)をつけることは
できるのでしょうか。
グリッドのセルの中にはラベルを入れているのですが、
このラベルにsetborderで枠線をつけてみても、
きれいな形にならずに困っております。


202 :デフォルトの名無しさん:2009/05/19(火) 00:01:38
setBorder() の何が不満なのか書かないと答えようがない。

203 :デフォルトの名無しさん:2009/05/19(火) 00:07:27
>>202
そうですね、失礼しました。
私のやりたいことは、各セル均一にきれいに枠線をつけたいのですが
(Excelのように)、ラベルにsetBorder() をつける形で
実装しようとすると、各セルごとのラベルの幅が異なるため、
均一な枠線になりません。
セルの中にあるラベルにつけるという形ではなくて、
グリッドに枠線を表示させる、という方法はあるのでしょうか

204 :デフォルトの名無しさん:2009/05/19(火) 00:19:44
不均一??
ちょっと、

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5,5,5,5);

と、してみてくれないか?
くっついているのを不均一と見てたりしないか?

205 :デフォルトの名無しさん:2009/05/19(火) 00:21:49
GridBagConstraints の fill に BOTH を指定すればセル範囲いっぱいにラベルが拡張される。
というかスプレッドシートみたいなものを使いたいなら JTable を使う。

206 :デフォルトの名無しさん:2009/05/19(火) 00:24:33
ご返答ありがとうございます。
すみません、諸事情がありPCを落とさなくてはならなくなりました。
後日上記のことを試してみます。
ありがとうございました!!

207 :デフォルトの名無しさん:2009/05/19(火) 00:35:49
>>205
すみません、ひとつ確認させていただけますでしょうか
JTableにボタン(JButton)は設置することはできるのでしょうか
ざっと調べてみたのですが、それらしい情報はありませんでした。
コンボボックスをつけることはできるみたいですが。
実は、当方、データグリッドの中にボタンを設置しております。
JTableでもボタンの設置ができるのであれば、そちらに
編集しなおそうと思っております

208 :デフォルトの名無しさん:2009/05/19(火) 00:45:45
>207
できる。
普通にレンダラとエディタいじれば。

やり方はコンボボックスと一緒だけどさ

209 :208:2009/05/19(火) 00:47:17
普通にゃできないっぽいな・・・ごめん

参考
ttp://terai.xrea.jp/Swing/DeleteButtonInCell.html

210 :デフォルトの名無しさん:2009/05/19(火) 00:58:42
GUIつーかSwingの話題が多いな
研修か?まさか業務用で組むなんて滅多にないだろうし
(小物ツールとかならともかく)

211 :デフォルトの名無しさん:2009/05/19(火) 01:05:25
単にIDE使ってるとSwingコントロールが目に付くからだと思うが

212 :デフォルトの名無しさん:2009/05/19(火) 02:03:30
JTable にコンポーネント配置は結構めんどい。忘れてくれ。
背景の JPanel とかを黒にして各コンポーネントのマージンを 1px づつ取れば
グリッドが引かれたようには見える。

213 :194:2009/05/19(火) 09:18:00
>>200
ふむ。
別の所で聞いてたんだが、どうもauto_increment属性付きフィールドはロールバック対象外らしい。
ということで似たような物をつけることにするよ

214 :デフォルトの名無しさん:2009/05/19(火) 11:50:26
なぜかswingスレが過疎ってんだよな

215 :デフォルトの名無しさん:2009/05/19(火) 15:56:12
306: パッケージ org.jdesktop.beansbinding は存在しません。
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
45: パッケージ org.jdesktop.beansbinding は存在しません。
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
64: パッケージ org.jdesktop.beansbinding は存在しません。
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jPanel1,
org.jdesktop.beansbinding.ELProperty.create("Panel0"), jPanel1, org.jdesktop.beansbinding.BeanProperty.create("name"));


なんぞこれ。プロジェクトごと別のPCに移したらエラーはかれた。
JDKもIDEもバージョン一緒だし。
ライブラリも見たところ同じだし。

何が原因だこれ。

216 :デフォルトの名無しさん:2009/05/19(火) 16:16:14
>>215
org.jdesktop.beansbindingというパッケージがクラスパスの通ったところにあるか確認
移したほうの環境ではライブラリが存在していてもそこにパスを通していない可能性がある

217 :デフォルトの名無しさん:2009/05/19(火) 16:31:40
32bitOSでコンパイルしたclassファイルを64bitOSで実行することはできるのでしょうか?


218 :デフォルトの名無しさん:2009/05/19(火) 16:32:59
JavaVM と関連するライブラリの JNI が 64bit 対応していていれば。

219 :デフォルトの名無しさん:2009/05/19(火) 17:00:47
216>>
デスクトップに一応プロジェクト自体はあるんだが
そんでorg,jdesktop.beansbindingもそこにもあるし、Netbeansフォルダ(CのNetbeansフォルダ)にある。
クラスパスはjdkに通してある。


220 :デフォルトの名無しさん:2009/05/19(火) 17:47:52
ttp://www.dotup.org/uploda/www.dotup.org43573.zip.html
java

ランタイムエラーが出てしまいます。
色々考えたのですがわかりませんでした。

皆様の力をお貸しください

よろしくお願いします。

221 :デフォルトの名無しさん:2009/05/19(火) 17:49:31
すいませんパスはjavaです。



222 :デフォルトの名無しさん:2009/05/19(火) 18:34:49
どう操作したらエラーが出るのか、
どんなエラーが出るのかを書こうよ。

コンパイルまでしなきゃいかんのは面倒だ。

223 :デフォルトの名無しさん:2009/05/19(火) 18:45:19
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at EditorEvent.actionPerformed(MyEditor.java:153)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:18
49)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1
000)


224 :デフォルトの名無しさん:2009/05/19(火) 18:46:23

at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMen
uItemUI.java:1041)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

225 :デフォルトの名無しさん:2009/05/19(火) 18:51:48
連続ですいません。

簡単なテキストエディタで、copy,paste,cut機能を実装し、それらを実行しようとした時に起こります。

まったく同じサンプルプログラムをコピペって実行するとエラーは出ないので、どこか間違ってると思うのですが。。。
2日間サンプルと見比べたのですが分からなかったので質問させてもらいました。
よろしくお願いします


226 :デフォルトの名無しさん:2009/05/19(火) 18:52:57
ただのぬるぽじゃねーか。
バグの原因すら突き止められないなら諦めろ。
それがお前の実力だ。

ヒントを与えるとしたら片っ端からコメントアウトしてエラーがでない状態にしろ。
そこから少しずつコメントアウトをはずしてエラーが出る部分を突き止めていけ。
ここはデバッグ代行スレじゃないから自分でやれ。

227 :デフォルトの名無しさん:2009/05/19(火) 18:54:07
ソース見ちゃいないけど、
MyEditor.javaの153行目でぬるぽって書いてあるのに、
何で調べようとしないんだろうな
JButtonだか何だかを押した時っしょ?

フリーで高機能なデバッガが簡単に手に入る時代だというのに

228 :デフォルトの名無しさん:2009/05/19(火) 18:58:39
ソースの9行目と28行目をよく見てみるんだ。

editor.textがnullだからNullPointer


229 :デフォルトの名無しさん:2009/05/19(火) 19:01:17
酷すぎるw

230 :デフォルトの名無しさん:2009/05/19(火) 19:05:06
つーか作っている途中のプログラムを実行したらエラーでて当然だろ・・・
text実装しろよ

231 :デフォルトの名無しさん:2009/05/19(火) 19:07:11
オブジェクト名.copy();でエラーが出たのでそこをSystem.exit(0);に変えて試したら機能しました。

そこから先が分からなくて。。。


232 :3D自動生成ダンジョン@ActionScript3.0(1%):2009/05/19(火) 19:07:16
おまえらソース全然みてないだろw

すごい落ちだぞw



233 :デフォルトの名無しさん:2009/05/19(火) 19:08:36
だから、9行目
JTextArea text;


28行目
JTextArea text = new JTextArea();


を確認しろと。

234 :デフォルトの名無しさん:2009/05/19(火) 19:10:08
わかりました。

ありがとうございます

スレ汚してしまってすいませんでした

235 :デフォルトの名無しさん:2009/05/19(火) 19:10:46
>>232
オチって?
単にtextが空なだけじゃねーの

236 :デフォルトの名無しさん:2009/05/19(火) 19:29:48
フィールド隠蔽かw
ワロタ

237 :デフォルトの名無しさん:2009/05/19(火) 19:51:41
http://jbbs.livedoor.jp/internet/4126/

JAVA習得する予定です
ご指導ご鞭撻のほどよろしくお願いします

238 :デフォルトの名無しさん:2009/05/19(火) 19:55:11
鞭打ち死刑

239 :デフォルトの名無しさん:2009/05/19(火) 21:37:12
フィールド変数の接頭に m やら _ 付けとけ

240 :デフォルトの名無しさん:2009/05/19(火) 22:21:14
JComboBoxの今表示されている項目を
String型変数 strに移そうとして

str = JComboBox.getSelectedItem();

ってやったら怒られました。
互換性がない型といわれましたが
String型にObjectをキャストする方法あるんですか?

241 :デフォルトの名無しさん:2009/05/19(火) 22:23:49
誰かAPIドキュメントのURL貼ってやれよ

242 :デフォルトの名無しさん:2009/05/19(火) 22:24:56
キャストだったらAPIじゃなくて言語使用の方のドキュメントじゃねえかな

243 :デフォルトの名無しさん:2009/05/19(火) 22:26:10
>>240
残念ながらありません。
実装方法の見直しを行って下さい。

244 :デフォルトの名無しさん:2009/05/19(火) 22:36:56
自己解決しました。

str = (String)JComboBox.getSelectedItem();
でできました。
これってキャストとはいわないのですか?
無知ですみません。

245 :デフォルトの名無しさん:2009/05/19(火) 22:37:58
言いますよ
キャストって何だと思ってるんですか?

246 :デフォルトの名無しさん:2009/05/19(火) 22:41:55
243さんがありませんといってたので

247 :デフォルトの名無しさん:2009/05/19(火) 22:42:29
その場合、
str = JComboBox.getSelectedItem().toString();
に、すべきじゃないかと思うんだが。

248 :デフォルトの名無しさん:2009/05/19(火) 22:53:11
クソミソに叩きつつも結局アドバイスをしてるツンデレ回答は好きだが嘘を付くのはダメだと思うんだよな。

249 :デフォルトの名無しさん:2009/05/19(火) 23:00:28
>>247
実行したところ
str = (String)JComboBox.getSelectedItem();
の方法だと途中でエラー吐いてきました。

ありがとうございます。

250 :デフォルトの名無しさん:2009/05/19(火) 23:22:17
toString()が抜けてるのは釣りか?

251 :181:2009/05/19(火) 23:27:38
>>182
ありがとう、標準では出来ないって事ね。
まぁ急ぎじゃないし誰かがつくるかJavaSoundが標準サポートするまで待つか
ありがとう

あれ?ひょっとしてJMFとか使って出来るのか!?もうちょっと調べて見ようかな。

252 :デフォルトの名無しさん:2009/05/19(火) 23:39:41
結局は
str = (String)jComboBox.getSelectedItem();
でいいんでしょ?

253 :デフォルトの名無しさん:2009/05/20(水) 00:05:49
どっちでもいいんじゃね?

254 :デフォルトの名無しさん:2009/05/20(水) 00:07:54
>>252
だめ

255 :デフォルトの名無しさん:2009/05/20(水) 00:09:11
んにゃ、addItem()みてみ。toString() 一択。

256 :デフォルトの名無しさん:2009/05/20(水) 00:16:20
いつの間にgetからaddの話に変わったの?

257 :デフォルトの名無しさん:2009/05/20(水) 00:27:04
Androidの実機がついに日本で出るわけだがAndoroidスレ立て直しの需要はあるかね。

258 :デフォルトの名無しさん:2009/05/20(水) 00:33:18
初心者歓迎と聞いてやってきたんだが、今Eclipseでjavaやり始めたんだが
最初に

public class rensyu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
}
}
って出てくるんやけど、これを
class rensyu
{
{
public static void main(String args[]);


}
}
って出るように設定しなおせる?

259 :デフォルトの名無しさん:2009/05/20(水) 00:48:57
>>258
Preferences > Java > Code Style > Code Template
でだいたい設定できるんじゃないかな。


260 :デフォルトの名無しさん:2009/05/20(水) 00:56:43
>>256
出すモン調べるには、食べるモン見るだろ。

261 :デフォルトの名無しさん:2009/05/20(水) 01:52:46
Stringについて質問させて下さい
Stringはオブジェクト型で参照渡しなので
下記のソースは両方ともおはようになると思ってたんですが
tex2がこんばんはと表示されます。
どうしてでしょう・・?

String tex = "こんにちは";
String tex2 = "こんばんは";
tex = tex2;
tex = "おはよう";
System.out.print(tex);
System.out.print(tex2);

262 :デフォルトの名無しさん:2009/05/20(水) 02:12:35
>>261
tex2が"こんばんは"の参照を持つように
初期化されて以来、一度もtex2は
変更されていないじゃないか。


263 :デフォルトの名無しさん:2009/05/20(水) 02:16:20
>> 261

String tex = "こんにちは";
// 変数 tex が オブジェクト "こんにちは" を参照

String tex2 = "こんばんは";
// 変数 tex2 がオブジェクト "こんばんは" を参照

tex = tex2;
// 変数 tex が、「変数 tex2が参照しているオブジェクト」(= "こんばんは") を参照

tex = "おはよう";
// 変数 tex がオブジェクト "おはよう" を参照

// tex2はずーーーっと "こんばんは" を参照したまま

参照型の代入は、矢印の付け替えだと思いねぇ。


264 :261:2009/05/20(水) 02:28:21
>>262,263
丁寧な説明ありがとうございます。
すごい大きな勘違いをしてました。
本当にありがとうございました!

265 :デフォルトの名無しさん:2009/05/20(水) 03:22:03
int a[] = {4,3,1,2,3}という配列をソートとループを使って
a[2] : 1 a[3] : 2 a[1] : 3 a[4] : 3 a[0] : 4
と表示したいのですが
a[2] : 1 a[3] : 2 a[1] : 3 a[4] : 3 a[1] : 3 a[4] : 3 a[0] : 4
となってしまいます。

ソースは以下の通りです。
int a[] = {4,3,1,2,3};
int b[] = new int[a.length];

for(int i=0; i<a.length; i++)
 b[i] = a[i];

Arrays.sort(b);

for(int i=0; i<a.length; i++){
 for(int j=0; j<a.length; j++){
  if(b[i] == a[j])
   System.out.print("a["+ j +"] :" + b[i] + "\t");
 }
}

jのループの中にbreak;を入れてみましたが
a[1]a[4]の順で表示されずa[1]a[1]と表示されてしまいます。
ご指摘お願いします。

266 :デフォルトの名無しさん:2009/05/20(水) 10:53:06
>>265
そりゃ
a[] = {4,3,1,2,3}
b[] = {1,2,3,3,4}
を二重ループで比較しているから、b[i]==a[j] が成立するのが
b[2]==a[1]
b[2]==a[4]
b[3]==a[1]
b[3]==a[4]
の四種類になる。

bにはもうaの並び順の情報が無くなってるから、そういう表示をさせたかったら
色々と(無駄な努力を)がんばるしかない。
初めに見つかったインデックスで妥協するなら、
  if(b[i] == a[j])
   System.out.print("a["+ j +"] :" + b[i] + "\t");

  if(b[i] == a[j]) {
   System.out.print("a["+ j +"] :" + b[i] + "\t");
   break;
  }
とすれば、a[2] :1 a[3] :2 a[1] :3 a[1] :3 a[0] :4 になる。

267 :デフォルトの名無しさん:2009/05/20(水) 11:37:31
>>216
なんやビルドとかのフォルダごと消えてたみたい。
移しなおしたらせふせふ。
ありがとう

268 :デフォルトの名無しさん:2009/05/20(水) 14:03:11
javaでデータベース(mysql)から値を取得しJTableにinsertする方法
が分かりません。
今から乗せるソースはJLabelの場合なのですが、これをJTableにするにはどのようにすればいいのでしょうか?
また、付け加えるところがありましたら教えて下さると助かります。

269 :デフォルトの名無しさん:2009/05/20(水) 14:05:06
protected void finalize() throws Throwable {
con.close();
pstmt.close();
//クローズ
rs.close();
// 自動的な解除を待たずに直ちに閉じる。
super.finalize();// 念のため、親クラスの finalize() を呼ぶ。
}
private void displayData(){
try {
MainMenu mainMenu = new MainMenu();
sqlStr = mainMenu.getSendsqlstr();
System.out.println(sqlStr);
//ドライバクラスをロードする
Class.forName("com.mysql.jdbc.Driver");//org.gjt.mm.mysql.Driverこっちの可能性もあり
//MySQLに接続
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cujsystem", "root", "root");
//ステートメント生成
pstmt = (PreparedStatement) con.prepareStatement(sqlStr);
//SQL文実行
rs = pstmt.executeQuery(sqlStr);
rs.first(); // 最初の行に移動


270 :デフォルトの名無しさん:2009/05/20(水) 14:06:01
        jLabel30.setText("" + rs.getInt("member_id"));
jLabel31.setText(rs.getString("member_name"));
jLabel32.setText(rs.getString("member_furigana"));
jLabel33.setText(rs.getString("birth_day"));
jLabel34.setText(rs.getString("sex"));
jLabel36.setText(rs.getString("telephone"));
jLabel37.setText(rs.getString("telephone_2"));
jLabel29.setText(rs.getString("zipcode"));
jLabel38.setText(rs.getString("address"));
jLabel39.setText(rs.getString("address_2"));
jLabel41.setText(rs.getString("douki"));
jLabel40.setText(rs.getString("e_mail"));
jTextArea2.setText(rs.getString("remarks"));

}
catch(Exception ex){
System.out.println("Error:" + ex.toString() + ex.getMessage());
}


}

271 :デフォルトの名無しさん:2009/05/20(水) 14:33:03
volatile の使いどころがいまいち分かりません。
マルチスレッドで共有される前提のクラスの非 final メンバは全部 volatile にすべき?

272 :デフォルトの名無しさん:2009/05/20(水) 15:00:52
finalizeなんて、いつ呼ばれるかわからないところでコネクションをクローズするとか信じられない。

273 :デフォルトの名無しさん:2009/05/20(水) 15:26:03
なんか、コンパイルしたらこんなのがでてきたのですが
Z:\desktop\sample>javac -classpath .;speech.jar PowerSpectrum.java
>PowerSpectrum.java:15: speech.MyReadWAV1 にアクセスできません。
>クラスファイル speech.jar(speech/MyReadWAV1.class) は不正です。
>クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。
>削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。
> MyReadWAV1 readWAV= new MyReadWAV1( inputFileName );
> ^
>エラー 1 個
>

前まではなんの問題もなくコンパイルできたのですが、今日になっていきなりでてきたんです。
これってどういういみなんでしょうか

274 :デフォルトの名無しさん:2009/05/20(水) 15:30:53
JDK 1.5 でコンパイルしたクラスを JDK 1.4 で実行しようとした。

275 :デフォルトの名無しさん:2009/05/20(水) 17:15:15
jComboBoxに日付を自分で入れるんじゃなくてaddしていくことって出来る?

ついでにその当日にフォーカスを置いて初期選択がその日になってると尚いいんだが。

276 :デフォルトの名無しさん:2009/05/20(水) 17:22:25
>>268
コード内容自体の話じゃないけど、設計に問題がある。
データベース処理と表示処理は意図的に分けて作ったほうがいい。作るべき。
phase1. データベースからデータを読み出して、どこかに記録
phase2. 記録されたデータを元として、画面表示とかファイル出力
と分けるのが、大き目のプログラム開発での定石。

詳しい理由に関してはMVCモデルとぐぐってもらうとして、そうしておけば
phase2部分だけ質問すればよいから、とりあえず動いている(はず)の
phase1部分にツッコミ入れられることもなかったw

phase2部分はJTableにデータを表示する方法なだけだからAPIとか嫁。
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

277 :デフォルトの名無しさん:2009/05/20(水) 17:33:46
>>275
ちょいエスパーしてみると、自分で「キーボードから」入れるんじゃなくてかな?
ということでAPIのJComboBox#addItem()嫁。
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JComboBox.html#addItem(java.lang.Object)
初期選択項目はこっちな。
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JComboBox.html#setSelectedIndex(int)

278 :デフォルトの名無しさん:2009/05/20(水) 17:36:37
自動設定するなら手入力が邪魔だろうから
setEditable() も嫁。

あとチュートリアルはこっち。
http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html

279 :デフォルトの名無しさん:2009/05/20(水) 17:36:46
>>277
エスパーさせる内容ですまんかった。
要はうん、日付を取得してそれをぶち込むってこと。
かなり回答が的を射ててくれて助かった。
ありがとう

280 :デフォルトの名無しさん:2009/05/20(水) 17:52:43
>>271
マルチスレッドで共有される前提のクラスの非 final メンバは

排他処理してからアクセスする

と覚えておけば間違いない。
volatile ってヤヴァいバグを作りこみそうで怖いわ。ご利用は計画的に。
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#36930

281 :デフォルトの名無しさん:2009/05/20(水) 18:07:45
>>274
どうやれば、このエラーが無くなるのでしょうか

282 :デフォルトの名無しさん:2009/05/20(水) 18:17:08
jcy = String.valueOf(cal.get(Calendar.YEAR));
int icjcy = Integer.parseInt(jcy);
jComboBox1.setSelectedIndex(icjcy);
java.lang.IllegalArgumentException: setSelectedIndex: 2009 out of bounds
だ・・・と?

283 :デフォルトの名無しさん:2009/05/20(水) 18:17:36
もう一回ソースからコンパイルしれ
超適当に言うと、新しい環境で作ったモノが古い環境で動きませんってこった
ソース次第じゃ警告かエラー出るかもしれんが

284 :デフォルトの名無しさん:2009/05/20(水) 18:21:00
>>281
たぶん speech.jar が 1.5 でコンパイルされている。
JDK1.5をインストールしなきゃだめだべ。

285 :282:2009/05/20(水) 18:24:16
これもしかして項目数か・・

286 :デフォルトの名無しさん:2009/05/20(水) 18:48:26
もしかしなくてもインデックスに年号指定しとりますがな。
アイテムを一個ずつ取り出してインデックスを探すか、アイテムを作りこむ際に
インデックスを覚えておくしかないかな?
選択中と任意の違いはあれども、アイテムから文字列を得るには >247 参照。

287 :デフォルトの名無しさん:2009/05/20(水) 18:59:11
>>280
private volatile int foo;
public void setFoo(int foo){
  this.foo = foo;
}

これが

private final Object fooLock = new Object();
private int foo;
public void setFoo(int foo){
  synchronized(fooLock){ this.foo = foo; }
}

これと等価と言うことで良いですかね。
単発の変数や参照で原子性が必要なことってあまりないですよね。

288 :デフォルトの名無しさん:2009/05/20(水) 19:36:51
>>282
リストとコンボボックスの項目数は実装上の制限がある

289 :デフォルトの名無しさん:2009/05/20(水) 19:41:26
>>284
ありがとうございます。
とりあえずダウンロードし直してみます

290 :デフォルトの名無しさん:2009/05/21(木) 01:21:54
みんなのおすすめor使ってるエディタは何?

291 :デフォルトの名無しさん:2009/05/21(木) 01:25:02
Eclipse

292 :デフォルトの名無しさん:2009/05/21(木) 01:51:00
>>291
ありがとう、さっそくインストールしてみるわ

293 :デフォルトの名無しさん:2009/05/21(木) 08:32:04
職場のボロノートPCにGanymede入れてみたものの、
起動に四分かかって俺涙目

294 :デフォルトの名無しさん:2009/05/21(木) 13:18:17
>>293
JDK1.4とかで動けば良いなら
3.2入れるとか。

295 :282:2009/05/21(木) 16:24:26
ふむ。成る程。 
あれから色々やってみて
jcm = String.valueOf(cal.get(Calendar.MONTH) + 1);
int icjcm = Integer.parseInt(jcm);
int ijcm1 = 0;
for(int count = 0; count <= 11; count++){
jComboBox2.addItem(ijcm1 +=1);
}
jkentxtf1 = jComboBox2.getSelectedItem().toString;
これをすると、例えば今5月だろ?
05月ってする方法がわかんないだ。
SQLで探すのに20090520とかいう形で入るから0をつけたい。
何か方法ある?

296 :デフォルトの名無しさん:2009/05/21(木) 17:09:32
>>295
String#format

297 :デフォルトの名無しさん:2009/05/21(木) 18:18:09
SimpleDateFormatじゃだめ?

298 :デフォルトの名無しさん:2009/05/21(木) 18:31:12
Javaの勉強してて、いろんな基礎文法載ってるテキストは大体やったから
ある程度基礎は知ってる。で、15歳からはじめるJAVAゲームプログラミングってやつやり始めたら
中盤当たりからかなり難しくなってきて、もぅただテキストをただ見ながら移して打ちこむ感じに・・・・
理解しながら打ってるけど、どーも自分で考えてやったわけじゃないから受身な感じになって覚えられない。

ある程度自分でプログラムを考えてやらせるようなプログラムの本ないでしょうか。
サイトとかも教えてほしい 

299 :デフォルトの名無しさん:2009/05/21(木) 18:38:46
>>298
> ある程度自分でプログラムを考えてやらせるようなプログラムの本ないでしょうか。
> サイトとかも教えてほしい 

この時点で自分で考えてないし、受身な感じだと思うよ。
自分で作りたい物を考えて、それを実現する方法を必死に調べるほうが身につくと思う。
テトリスでも作ってみれば?

300 :デフォルトの名無しさん:2009/05/21(木) 19:19:45
俺もゲームでも作ってみることを勧める。

普通言語覚えたいという欲求には、何かをしたいという事が前提だとおもうんだけど
そういうのはないんかなぁ?

301 :デフォルトの名無しさん:2009/05/21(木) 21:25:43
>>293
起動スピードにはあまり関係ないんだけど、ボロノートなら操作全般が・・・
そこで生活の知恵。 Eclipse のインストールフォルダの eclipse.ini を

--launcher.XXMaxPermSize
128m
-framework
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx64m
-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

という感じに大胆にメモリ節約すると実メモリ 512MB でも、普通に使えるようになる。

302 :デフォルトの名無しさん:2009/05/21(木) 21:29:04
あ、ガニメデ・・・こっちはプレアデスだった。まあ、やることは似たようなものだろう。

303 :デフォルトの名無しさん:2009/05/21(木) 23:11:12
>15歳からはじめるJAVAゲームプログラミング
あれはいい本だが内容は入門向けだぞ。

304 :デフォルトの名無しさん:2009/05/21(木) 23:27:49
ここで良いかわからないですが、
hoge.jar というのがwebサバに置いてあったとして、
Javaアプリとしてそれを利用する形なんだけど、
1分間に15回くらいの頻度でwebにhoge.jarアクセスがあるんです。

Javaのverとかブラウザの設定の問題?
それとも他に何か影響してるのかしら・・・・
同じような現象知ってる人いたら情報欲しいです。。

305 :デフォルトの名無しさん:2009/05/21(木) 23:44:20
>>304
イミフ。まあ言ってることからして板違い

306 :デフォルトの名無しさん:2009/05/21(木) 23:45:44
俺のターン!ドロー。
>>307をいけにえにエスパーを特殊召喚!
ターンエンド。

307 :デフォルトの名無しさん:2009/05/22(金) 00:21:20
URLClassLoaderのキャッシュ実装がタコなんじゃね?
と見ようとしたんだけど、sun.misc.URLClassPath に委譲してる?

ドロー、ワーウルフを召喚。二枚伏せて、ターンエンド。

308 :デフォルトの名無しさん:2009/05/22(金) 00:50:31
小生cを少しかじっていてこのたびjavaで
鷲巣麻雀をつくろうとおもってるんだがオブジェクト指向ができない、、、
牌クラス
ルールクラス
(待ちくらす、鳴きクラス、点数計算クラス、役クラス、流局クラス)
プレイヤークラス
(親クラス、子クラス
その他
(配牌クラス、理牌クラス、場所決めクラス、親決めクラス)
間違ってないよね?



309 :デフォルトの名無しさん:2009/05/22(金) 01:04:29
>>308
それ、クラス化って言う名のカテゴライズじゃね?

ゲーム進行クラスどこよ?
それにくっついてくる遷移を直接行うものももしかしたらクラスにするかもしれないし。

簡単なのは動作に関して誰が何の責任を持つ必要があるか?って考えたときにその"動作"はメソッド、責任者はそのメソッドを持つクラス。って感じにクラスを作る。
あとは基礎だがis aとhas a関係をしっかりさせるのもいい。

310 :308:2009/05/22(金) 01:33:55
>>309

動作に関して誰が何の責任を持つ必要があるか
オブジェクト指向ってそーゆうことだったのかorz
たしかにただ分解しただけでこっから先どうすれば
いいのか分からなかったwwただの分類じゃ駄目なんだなあw
ありがとうございます。これで指針がたてられそうです。



311 :デフォルトの名無しさん:2009/05/22(金) 01:47:52
xception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 128
at PowerSpectrum.main(PowerSpectrum.java:39)

これってさ、配列の中にあるアドレスがもうないから表示できねえよってことだよね?
まさかPCの性能上表示不能なんてことはないですよね?


312 :デフォルトの名無しさん:2009/05/22(金) 01:56:33
単に大きさが128以下の配列の129番目を参照しようとしただけじゃないか?
フーリエ変換で2のべき乗サイズの配列しか用意してないのに
その1個先のナイキスト周波数もしくはそれに相当する時間か空間軸一杯まで
読み込むか書き込むかしたんじゃないの?
PowerSpectrum.javaの39行目あたりより前を見て添え字が変になっていないか確認しろ

313 :デフォルトの名無しさん:2009/05/22(金) 01:57:46
補足:129番目の添え字は128なので

314 :デフォルトの名無しさん:2009/05/22(金) 02:00:35
processingの質問ってこの板で合ってますか?

315 :デフォルトの名無しさん:2009/05/22(金) 02:02:17
ナイキスト周波数でなくサンプリング周波数だね

316 :デフォルトの名無しさん:2009/05/22(金) 02:04:01
>>314
http://pc12.2ch.net/test/read.cgi/tech/1186384753/
かな
procとかでスレ名を検索するのがコツ

317 :デフォルトの名無しさん:2009/05/22(金) 02:05:13
>>どうも有難う御座います

318 :デフォルトの名無しさん:2009/05/22(金) 02:45:49
>>308
試行錯誤してて仕様や動作は決まったけど実装を変えたくなったら

リファクタリング

でググるといいよ。

319 :デフォルトの名無しさん:2009/05/22(金) 04:05:27
google newsをjavaでググたらオラウータンが開発で激減とか言うタイトル見つけてオラウータンがデスマーチで過労死したのかと思ったお

320 :デフォルトの名無しさん:2009/05/22(金) 12:18:43
ジャワ島か!


321 :デフォルトの名無しさん:2009/05/22(金) 12:48:56
"あ"って書かれたボタン押したらテキストエリアに"あ"って入力されるような
スクリーンキーボード作りたいんですが
ボタン押したらRobot使ってキーボードを押してKeyPressedの中で処理を行うって
感じでいいのでしょうか?
あと入力された文字の漢字変換を行いたいんですがこの方法で出きるでしょうか?


322 :デフォルトの名無しさん:2009/05/22(金) 13:20:34
特定のテキストを単に挿入するだけならRobotに頼らずともテキストエリアの
insert と getCaretPosition を使えばよい。

インプットメソッドを通した結果を貰うには……java.awt.im.* を使うのかな。
変換操作もボタンでがんばるんだろうか。どうやるつもりか知らないけど。


323 :デフォルトの名無しさん:2009/05/22(金) 13:23:47
>>322
助言ありがとうございます

324 :デフォルトの名無しさん:2009/05/22(金) 13:32:50
変換操作も"変換"ボタンをクリックすると漢字に変換されるようにしたいと思っています
この部分の実現方法がさっぱり分かりません
どなたか良い実現方法はないでしょうか?

325 :デフォルトの名無しさん:2009/05/22(金) 13:34:50
次候補とか文節区切り変更とか確定の操作の段階になるとIMに制御が渡ってしまうから
ボタンとかイベントとかでどうにかするレベルじゃなくなってくるんではないだろうか。
JavaでIM SPI実装すれば出来るんだろうけど、気が遠くなる。
Robotの出番になるのかな……


326 :デフォルトの名無しさん:2009/05/22(金) 13:47:33
>>325
ありがとうございます
SPIの実装は大変そうなので,Robot使って色々試してみます
また,別の方法で実現できるならば,書き込んでいただけると幸いです

327 :デフォルトの名無しさん:2009/05/22(金) 15:22:33
漢字変換機能付きスクリーンキーボード
http://debugger.ru/demo/projects/virtualkeyboard/

キーボード右下で「Japanese」を選ぶと漢字変換機能が有効になるみたい

328 :デフォルトの名無しさん:2009/05/22(金) 15:46:29
>>319

329 :デフォルトの名無しさん:2009/05/22(金) 18:59:52
興味本意でDBUnit使ってみたんですが、
例えばDB操作関連のクラスがインスタンス変数でConnectionをprivateで持ってしまうと、
DBUnitって使えなくなってしまいませんか?
(Connectionは外から触らせたくないため、DB操作クラスにはConnectionのgetterはありません)

DB操作関連クラスには、外から渡されるStatementやPreparedStatementで
executeやらexecuteQueryやらexecuteUpdateを実行させて、
booleanなりObject[][]なりintを返します。

このDB操作クラスを使って更新なり削除をした結果を
DBUnitで結果確認用Excelを読み込んで試験したいと思っています。
ですが、JUnitのTestCaseを継承した試験クラスのsetUp()で試験用データをクリーンインサートする際に、
DBUnitがデータ登録用にConnectionを必要とします。

別途Connectionを用意してやらないと無理でしょうか?

330 :デフォルトの名無しさん:2009/05/22(金) 19:19:22
よくよく考えたら当たり前ですよね、失礼しました。

331 :デフォルトの名無しさん:2009/05/22(金) 20:48:34
>>15
JFreeChartを使ってやっとグラフが書けました。
ありがとうございました。

332 :デフォルトの名無しさん:2009/05/23(土) 17:46:58
paintとpaintComponentってどう違うのですか?

333 :デフォルトの名無しさん:2009/05/23(土) 19:22:47
javadoc嫁

334 :デフォルトの名無しさん:2009/05/23(土) 19:43:51
正確にはjavax.swing.JComponent#paint嫁、かな?
両者の比較っーことだから。

335 :デフォルトの名無しさん:2009/05/23(土) 20:34:01
paintとpaintComppnentの違い聞くくらいだから両方読まないと分からないんじゃないのか。

336 :デフォルトの名無しさん:2009/05/23(土) 20:47:39
>335
まあ。まずは読んでから語ろうな

337 :332:2009/05/23(土) 21:22:53
レスありがとうございます。
Swingコンポーネントで描画が発生するとpaintを呼び、paintが
paintComponent→paintBorder→paintChildrenと呼び出すという認識で正しいでしょうか?
今JFileChooserをいじっているのですが、描画が画像のようになります。
実際にプログラムを追いかけてもpaintComponent→左側のToggleButton5個→paintという順で
実行され、表示もその通りになっています。
この順で呼び出される理由もわかりませんが、paintはどこが呼び出しているのでしょうか?
ttp://www.jpdo.net/link/1/img/11577.jpg

338 :デフォルトの名無しさん:2009/05/23(土) 21:36:13
>>337
自分で見つけられるようにならんと、いつまでたっても半人前だぞ。
java.awt.Component#update

339 :デフォルトの名無しさん:2009/05/23(土) 21:53:47
paintの項から
「オーバーライド:クラス Container 内の paint」
「オーバーライド:クラス Component 内の paint」
「関連項目:update(java.awt.Graphics)」
と辿ると、
「Component の update メソッドがこのコンポーネントの paint メソッドを呼び出し、このコンポーネントを再描画します。」
と書いてある。わけだ。

http://java.sun.com/products/jfc/tsc/articles/painting/index.html

340 :デフォルトの名無しさん:2009/05/23(土) 21:54:01
ファイル選択ダイアログをhogehogeするときはそもそもJFileChooser使わずに一から作るもんなんだが。

341 :デフォルトの名無しさん:2009/05/23(土) 22:21:42
paintごちゃごちゃする前にcreateDialogをオーバーライドすれば良さそうな。

342 :デフォルトの名無しさん:2009/05/23(土) 22:42:02
int型の 987654321を
     987,654,321と

いうように、3ケタごとにコンマをうつ方法は
どうやったらいいのでしょうか


343 :デフォルトの名無しさん:2009/05/23(土) 22:51:16
自分のクラス内のメソッドを呼んだら
非スタティックなのをスタティック読みできませんと。
しかし、コンストラクタの中に書いたら、普通にスタティック読みできますね。
自分のクラスでもインスタンス化するのが基本なんでしょうか。


344 :デフォルトの名無しさん:2009/05/23(土) 22:56:17
>>342
System.out.println(MessageFormat.format("{0,number,integer}", 1000000));

345 :デフォルトの名無しさん:2009/05/23(土) 23:06:25
String.format("%,d", 987654321)

346 :デフォルトの名無しさん:2009/05/23(土) 23:08:20
>>343
スタティック読み???
何を言いたいのかエスパーすると static 参照かな。
staticメソッド(例えばmain)からインスタンス(非static)メソッドを呼んだんだろ?
そしてコンパイルエラーになった、と。

staticメソッドからは、staticメソッドかstaticフィールドしか直接アクセスできない。
そしてコンストラクタはstaticじゃないので別のインスタンスメソッドを呼べる。

347 :長いので1/2:2009/05/23(土) 23:10:12
初心者です。少し長くなりますが教えてください。
処理結果を仮に田中・モブ1・モブ2・・・と表示したくて、
下記のように継承やsuperを使って書いてみたのですが、
なぜか全てモブ2と表示されてしまいます。
下記のように書いてみたのですが(必要部分だけ抜粋)、
なぜそうなってしまうのでしょうか。

【メインクラス】
First a = new First("田中");
Second[] b = new Second[2];
for(int i = 0; i < cm.length; i++){
String i2 = Integer.toString(i+1);
b[i] = new Second("モブ" + i2);
}

(後にa.getName()を表示し、その後下記のようにしてでモブを表示)
for(int i = 0; i < cm.length; i++){
System.out.println(b[i].getName());
}

【spaクラス】
public abstract class spa{
protected static String name;
public Gamer(String name){
this.name = name;
}
public String getName(){
return name;
}
(以下他の処理記述)
}

348 :2/2:2009/05/23(土) 23:11:39
【サブクラスその1】
public class First extends spa{

public First(String name){
super(name);
}
(以下、他の処理が記述)
}

【サブクラスその2】
public class Second extends spa{
public Second(String name){
super(name);
}

(以下、他の処理が記述)
}

349 :2/2:2009/05/23(土) 23:13:00
すいません。1/2のspaクラスのコンストラクタ名
間違いです。Gamerではなく、spaです。

350 :デフォルトの名無しさん:2009/05/23(土) 23:19:08
>>344
>>345
ありがとうございました。
おかげでたすかりました

351 :デフォルトの名無しさん:2009/05/23(土) 23:27:12
>>347
> protected static String name;
static 削ってみれば?

352 :デフォルトの名無しさん:2009/05/23(土) 23:43:49
>>351
ありがとうございます。ちゃんと表示されるようになりました。
staticの使い方があんまり分かってなかったようなので
勉強しなおします。ありがとうございました。

353 :デフォルトの名無しさん:2009/05/24(日) 02:24:39
すごい初歩的な質問ですが、c言語でいうscanfと同じ動作をするコマンドってないのですか?


354 :デフォルトの名無しさん:2009/05/24(日) 03:33:31
java.util.Scannerがそうだけど、これを使えるようになるにはc scanfと違って時間がかかるんじゃないか。

355 :デフォルトの名無しさん:2009/05/24(日) 09:13:44
コマンドじゃないしなあ。入出力以前な感じ。

356 :デフォルトの名無しさん:2009/05/24(日) 09:15:04
ハッシュマップについて質問なんだけど、
1.mainクラスで作成したハッシュマップを別クラスのメソッドに渡す
2.そのメソッドでハッシュマップの値を変更する
3.変更後のハッシュマップを返す

ってやった場合でも、値が変更された後のハッシュマップを
mainクラスでも使えるの?

357 :デフォルトの名無しさん:2009/05/24(日) 09:25:23
>>356
使えるよ。

358 :デフォルトの名無しさん:2009/05/24(日) 09:34:38
>>356
更に言えば、main は最初に作った時に
代入した変数を使うことで、変更後の
値を見ることもできるだろうから、
返してもらう必要も無いことが
多いだろうな。

359 :デフォルトの名無しさん:2009/05/24(日) 11:40:20
>>345 >>355
そういうプログラムは、そもそもjavaには向かないってことですかね?

360 :デフォルトの名無しさん:2009/05/24(日) 12:02:46
>359
ものの名前を伝えられるように正しく覚えろって話

361 :デフォルトの名無しさん:2009/05/24(日) 12:09:16
>>359
単純にそれだけを目的のプログラムを作成する、と言えるかもね。
Excel か、スクリプトの方が簡単に早く終わると思う。

ただ普通は
・要件としてJava の使用があって
・仕様を満たすためにはその作業が必要になって
じゃあJavaでどう実装したらいいか、という話になるんじゃないかなぁと思うけどな。

362 :デフォルトの名無しさん:2009/05/24(日) 12:36:33
>>361
とあるプログラムの一部に入れたいんですよ
最初に数を入れてみたいな文字列を表示させてから
キーボードでその変数に数を入力させるみたいなことをする作業が必要な場合ですね。
なんか日本語変になってすいません。


363 :デフォルトの名無しさん:2009/05/24(日) 12:50:23
>362
その変数って何さ。

Javaにおける入出力の基本
Input/OutputStream, Reader/Writer の関係を調べると良いかもよ

別に知らなくてもプログラムは書けるけど、少しは興味ない?

364 :デフォルトの名無しさん:2009/05/24(日) 12:52:59
swingでボタンとかラベルのオブジェクトの名前どうつけてる?
オブジェクトが増えてくると、何が何が何だかわからなくなってくる

365 :デフォルトの名無しさん:2009/05/24(日) 13:14:19
>>362
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
boolean retry = true;
long val = 0;
while (retry) {
System.out.print("最初に数を入れて、みたいな〜 : ");
String line = reader.readLine();
try {
val = Long.parseLong(line.trim());
retry = false;
} catch (Exception ex) {
System.out.println("\"" +line + "\" はぁ、kyってかんじ〜");
}
}
System.out.println("入力されたのはぁ、" + val + " だね(はぁと)");
}
}

366 :デフォルトの名無しさん:2009/05/24(日) 13:17:07
>>363
最初は、それが手がかりになるかもと思ってググっていたんですがさっぱりで・・・

一応、自力でここまでできたんですよ
int i,j;
i=190;
for(j=0;j<128;j++){
System.out.println("["+i+"]["+j+"] "+hairetu[i][j]);
}
で、このままだとユーザーがどんなに起動しても、i=190の値しか表示できないんです。
そこで、ユーザーがキーボードからこのiに入る数値を入力するって形にしたいんです。

なんの変数?っていう質問の答えになってるでしょうか……


367 :デフォルトの名無しさん:2009/05/24(日) 13:33:29
>>357-358
遅れてすまない。ありがとう。

368 :デフォルトの名無しさん:2009/05/24(日) 13:50:12
>>366
JOptionPane#showInputDialogはどうよ?

String input = JOptionPane.showInputDialog("数値を入力してください");
int i = Integer.parseInt(input);

369 :デフォルトの名無しさん:2009/05/24(日) 14:43:28
>>368
PowerSpectrum.java:39: シンボルを見つけられません。
シンボル: 変数 JOptionPane
場所 : PowerSpectrum の クラス
String input = JOptionPane.showInputDialog("数値を入力してください");
^
PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。
int i = Integer.parseInt(input);
^
エラー 2 個
だそうです。プログラム冒頭のメイン関数で定義したほうがいいんでしょうか

370 :デフォルトの名無しさん:2009/05/24(日) 15:13:35
>>369
・・・import汁

371 :デフォルトの名無しさん:2009/05/24(日) 15:13:59
>>369
うん?まさか>>368のコードをそのままを挿入した?
ちゃんとコンパイル通るように組み替えないと駄目だろ・・

JOptionPaneは
javax.swingパッケージだからインポートしないと使えないよ。
こんな風に
import javax.swing.JOptionPane;
もしかしてインポートも分からない?

>PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。
こっちはエラーになったソースを見せくれないと指摘のしようがないなあ。

372 :デフォルトの名無しさん:2009/05/24(日) 15:49:47
javaは最近始めたばかりでして全く知識が皆無でして……ほんとすいません

importってのは、プログラム冒頭の奴ですか?


373 :デフォルトの名無しさん:2009/05/24(日) 15:54:50
import入れたらできました。
>PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。
は解決してませんが、ソース全部はった方がいいですか?

374 :デフォルトの名無しさん:2009/05/24(日) 16:01:23
単に同じ関数内でint iを二重に定義しているだけ。
それくらいは自分で探さないと勉強にならん。

375 :デフォルトの名無しさん:2009/05/24(日) 16:05:34
NetBeansでSwingをしていると、JFrameでpublic static void main(String[] args)が
勝手に作られるけど
他のクラスからJFrameクラスを使うときは、public staic void main..を削除した方がいい?

376 :デフォルトの名無しさん:2009/05/24(日) 16:08:43
起動時にはmainを実行するクラスを指定するから、削除しなくても問題ない。

377 :デフォルトの名無しさん:2009/05/24(日) 16:11:45
ゴミなら消しとけ

378 :デフォルトの名無しさん:2009/05/24(日) 16:18:44
>>376-377
わかった。ありがとう

379 :デフォルトの名無しさん:2009/05/24(日) 16:21:26
>>374
さすがにそうですよね。
やってみます

380 :デフォルトの名無しさん:2009/05/24(日) 17:02:31
JFrameをアプリケーションクラスにするのはやめろってのはsunのSwingのガイドかチュートリアルにも書いてなかったけ?
EDT使えとしか書いてないんだっけか。

メインウィンドウをアプリケーションクラスにするのは行儀悪いからアプリケーションクラスがウィンドウ持つようにした方がいい。

381 :デフォルトの名無しさん:2009/05/24(日) 17:18:47
本格的なアプリならなぁ。
main.c に全部書かないで、関数は別ファイルに書いて分割コンパイルして
リンク汁。と同じレベルの親心。

382 :デフォルトの名無しさん:2009/05/24(日) 17:57:40
嗚呼流れてしまった、前スレを見る方法ないですか

383 :デフォルトの名無しさん:2009/05/24(日) 18:02:58
main(void)やlibcだけではguiは出来ないが?

384 :デフォルトの名無しさん:2009/05/24(日) 18:22:48
>>383
ライブラリとインクルードヘッダはコンパイラ機能として、main.cだけでGUIは書けるぜ。
Windowsでもスタートアップ処理とウィンドウプロシージャ書くだけだからな。

385 :デフォルトの名無しさん:2009/05/24(日) 23:10:20
流石に、にちゃんでjavaの全部を学ぶのは無理なので、一冊java入門書を読む事を勧める。

386 :デフォルトの名無しさん:2009/05/25(月) 00:40:40
OSで使われているMIDIシンセサイザを取得する事はできませんか?

MidiSystem.getSynthesizer() で取得されるのは Java Sound Synthesizer
ところが、MidiSystem.getReceiver() で使われるシンセサイザはOSで使われるシンセサイザなんですね

いま必死こいてMidiSystem.getReceiver()のソースを眺めているのですがサパーリです。



387 :デフォルトの名無しさん:2009/05/25(月) 03:00:45
soundbankに読み込みロックを掛けて開いておく

388 :デフォルトの名無しさん:2009/05/25(月) 08:39:32
JavaでMidiって結構ここで出てくるけど、
やっぱりゲームでも作ってんの?

まともなソフトウェアMidi音源ありゃなー

389 :デフォルトの名無しさん:2009/05/25(月) 10:55:11
RadomAccessFileでファイルを開き、開いたファイルの中身のアスキーコード0-255それぞれの文字数をカウントし配列に入れたいのですが御指南願います。

390 :初心者たん:2009/05/25(月) 13:30:02
すいません、Javaはじめたばっかなんですけど
booleanの使い方、動きが掴めません、理解できません
下は例題なんですけど8行目のboolean ok これはデフォルトで
falseを返すんですよね??変数ok に 下のほうのboolean型クラスメソッド
showQuestionをキャスト??しかもその横にint型の引数?true of falseを返す
と書いてあったのみたのですが???調べまくってソース書いてもわからずじまいw
こんなつまらない質問答えてくださるかたお願いしますお願いします

import java.io.*;
public class kuku2{
public static final int maxQuestion=10;
public static void main (String[] args){
int goodAnswer = 0;
System.out.println("これから九九の問題を"+ maxQuestion +"出します");
for(int i=0;i < maxQuestion;i++){
boolean ok = showQuestion(i+1);
if (ok){
goodAnswer++;
}
}
double rate = goodAnswer * 100.0 / maxQuestion;
System.out.println("");
System.out.println("問題は"+ maxQuestion +"問ありました");
System.out.println("正解は"+ goodAnswer +"問で、");
System.out.println("間違いは"+ (maxQuestion-goodAnswer) +"問です");
System.out.println("正解率は"+ rate +"%です");
System.out.println("");
System.out.println("お疲れ様です");
}

391 :初心者たん:2009/05/25(月) 13:31:30
public static boolean showQuestion(int questno){
int x = (int)(Math.random()*9)+1;
int y = (int)(Math.random()*9)+1;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("第 "+ questno +" 問 "+ x +" × "+ y +" = ?");
String str=input.readLine();
int result=Integer.parseInt(str);

if(x * y == result){
System.out.println("正解です");
return true;}
else{
System.out.println("間違いです");
return false;
}
}
catch(IOException e){
System.out.println(e);
}
catch(NumberFormatException e){
System.out.println("入力が正しくありません");
}
return false; }
}

392 :デフォルトの名無しさん:2009/05/25(月) 14:24:25
質問よろしいでしょうか
例えばRobot.keyPress(68)としたときキーボードのdが押されますが
この時keylistenerのkeyPressedは呼び出されないのでしょうか?
呼び出されないのなら,どうやって呼び出せば良いのでしょうか?
どなたか教えていただけませんでしょうか

393 :デフォルトの名無しさん:2009/05/25(月) 14:39:55
>>初心者たん
boolean型というのは真か偽,つまりtrueかfalseを示す型
public static boolean showQuestion(int questno)これはboolean型の戻り値を返すメソッドで
今回の場合,ランダムで九九の問題を出題し解答者が答えを入力する
その入力された答えが正しいならtrueを,誤っているならfalseをmain()メソッドへ返す
if(ok)はokがtrueならgoodAnswer++するということ

394 :デフォルトの名無しさん:2009/05/25(月) 14:51:10
>392
その質問は呼び出されるかどうかが知りたいわけ?
それとも試して駄目だったの?

395 :デフォルトの名無しさん:2009/05/25(月) 14:55:37
すいません
試してみてkeypressed()のなかでSystem.out.println("AA")としてみてもAAと表示されなかったんで
呼び出されないのかと思ったんです
それで呼び出せないかと思って質問しました

396 :デフォルトの名無しさん:2009/05/25(月) 15:11:28
>395
特に問題なく動くけど、反応が無い組み合わせもある。
GUIをどういう構造で構築したかにもよる。
何処にフォーカスがあって、何処にKeyListenerをaddしたかによって変わる。

例えば、単にJFrameを作成しリスナーを追加してロボットでキープレスした場合、キチンと反応する。
次に、contantPaneに、キーリスナーを追加したJPanelを追加した場合、反応は無い。
ただし、そのJPanelにsetFocus(true)をセットしておくと、キチンと反応する。

理由はわからないけど、色々試してみたら?

397 :デフォルトの名無しさん:2009/05/25(月) 15:13:38
ありがとうございます
色々やってみます

398 :デフォルトの名無しさん:2009/05/25(月) 15:15:46
ArrayListへDBのデータをぶち込んで
そのArrayListの中のデータをjTableにぶち込む方法ってあるか?

399 :デフォルトの名無しさん:2009/05/25(月) 15:21:33
メモリの許す限りTableDataModelでも使ってザックリ回せば

400 :初心者たん:2009/05/25(月) 15:23:40
>>393
親切なレスに感謝です、ありがとうどざいます。
8行目のbooleanは理解できました;;

えっと、>>391 の boolean型メソッドshowQuestionの後のカッコに
int型の引数 questno と書かれてるとこなんですが、その値が6行目の
"第 ○ 問" の ○のとこにキャスト? されてるのも理解できずじまいです;;
正答ならtrue 誤答ならfalse なのにshouQuestionメソッドの戻り値にint型の
questno とあって、しかもそれが問題数を表示するところにキャストされてる???
理解しきれてなくて質問が変だったら指摘ねがいます;;

401 :デフォルトの名無しさん:2009/05/25(月) 15:40:08
>>初心者たん
キャストというのは型変換を行うことで今回行われているのは391の2,3行目のみ
randomはdouble型で値を返すためそれをint型へ変換している
questnoとは今が何問目か示すための変数
6行目では何問目でどんな問題内容か出力するだけ
戻り値とはreturn ○○というところだけなので,どこを見て戻り値がintだと思ったのか
わからないけど今回の場合戻り値はtrueかfalseしかない
というかintを返そうとしたらエラー出る

402 :デフォルトの名無しさん:2009/05/25(月) 16:00:09
>>400
かなり変なこと書いていると思うので
本などで確りと基本を一度やったほうがいいと思う。
このまま進んでも上滑りしてモノにならないと思う。

403 :デフォルトの名無しさん:2009/05/25(月) 19:01:51
>>387
意味はわからないけど、そういうことをすれば取得できるんですね
ありがとう

>>388
私はカラオケツールを作ってます↓JavaSoundで何が出来て何が出来ないのかわかっていないので試行錯誤の日々です。
http://www.psychosistem.jp/software/jmmlplayer

404 :デフォルトの名無しさん:2009/05/25(月) 19:11:41
ファイル削除について質問です。

DBUnitを使用したJUnitの各試験ケースにおいて、メソッドの先頭にて試験対象のテーブルのバックアップを取り、
メソッドの末尾にてバックアップしたテーブルをリストアしています。
バックアップはFile.createTempFileにてExcelに出力しています。
(setUpとtearDownはDB接続、切断のみです)

メソッドの末尾でDB情報をリストアした後で不要となったExcelファイルを削除したいのですが、
File.deleteで消せる場合と消せない場合があります。
どのような原因があるかご存知の方、教えて頂けないでしょうか。

405 :デフォルトの名無しさん:2009/05/25(月) 21:01:00
回答じゃなくて悪いんだけど
truncate するんじゃなければ普通にrollback じゃだめなんだろうか・・
ロックの確認とかはコミット切ってコネクション2本張らないと無理だけどさ。

406 :デフォルトの名無しさん:2009/05/25(月) 21:09:39
setUp/tearDownで接続/切断だけって言ってるから、トランザクション込みなんじゃないか?

ファイルはちゃんとクローズしてる?
というかExcelファイルってPOIでも使ってるのか?

407 :デフォルトの名無しさん:2009/05/25(月) 21:30:31
>>404
ファイルがクローズされていない。

408 :デフォルトの名無しさん:2009/05/25(月) 21:39:35
>>405
今「DBUnitを利用した単体テストに関して」でググって最初に出てくるページを読んでます。
試験手法の問題だとは思いますが、トランザクションをロールバックする方法も検討してみます。

>>406
setUp/tearDownでDB接続・切断しているのは、
そのタイミングでしかコネクションを制御できない(と思ってます)からです。
(コネクション一本でやってるので)
試験用メソッドの前後で行うsetUp/tearDownではなく、
試験クラスそのものが動く前後のsetUp/tearDownみたいなものがあればいいのですが。
(あったりするのでしょうか?)

POIに関しては、自分が明示的に使っているわけではなく、
DBUnitがExcelの情報を読み書きする際に必要となります。

ファイルのクローズ等に関してですが、もう少し色々調査をして見ます。
消せたり消せなかったりするのが意味不明ですが……。

レスありがとうございます。

409 :デフォルトの名無しさん:2009/05/25(月) 21:54:25
テストクラス全体の前後は、4系なら @BeforeClass @AfterClass があるけど、
DbUnitってJUnit 3.8ベースだっけ? junit.extensions.TestSetup というのを使うらしい。




410 :デフォルトの名無しさん:2009/05/26(火) 00:27:10
DButilでバックアップ用途にExcelファイル使うってのは、無駄だろ?XMLでいいじゃん。
テスト用データソース用途なら、表形式で編集できるから便利だけど。

411 :デフォルトの名無しさん:2009/05/26(火) 00:37:24
DBTestCaseを継承しなければ、JUnit4ベースでいける。
継承しないで使う方法は公式ドキュメント見れ。

412 :デフォルトの名無しさん:2009/05/26(火) 01:35:21
>>408
> 消せたり消せなかったりするのが意味不明ですが……。
まさかfinalizeにclose書いてたりしないよな?


413 :デフォルトの名無しさん:2009/05/26(火) 08:47:51
文字列についての質問です。

あるオブジェクト(プリミティブ除く)の文字列表現を取得するとき、
実現する方法がいくつか有ると思います。

(1) String#valueOf(対象クラス)
(2) 対象クラス#toString()
(3) new String(対象クラス)
(4) new StringBuffer(対象クラス)
(5) new StringBuilder(対象クラス)
(6) (1)から(5)の組み合わせ

上記の方法は最終的にはどれも(2)またはObject#toString()の内容となりますが、
どのような目的で使い分けるのでしょうか。

(2)のtoString()はデバッグプリントな感じ。
(4)と(5)は更に加工する場合でスレッドセーフである必要の有無。
今のところはこの程度の認識です。
よろしくお願いします。

414 :デフォルトの名無しさん:2009/05/26(火) 17:20:27
JPQLで聞きたいことがあります。
個人に聞いていたのですが、何度もメールするのもちょっと悪いので
ここで聞かせて下さい。
JPQLの問題です。
SELECT t FROM TList WHERE t.data1 = '2009/05/21'
にて動作は確認できました。
この文字のところを変数に変更することは可能なのでしょうか。
通常のSQLであれば、'" + today + "'でいけるのですが
JPQLでの記述方法が判りません。
色々調べてみたのですが、どうにも。
ヒントを頂けると幸いです。

415 :デフォルトの名無しさん:2009/05/26(火) 17:23:15
JAVAだとcharの配列を65535個作ると何バイトになるんでしょうか?

416 :デフォルトの名無しさん:2009/05/26(火) 17:25:34
これでも見て悩めばいいと思うよ
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/class-use/String.html

417 :デフォルトの名無しさん:2009/05/26(火) 19:37:25
Look and feelのSynthについてkwsk書いてある本知らない??

418 :デフォルトの名無しさん:2009/05/26(火) 20:17:43
Javaではオブジェクトの参照先の
アドレスを表示させる手段ってありますか?

print文でオブジェクトを与えて出力した時の
文字列はアドレスは表してないですよね?

419 :デフォルトの名無しさん:2009/05/26(火) 21:43:02
アドレスって何? おいしいの?

420 :デフォルトの名無しさん:2009/05/26(火) 22:02:17
>>414
Query q;
q = entotyManager.createQuery("SELECT t FROM TList WHERE t.data1 = :dataParam");
q = q.setParameter("dataParam", "2009/05/21");
かな?
q = q.setParameter("dataParam", new Date("2009/05/21"), TemporalType.DATE);
かも?

421 :デフォルトの名無しさん:2009/05/26(火) 22:05:23
あ、非推奨か・・・メンドクセ
SimpleDateFormat.parse("2009/05/21")

422 :デフォルトの名無しさん:2009/05/26(火) 22:19:32
>>413
よく見れば、(3)(4)(5)はそんなコンストラクタ無いよな。自動的にtoString()されるのかな?

423 :デフォルトの名無しさん:2009/05/26(火) 22:52:09
>>417
ない。nimbusのソースでも読むとか

424 :デフォルトの名無しさん:2009/05/27(水) 01:05:13
ttp://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_2.html

これをやっていますが、
XMLのファイルがFileNotFoundExceptionで参照できません。
File.exists(XMLのパス)ではtrueなので100%ファイルはあるのですが、何が問題なのでしょうか?

425 :デフォルトの名無しさん:2009/05/27(水) 01:13:41
エラー個所晒せ

426 :デフォルトの名無しさん:2009/05/27(水) 01:47:38
>>424 迷ったら full path

427 :デフォルトの名無しさん:2009/05/27(水) 06:29:30
質問。
引数付きのコンストラクタにwhile文で変数を2つ、任意の回数だけ渡したい。

GAME[] g = new GAME[変数のペアを渡す回数];
while(i<回数){
<プレーヤ名入力文>
<ゲーム名入力文>
g[i] = GAME(ブレーヤ名,ゲーム名);
i++;
}

普通ならこれで良いんだろうけど、自分の場合は名前とゲーム名を
スタートという文字が打たれるまで入力し続けなくちゃいけない。
つまり上の文では変数のペアを渡す回数を事前に設定しなくちゃいけないから
無理。
こういう場合どうしたら上手くいくだろう。やっぱり、whileの中ではハッシュマップにデータを入れて、
whileが終わった後にハッシュマップの内容を引数付きのコンストラクタに渡さなきゃダメかな。
でもそれをしたら実行途中で止まるんだよね。

428 :デフォルトの名無しさん:2009/05/27(水) 06:55:49
>>427
これでいいんじゃね?

List<GAME> games = new ArrayList<GAME>();

while(true){
<プレーヤ名入力文>
<ゲーム名入力文>

//スタートが出たらループを抜ける
if( プレーヤ名.equals(スタート) || ゲーム名.equals(スタート) ){
break;
}

games.add( new GAME(プレーヤ名,ゲーム名) );
}

429 :428:2009/05/27(水) 07:00:17
書き込んでから気付いたが
>>名前とゲーム名をスタート
だから || じゃなくて &&か?

430 :デフォルトの名無しさん:2009/05/27(水) 07:49:12
>>425
ApplicationContext contxt = new ClassPathXmlApplicationContext("applicationContext.xml");
の箇所です。コンストラクタで引っかかります。
ソースはURLのものから一言一句変えていません。

>>426
絶対パス、参照パス、
Fileオブジェクトを作ってからのAbsolutePathもCanonicalPathも
全てがFileNotFoundExceptionになる模様です。

431 :デフォルトの名無しさん:2009/05/27(水) 08:11:47
>>429
ありがとう。しかし、別クラスのコンストラクタに渡した値を、
そのクラスのgetNameメソッドとかでメインメソッドに返したい場合は
どうしたらいいの?

432 :デフォルトの名無しさん:2009/05/27(水) 10:22:37
>>420-421
有難う。
俺がdate1とdata1を勘違いしてただけだった。



ついでに。
最初にMySQL接続する時に
try節の中で
Connectionするだろ? いわば
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysystem", "root", "root");
こんな感じだけど
この時につないでるのはmysystemでしょ?
これって同時にmysystem2があったとしたら接続することって可能?
それともその必要な処理が終わったらcloseしてまたDriverとかclassとか読み込んで
また接続しなおすの?
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysystem2", "root", "root");
って感じで

433 :デフォルトの名無しさん:2009/05/27(水) 11:01:21
繋ぎ直すか、新しいコネクションを作って同時に二本を張るかじゃないかな

434 :430:2009/05/27(水) 11:04:04
Eclipseを使わずに書いたら、対象のXMLを読み込めました。

どういうことなんだろう?

435 :デフォルトの名無しさん:2009/05/27(水) 11:48:46
System.out.println(new File(".").getCanonicalPath()); の実行結果を見ながらよく考えれ。

436 :430:2009/05/27(水) 11:56:19
解決しました。

springにおいては、DI情報を記述するXMLはクラスパス上にあるものしか参照できないみたいです。
ClassPathXmlApplicationContextのAPIドキュメントには書いていないので引っ掛かってしまいました。

スレ汚し失礼しました。

437 :デフォルトの名無しさん:2009/05/27(水) 11:57:40
>>432
確かに違和感あるね。他のRDBMSはどうなんだろう。
mysystemはデータベースってことになってるから、
個別のデータはテーブルということになる。
実際に業務システムを構築するときには、DBは販売と人事のデータ連携など
よくある話で、通常はデータベースを分ける。
しかし接続がDB単位となると、一つのDBにぶっこみになるんで扱い難いね。
各人、どうやって凌いでいるんだろう。
それとバックアウトの考え方は、存在するのだろうか。

438 :432:2009/05/27(水) 12:04:27
>>437
やっぱり違和感ありますよね。
少し前から疑問に思ってて。
例えば
mysystem1には顧客の個人データ
mysystem2にはその日行った個人データの一部+作業データ
とかになってくるとどうにもねぇ。

販売に於いても同じような事が言えるし。

やっぱり >>433 が言ってる様に繋ぎ直す、または二本張りか。
繋ぎ直す方がスマートには見えるが、なんかいちいち閉じて繋いで閉じて繋いで・・・
ってやってると 複数回やる場合には絶対ロスがありそうだし。

む〜ん。 何か知恵があればお願いします。

439 :デフォルトの名無しさん:2009/05/27(水) 12:29:26
… MySQL の開発者ってこんなんばっかなの?

440 :デフォルトの名無しさん:2009/05/27(水) 12:32:27
…妄想に取り付かれてるだけだろ

441 :デフォルトの名無しさん:2009/05/27(水) 12:48:38
>なんかいちいち閉じて繋いで閉じて繋いで・・・

コネクションプールは使ってないわけ?

442 :432:2009/05/27(水) 13:26:56
>>441
それだ

443 :デフォルトの名無しさん:2009/05/27(水) 13:35:30
>>441
ループ使っても閉じて・繋いで・閉じて・・・でしょう?
オーバヘッドでかいよ。

444 :デフォルトの名無しさん:2009/05/27(水) 14:27:59
Driverのロードは一回だけだし、
コネクションも繋ぎっぱで良いし、
SQL文毎にリクエスト発生は普通だし、

いったい何が問題なんだ

445 :デフォルトの名無しさん:2009/05/27(水) 14:31:15
性能を意識するレベルじゃなさそうだから、
まずは実現させることが最優先じゃね

446 :デフォルトの名無しさん:2009/05/27(水) 15:25:26
そもそもwebプログラミングとかDBはやる気失せるのは俺だけ?

447 :デフォルトの名無しさん:2009/05/27(水) 15:32:51
javaというかHTMLでしがボタンaを押すとA.classへ
ボタンbを押すとB.classに遷移するようにしたいのだがHTMLにはどう書けばいいですか

448 :デフォルトの名無しさん:2009/05/27(水) 16:05:37
WebProg板へどうぞ。

まあその内容だとスルーされて終わりそうだが

449 :デフォルトの名無しさん:2009/05/27(水) 16:38:20
Eclipseなどでインスタンス変数のsetter/getterを自動生成すると、
setter内でインスタンス変数を参照する箇所にはthisが付きますが、
getterにはthisが付きません。
メソッド内で変数名が競合しない場合、thisは付けないものなのでしょうか。

450 :デフォルトの名無しさん:2009/05/27(水) 16:50:24
>>449
コーディング規約によっては this必須にしてる場合もある。

そうでなければ必要ないなら付けなくてもいい。
例えば Sunのコーディング規約だと this は必須ではない。

451 :デフォルトの名無しさん:2009/05/27(水) 17:24:49
気にいらなければコードテンプレートいじればいい。

452 :デフォルトの名無しさん:2009/05/27(水) 20:36:17
外部プログラムをjarの中に入れて、その外部プログラムをjavaプログラムから実行させたいんだけど、これって出来るの?
ProcessBuilderとかgetResource()使ってやってみたんだがうまくいかないorz

453 :デフォルトの名無しさん:2009/05/27(水) 20:45:35
jar : Java ARchive

454 :デフォルトの名無しさん:2009/05/27(水) 21:39:08
>437-438
MySQLだとデータベース指定込みのテーブル指定できないのかと
一瞬思った俺の純心をかえせw

create database test01;
use test01;
create table users (id INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, name VARCHAR(255));
insert into users values (1, "aaaaaaa");
insert into users values (2, "bbbbbbb");
create database test02;
use test02;
create table datas (id INT, data VARCHAR(255));
insert into datas values (1, "000000000");
insert into datas values (1, "111111111");
insert into datas values (2, "222222222");
use user_db;
select u.name, d.data from test01.users u, test02.datas d where u.id = d.id;

+---------+-----------+
| name | data |
+---------+-----------+
| aaaaaaa | 000000000 |
| aaaaaaa | 111111111 |
| bbbbbbb | 222222222 |
+---------+-----------+
3 rows in set (0.00 sec)

こんなことも知らんとは、新人教育やり直しだな。
ちなみにSybaseだとデータベース名とテーブル名の間にテーブルのオーナー名が入る。

455 :デフォルトの名無しさん:2009/05/27(水) 21:42:23
>>452 補足
外部プログラムをA、javaプログラムをBとすると、AとBを同じjarにアーカイブしてBのコードからAを実行したい。
画像とかならgetResource()でBのコードから使えるんだけど、同じ様にしてBのコードから実行ファイルを実行する方法が分からないという事です。

456 :デフォルトの名無しさん:2009/05/27(水) 21:48:59
アップデートしてもアンチウイルスソフトで「java\jre1.5.0_06」と「javaws\jre1.5.0_06」が検出されてしまいます。
最新版にはなってるみたいなんですが何か大切なことができてないんでしょうか。
それともアンチウイルスソフトの感度を上げてスキャンしてるからでしょうか。

457 :デフォルトの名無しさん:2009/05/27(水) 21:51:27
>>446
WEBは食わず嫌いだったんだが、この不況で研修と称してSeasar始めてみたら
意外とおもろいよ。

書類用の Cerelon 1GHz 512MB のノートなんだが hot deploy に二分w

458 :デフォルトの名無しさん:2009/05/27(水) 22:21:46
>>456
マテ、Javaの最新は、5.0は1.5.0_19、6.0は1.6.0_13だぞ。
http://java.sun.com/javase/ja/6/download.html
http://java.sun.com/javase/downloads/index_jdk5.jsp

459 :デフォルトの名無しさん:2009/05/27(水) 22:21:56
>>431
質問の意味が解らない。意図も解らない。

460 :デフォルトの名無しさん:2009/05/27(水) 22:23:41
>>457
ホットデプロイ動くのうらやましす
ウチのPenM1.7GHzとmem512MBのDELLノートだが、
トム猫起動中にソース直すとOutOfMemory出るから、
ソース直すたびに再起動なんだぜ

そんな俺もSeasar飽きてきてSpring始めました

>>458
アンチウィルスの定義ファイルは最新版ってことじゃないのか?

461 :456:2009/05/27(水) 22:38:22
>>458>>486
「javaws\jre1.5.0_06」で検索してjavaアプリケーションキャッシュビューアというのを開いて
編集→設定→アップデートのタブにある今すぐアップデートをクリックしたんですが
これでは出来てなかったんですね;
ググってみたら右下にjavaのアイコンがでて最新版のアップロードが必要な時は
表示されるってあったんですがjavaのアイコンが見当たらないのもまずいんでしょうか。
ちなみに今リカバリ後の状態です。

5.0と6.0をそれぞれインストールすればいいんですよね。
貼って下さったサイトはそれぞれどれをダウンロードすればいいんでしょうか。


462 :デフォルトの名無しさん:2009/05/27(水) 22:40:09
>>460
>301 に晒してある設定でなら、なんとか動く。
VisualSVNとMySQLも調整次第で同時起動可能。
H2使えという話もあるがw

ところでEclipseのSVNで file:///C/svn/ とか使えないんだが・・・使える方法
ないかな?

463 :デフォルトの名無しさん:2009/05/27(水) 22:42:26
こんばんわ。
GridBagLayoutについて質問させてください。

当方、JAVAをやり始め、フォームエディタを使わないでGUIを
作ろうとしています。
画面構成として、JPANELにGridBagLayoutを設定して、
そのグリッドの中にボタンだとかラベルを格納しているのですが、
どうにもつかいづらく感じています。

なぜGridBagLayoutを使っているかというと、いくつかのサイトで、
レイアウトの中ではGridBagLayoutが一番融通がきくという旨の
記述がよく見受けられたからです。
確かに、SQLから取得したものを表状にして表示させるには
都合がよいのですが、ボタンの配置だとかになると、あくまで
セル単位でしか移動できません。

これならば、HTMLと同じ間隔で配置のできるsetBoundsのほうが
使い勝手はよいのではないでしょうか。

setBoundsの方も使ってみようと思うのですが、
そこまで「GridBagLayoutは融通がきく」といわれているのは
なぜなのでしょうか。

長文になってしまって申し訳ありません。

464 :デフォルトの名無しさん:2009/05/27(水) 22:46:00
>>463
サイズを変更して、縦長、横長にしてもあら大丈夫。

465 :デフォルトの名無しさん:2009/05/27(水) 22:53:46
>>464
ありがとうございます。
サイズを変更したコンポーネントと、他のコンポーネントとの
相対位置がかわらないということでしょうか?

466 :デフォルトの名無しさん:2009/05/27(水) 23:55:43
ちなみに書き忘れたけど、サイズを変更っていうのは配置するパネル全体のサイズ。
その中で、複数セルをまたがった配置ができるというのがミソ。
絶対、Lotus123とかExcel見て思いついたんだろうなぁ、というレイアウト。

そういった単純なわりには多彩な表現力と、全体サイズが変わった時もけっこう安心
という点が好まれる理由だと思ってる。

467 :デフォルトの名無しさん:2009/05/28(木) 00:14:10
>>458
1.5.0_19はSUNに登録しないと落とせないような。
java関連のプロダクトのアーカイブページには6の方はupdate13まで落とせるけど、
5の方はupdate18までしか選択できない。
登録フォームまでしか見てないんだが捨てアドを作って他の必須項目は匿名希望とかでもいけるのかな?

468 :463:2009/05/28(木) 00:17:12
なるほど、確かにExcelとにていますね。
ただ、Excelのほうは、セルの大きさを自由に設定できるのですが、
GridBagLayoutはできなくないでしょうか?
(私がしらないだけであれば、申し訳ありません)
調べてはみたところ、セルの最小幅は設定できそうですが、
最大幅の設定はできなかったのではと思います。

確かに、セルの幅、高さ指定が自由にできるのであれば、
使い勝手はよさそうですね

469 :デフォルトの名無しさん:2009/05/28(木) 00:30:01
>>468
融通が利くからといって使いやすい書きやすいってことはない
汎用性は高くなくても要求に必要十分なものがあればそのほうが使いやすいことも多々ある
複数のレイアウトマネージャの組み合わせを検討してみるとか
GridBagLayoutで制約条件を書くよりは少し楽な(でも少し重い)GroupLayoutを使ってみるとか
自分に必要な機能だけを実装したレイアウトマネージャを作ってみるとか
状況に応じてやりようはいろいろある

470 :デフォルトの名無しさん:2009/05/28(木) 00:34:37
融通が利くって要するに自分でそこを融通するってことだからねぇ

471 :463:2009/05/28(木) 00:40:49
そうですね、「融通がきく=使いやすい」とは限らないですね
やはり、自分がやりたいことに適している方法と組み合わせてみます。
ありがとうございました。

参考までにお聞きしたいのですが、このスレには、「自分はGridBagLayoutが使いやすいから
使っているなぁ」って方はいらっしゃいますか?

472 :デフォルトの名無しさん:2009/05/28(木) 00:46:31
使い易い=手で書き易いってことならGridBagLayoutが使い易いと思ったことはないなw
一つのレイアウトマネージャである程度複雑なレイアウトができるという点で、
確かに昔は融通のきくレイアウトマネージャの筆頭だったけど。

473 :デフォルトの名無しさん:2009/05/28(木) 00:49:15
public class test extends Frame implements ActionListener,Runnable {
としてあるところに
implements KeyListener
を追加したいのですがエラーになります
どう書けば追加できますか?


474 :デフォルトの名無しさん:2009/05/28(木) 00:50:11
Eclipseで通常JDK1.6を使ってビルドしているのですが
Antを使って1.5でビルドしたいです、

<javac srcdir="${src.dir}" destdir="${class.dir}" source="1.5"/>

としているのですが、実際1.5のJREで実行すると
java.lang.UnsupportedClassVersionError: Bad version number in .class file
となります。

何がいけないのでしょうか?

475 :デフォルトの名無しさん:2009/05/28(木) 00:51:49
もしかして
public class test extends Frame implements ActionListener,Runnable implements KeyListener {
って書こうとしてる?
public class test extends Frame implements ActionListener,Runnable,KeyListener {

476 :デフォルトの名無しさん:2009/05/28(木) 00:53:59
>>474
target属性は?

477 :473:2009/05/28(木) 00:56:34
>>475
その下段で書くとabstractじゃないとかいうエラーになります
それでpublicをabstractに変えると別のエラーになります

478 :デフォルトの名無しさん:2009/05/28(木) 00:58:49
>>477
そのエラーをちゃんと読んでKeyListenerを実装するのに必要なメソッドを追加しようとか思わないのか?

479 :456:2009/05/28(木) 01:00:56
何度もすみません。
http://www.java.com/ja/でjavaの有無をチェックしたら
「お使いのオペレーティングシステムに推奨されたバージョン (Version 6 Update 13) の Java がインストールされています。 」
と出たんですが、>>458さんが教えてくれた6.0の最新版の1.6.0_13は入ってるってことですか?
5.0の方は入ってないから脆弱性で検知されてしまうんでしょうか。



480 :473:2009/05/28(木) 01:01:13
追加する以外の意味をわかっていないもんでどうすればいいかわかりません
abstractもよくわかってないもんで

481 :デフォルトの名無しさん:2009/05/28(木) 01:04:02
>>479
何を脆弱性とするかはアンチウイルスソフトによって違う。
アンチウイルスソフトのメーカーに問い合わせた方がいい。

482 :デフォルトの名無しさん:2009/05/28(木) 01:10:11
>>480
言語の基本的な理解が十分でないと思うので今後もこの言語と関わるならインタフェースに関して復習すべき

483 :デフォルトの名無しさん:2009/05/28(木) 01:11:53
>>481
レスありがとうございます。
脆弱性はアップデートが必要なファイルが検知されるそうです。
「java\jre1.5.0_06」と「javaws\jre1.5.0_06」が検出されてVersion 6 Update 13はインストールされてるということは
5.0を1.5.0_19にアップロードする必要があるってことでいいんでしょうか。

1.5.0_19へのアップロード方法をググったら>>458さんが貼ってくれたサイトの日本語版を見つけたんですが
1.5.0_18しか無いみたいです。
http://java.sun.com/j2se/1.5.0/ja/download.html
5.0と6.0の両方をインストールする必要があるんでしょうか?

484 :デフォルトの名無しさん:2009/05/28(木) 01:18:28
>>479
Javaは、新しいバージョンをインストールしても古いバージョンが残る。
プログラムの追加と削除から古いやつを明示的にアンインストールしる。
特に事情がない限り、6.0が入ってれば5.0は不要。

485 :デフォルトの名無しさん:2009/05/28(木) 01:36:40
>>484
プログラムの追加と削除を見たらjava (TM) 6 update 13というのしか入ってませんでした。
バージョンは6.0.130とあるんですが1.6.0_13のことでいいんでしょうか。

とりあえずCCclernerを使って脆弱性が検知されなくなるか調べてみます。

486 :デフォルトの名無しさん:2009/05/28(木) 01:43:11
>>485
それだと、そのJava処理系は内部でJavaを使ってる特定のソフトのためのものかもしれん。
C:\Program Files\Java (XP以前の場合)の下にないなら、おそらくそうだと思われ。

487 :デフォルトの名無しさん:2009/05/28(木) 01:50:03
>>486
XPで「C:\Program files\java\jre1.5.0_06\bin\java.exe」と
「C:\Program files\java\jre1.5.0_06\bin\javaws.exe」が検知されました。
最初から全部書かないですみません;

488 :デフォルトの名無しさん:2009/05/28(木) 02:09:23
>>455
同じ jar にアーカイブする事と B から A を
呼び出す事には何の関係もない。
呼び出すやり方が間違っていたら同じ
jar になっていても呼び出せないし、
正しく呼べば別の jar でも呼べる。
そして同じ jar にアーカイブする事自体は
呼べるかどうかとは無関係に簡単だ。

489 :デフォルトの名無しさん:2009/05/28(木) 02:16:22
>>455
getResource() で取得した実行ファイルをテンポラリファイルか何かに保存して実行。

490 :デフォルトの名無しさん:2009/05/28(木) 03:05:20
Java初心者です
開発環境を整えようと、Java SE 6からJDK6をDLし、
実行してインストールをしようと思ったのですが、エラーが発生して強制終了し、インストールできません。
JDK5でも試してみましたが、やはり同様の現象が起こりました。
どなたか、対処法を知っている方がいらっしゃったら、教えてください。お願い思案す。

491 :デフォルトの名無しさん:2009/05/28(木) 04:47:03
>>490
どんなエラーが出て何が強制終了するのでしょうか

492 :485:2009/05/28(木) 06:30:44
CCcleaner使った後もまた検出されてしまいました。
「C:\Program files\java\jre1.5.0_06\bin\java.exe」と「C:\Program files\java\jre1.5.0_06\bin\javaws.exe」が入ってるフォルダ
を開こうとすると「このフォルダにはシステムを正常に保つためのファイルが含まれています。
フォルダの内容は変更しないでください」と出るんですが、更新か削除か何かできないんでしょうか。

493 :デフォルトの名無しさん:2009/05/28(木) 08:44:45
jFrameを継承した2つのクラスを作ってmainから呼び出している
ある時はAのフレームだけ、その他はBのフレームを呼び出したい
なんか、いい呼び出し方ない?

494 :デフォルトの名無しさん:2009/05/28(木) 09:46:14
main() の中で if で分岐すればいいじゃん。

495 :デフォルトの名無しさん:2009/05/28(木) 10:11:26
>>492
そのメッセージで検索しました? それはOSのシステム保護メッセージに使われてる文面です。

その近くに「このフォルダの内容を表示する」というのはありませんか?

496 :デフォルトの名無しさん:2009/05/28(木) 11:55:50
>>489
なるほど。やってみます。

497 :490:2009/05/28(木) 12:13:26
問題が発生したため、終了しますってやつですね…。
エラー署名は
AppName: msiexec.exe AppVer: 4.5.6001.22159 ModName: msihnd.dll
ModVer: 3.1.4001.5512 Offset: 00036935\
です。

498 :デフォルトの名無しさん:2009/05/28(木) 12:42:50
>>497
もしかしたら「Windows インストーラ」が壊れてるのかもしれません。
(解決案はひとつずつ試してみることをお勧めします。

ttp://support.microsoft.com/kb/315346/ja
ttp://support.microsoft.com/kb/886630/ja

499 :デフォルトの名無しさん:2009/05/28(木) 13:33:00
java1.5が上手く削除出来てなくて、1.6がインストール出来ないのでは
ないかなあ。どこかで、アンインストーラを探してみるのも一考。

500 :デフォルトの名無しさん:2009/05/28(木) 14:04:05
>>498
>>499
インストーラの再インストールを行ってみた結果、無事インストールすることができました!
本当にありがとうございました!
むしろ、javacのトラブルではなくて、申し訳ない><

501 :デフォルトの名無しさん:2009/05/28(木) 16:09:31
前も書いたんですが
public class test extends JFrame implements ActionListener,KeyListener {

test.java:6: test は abstract でなく、java.awt.event.ActionListener 内の abstract メソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライドしません。
とエラーが出るのに

public class test extends JFrame implements ActionListener {
public class test extends JFrame implements KeyListener {

と単独でやると不思議とエラーになりません

都合でabstractで宣言することはできないのですが
同時にimplementsできないActionListener と KeyListenerを
なんとか同時にimplementsする方法ないでしょうか?


502 :デフォルトの名無しさん:2009/05/28(木) 16:46:33
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;

public class TestFrame extends JFrame implements ActionListener, KeyListener {
// ActionListener
public void actionPerformed(ActionEvent e) {
}
// KeyListener
public void keyPressed(KeyEvent e) {
}
// KeyListener
public void keyReleased(KeyEvent e) {
}
// KeyListener
public void keyTyped(KeyEvent e) {
}
}

abstract点けたくないなら、インターフェースのメソッド実装せんとエラーになるのは当たり前じゃね?

503 :デフォルトの名無しさん:2009/05/28(木) 17:00:25
>>502
ありがとうございます
いくつか抜けてました


504 :デフォルトの名無しさん:2009/05/28(木) 17:19:59
>>495
スキャン結果から「C:\Program files\java\jre1.5.0_06\bin\java.exe」と「C:\Program files\java\jre1.5.0_06\bin\javaws.exe」
のファイルを開いて、それが入ってる上のフォルダに遡っていったら保護メッセージが出てるページに行き当たりました。
その中に入ってたのでフォルダ内で削除するのはまずいんでしょうか。

505 :デフォルトの名無しさん:2009/05/28(木) 17:31:27
インターフェースが何なのかもエラーメッセージの意味も分からずやってるんだから仕方ない

506 :デフォルトの名無しさん:2009/05/28(木) 17:33:49
>>504
うぜえからOSからクリーンインストールしろ。

507 :デフォルトの名無しさん:2009/05/28(木) 17:40:13
>>506
クリーンインストール後のことなのでそれも無理そうです。
しつこくしてしまい失礼しました。
レスしてくれた方ありがとうございました。

508 :デフォルトの名無しさん:2009/05/28(木) 18:08:14
定数クラスをinterfaceにして、
定数を使用する側のクラスでimplementsするのって邪道なのでしょうか?

interfaceは実装クラスの振る舞いを定義するようなものですし、
抽象メソッドが一つもないのは意義的に間違っていますよね?

509 :デフォルトの名無しさん:2009/05/28(木) 18:22:46
それってバッドノウハウってやつじゃない?

510 :デフォルトの名無しさん:2009/05/28(木) 18:24:34
動けば全て正道、邪道なんでことはない。
言語文法で網羅されている仕様を、一部の狂信的マニアが、
己の好みに反する事に対して邪道と言って見たり、
ある種の宗教的な標準化組織が、勝手に標準化事項を標榜し
それに反することを邪道と言ったりするが、気にすることはない。
動けば、これ全て正道なり。


511 :デフォルトの名無しさん:2009/05/28(木) 18:26:25
昔は原理主義が強くて邪道扱いだったが別に弊害もないし今となってはどーでも良い話。
特に 1.5 で import static ができて implements 不要になったから尚更。

512 :デフォルトの名無しさん:2009/05/28(木) 18:44:03
>>509
バッドノウハウじゃなくてアンチパターンな。


513 :デフォルトの名無しさん:2009/05/28(木) 20:32:58
ファイル内データを読んで、
各クラスから使用するstatic 変数に格納する処理を
作成しようとしています。

以下のコードでファイル名PropFileを外部の
メインクラスから指定したいのですが
コンストラクタでは初期化順序が後になり
下記のコードですと実行時にエラーとなります。
ファイル名をメイン処理から渡したいのですが
方法をご教示ください。

Property.java
public class Property {
 private static String PropFile;
 Property(String propfile){
  PropFile = propfile;
 }

 public static long COUNT = getkeyValue("COUNT");

 private static String getkeyValue(String key) {
  FileReader fr = new FileReader(PropFile);
  データ取得処理
   ・・・
 }
}

メイン処理
public static void main(String[] args) {
 new Property("ファイル名");
 ・・・
}

514 :デフォルトの名無しさん:2009/05/28(木) 20:41:51
>>513の実行時エラーですが
Exception in thread "main" java.lang.ExceptionInInitializer

Caused by: java.lang.NullPointerException
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
です。

別のメイン処理からもこのクラスを使って
別ファイル内のデータを読み込むようにようにしたいです。

現在は同じ内容の別クラスを作成し、読み込むファイルをメインから
渡さずにそれぞれFileReaderの引数をファイル名で
ハードコーディングしてクラスを分けているので共通化できないか
と思います。

515 :デフォルトの名無しさん:2009/05/28(木) 20:44:46
メンドくせえからソース全部上げろ

>実行時にエラー
そもそも提示されてる箇所だけじゃ、↓がコンパイルエラーだ

public static long COUNT = getkeyValue("COUNT");
private static String getkeyValue(String key) {

変に抽出して書くと逆に相手にされなくなるぞ

516 :デフォルトの名無しさん:2009/05/28(木) 20:55:27
properties形式で書いてloadするのじゃダメなのか?

517 :デフォルトの名無しさん:2009/05/28(木) 20:58:36
結構ソースは長いので要点だけ書きました
下記はすみません、誤植でした
public static String COUNT = getkeyValue("COUNT");
private static String getkeyValue(String key) {
ですね。
もし、これでも不明でしたら全部載せます。

>>516
SJISで読まないといけないものもあり、自作しました。



518 :デフォルトの名無しさん:2009/05/28(木) 21:05:19
長くなかったらソース貼るつもりだったのか・・・恐ろしい

車輪の再発明って流行ってんのかい?

519 :デフォルトの名無しさん:2009/05/28(木) 21:20:05
>>517
>SJISで
InputStreamReaderで読めばいいのに。

package PropertyTest;
import java.io.*;
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
    FileInputStream pfile = new FileInputStream(new File("app.properties"));
    prop.load(new InputStreamReader(pfile, "SJIS"));
    System.out.println(prop.getProperty("key"));
    System.out.println(prop.getProperty("鍵"));
    pfile.close();
}
}

key=値
鍵=value

init:
deps-jar:
Compiling 1 source file to C:\usr\NetBeansProjects\PropertyTest\build\classes
compile:
run:

value
構築成功 (合計時間: 0 秒)

520 :デフォルトの名無しさん:2009/05/28(木) 21:22:26
>>513ですが、
ファイル読み込み機能が主題のように書いてしまい
混乱させてすみません。
>>514の方法で
現在もファイル自体は読み込めています。

staticメソッド内でインスタンス変数を使用させて
そのインスタンス変数に外部から値をセットさせる
方法をご教示ください。

>>513はあくまで例としてとらえていただけますでしょうか。


521 :デフォルトの名無しさん:2009/05/28(木) 21:23:02
AntでJUnitを実行する場合、
実行対象として指定するのはクラスファイルでしょうか、ソースファイルでしょうか?
一応どちらとも動きはするみたいなのですが。
(Eclipse 3.2 + JDK1.5.0_18、Ant1.7.1)

522 :デフォルトの名無しさん:2009/05/28(木) 21:23:51
BufferedReaderのインスタンスがあるんだけど、BufferedWriterを使ってファイルに書き込みたい
この時に、BufferedReaderのインスタンスをjava.lang.Objectにキャストすれば、
BufferedWriterで使えるようになるの?

523 :デフォルトの名無しさん:2009/05/28(木) 21:24:43
だから全部上げろって言ったのに
スルーされる前に上げといた方がいいぞ

>staticメソッド内でインスタンス変数を使用させて
コンパイルできません

524 :デフォルトの名無しさん:2009/05/28(木) 21:30:54
>>521
動いたとしても、建前はクラスファイルのはず。

>>522
キャストじゃ無理。読んだ端から書け。

525 :デフォルトの名無しさん:2009/05/28(木) 21:43:57
520みたいなのが最も厄介な相手だな。スルーする。

526 :デフォルトの名無しさん:2009/05/28(木) 21:45:12
>>523
こんな感じにしたいのですが・・・
getkeyValueメソッド内のPropFile
に値をmainから渡したいのです。
下記のコンストラクタ使用では無理でした。

※ファイル読み込みに関しては
Propertiesを使うということは勉強になりました。


527 :デフォルトの名無しさん:2009/05/28(木) 21:45:30
public static void main(String[] args) {
 new Property("data.properties");
 ・・・
}


528 :デフォルトの名無しさん:2009/05/28(木) 21:46:55
public class Property {
private static String PropFile;
Property(String propfile){
PropFile = propfile;
}
static string VAL_A = getkeyValueL("VAL_A","A");

private static String getkeyValue(String key,String defvalue) {
String rtn = "";
try {
FileReader fr = new FileReader(PropFile);
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
if (chkKey(line,key)){
rtn = getProperty(line,key,defvalue);
continue;
}
}
br.close();
fr.close();
} catch (IOException e) {
System.out.println(e);
}
return rtn;
}



529 :522:2009/05/28(木) 21:47:34
>>524
トンクス

530 :デフォルトの名無しさん:2009/05/28(木) 21:47:48
private static boolean chkKey(String line,String key) {
key = "^\\s*" + key + "\\s*=";
Pattern pt = Pattern.compile(key,Pattern.CASE_INSENSITIVE);
Matcher mt = pt.matcher(line);
return mt.find();
}

private static String getProperty(String line,String key,String defvalue){
String ret;
line = replaceAll(line,"\\s*$","");
key = "^\\s*" + key + "\\s*=\\s*";
ret = replaceAll(line,key,"");
ret = replaceAll(ret,"\\s+$","");
if(ret.equals("")){
ret = defvalue;
}
return ret;
}
}

531 :デフォルトの名無しさん:2009/05/28(木) 21:50:10
>>513
ですが、ちょっとテンパッてたようです。
もう一度、整理してよくしらべてみます。
ご迷惑かけました

532 :デフォルトの名無しさん:2009/05/28(木) 21:58:21
>>526
まあ、好きにするといいさ。

Property(String propfile){
PropFile = propfile;
}

これを

public static void setPropertyFile(String propfile){
PropFile = propfile;
}

に変更して、

public static void main(String[] args) {
 new Property("data.properties");
 ・・・
}



public static void main(String[] args) {
 Property.setPropertyFile("data.properties");
 ・・・
}

に変えとけw

533 :デフォルトの名無しさん:2009/05/28(木) 22:15:38
ダメな質問例の代表パターンだな

534 :デフォルトの名無しさん:2009/05/28(木) 22:54:59
Javaとして聞いていのはわかりませんが、スレ違いでしたらご指摘ください。

ttp://www.atmarkit.co.jp/fjava/javatips/178eclipse030.html
ttp://www.atmarkit.co.jp/fjava/javatips/179eclipse031.html
ttp://www.atmarkit.co.jp/fjava/javatips/180eclipse032.html

Eclipse 3.4が重過ぎるので、Eclipse 3.2に変えようと思い、
上記のURLを例に導入と日本語化、JavaDocの設定を行いました。
最後のmergedocまで終えたのですが、
クラス名の上にカーソルを当ててもホバーが出てきてくれません。
ホバーを出す・出さないの設定がEclipse上にあるのでしょうか?

535 :デフォルトの名無しさん:2009/05/28(木) 23:22:55
3.4ってそんなに重いのか?
結構古いバージョンから3.4にアップデートしたら
キー操作がかなりきびきび動くようになったと思ってたのに。

>>534
とりあえずワークスペースを別の場所に移動してみれ。

536 :デフォルトの名無しさん:2009/05/28(木) 23:35:01
JAVA アプレットを作っているのですがアルファベットを数字になおすことが出来ません・
xはpaintの中で使います。
下記実行すると下記エラーメッセージが出ます。
たぶんオブジェクト、クラス、メソッドがよくわかっていないためのような気がします。
プログラムに対するヒントまたは誘導していたけないでしょうか?
よろしくお願いいたします
(Windows Vista jdk1.6.0 エディター+javacコンパイル)
------------エラーメッセージ---------
java:14 シンボルを見つけられません。
シンボル: メソッド digit(java.lang.String,int)
場所 : java.lang.Character の クラス
        x = Character.digit(str_x, 10);
--------------------------------------
--------------プログラム--------------
import java.applet.Applet;
import java.awt.*;
//import java.lang.*;
public class K extends Applet{
    public void paint(Graphics g) {
        int x;
 String str_x;
//  Character Position = new Character();
//  中略
     str_x = "a";      //str_x=a-z
     x = Character.digit(str_x, 10);   //数値に変換
//  中略
}
}
--------------------------------------



537 :デフォルトの名無しさん:2009/05/28(木) 23:45:56
>>534
重い理由は判断の上か?

例えば512MBの実メモリでハングアップしかけるとかのメモリのトラブルだと、
上にあるeclipse.iniの設定変更で、かなり改善する。
512だと倍プッシュで1GBくらいのページングファイルしか取っていない場合も
あるけど、2GBとかに増やしておくことも必要。
瞬間的にとか1GBなんて越えることはざらだから。

>>536
Character.digit は digit(char ch, int radix) と digit(int codePoint, int radix)
しか無いから String を渡せない。

538 :デフォルトの名無しさん:2009/05/28(木) 23:57:13
PenM1Gのノートで使ってるけど3.2も3.4も変わらんぞ重さは
起動は確かに3.4の方が長いけどそれ以外は同じ

539 :デフォルトの名無しさん:2009/05/29(金) 01:35:51
>>508
Effective Java 17 章にだめって載っている。
定数のみのクラスを作って
import static パッケージ名.クラス名.変数名;
とするといいと思う。

540 :デフォルトの名無しさん:2009/05/29(金) 07:58:58
ファイルxがローカルにある場合はそれを表示し、
無いときは何処からかコピーをしてきて表示するプログラムを作りたい
この時、読み込み→例外発生→例外が発生したのでコピー→読み込みと
ファイルxがあるか→無かったのでコピー→読み込みのどっちを使ってコードを書くのが普通なの?

541 :デフォルトの名無しさん:2009/05/29(金) 08:08:50
その程度の事はコーダー個人のセンスの範疇だと思うが、後者の方がダサくはなりにくいかな。

542 :デフォルトの名無しさん:2009/05/29(金) 09:24:39
>>540
どれほどシビアにファイルの生存チェックするかにもよる。

例えば file.exists() と new FileInputStream(file) の間で
ファイルが削除されちゃう可能性も考慮する必要があるなら後者は使えなくなるし。

543 :デフォルトの名無しさん:2009/05/29(金) 09:27:22
>>540
条件次第なとこも。
全部丸投げで仕様もお任せなら前者の方が良いかな。
仕様も作って自分で制御したいなら後者かな。

544 :デフォルトの名無しさん:2009/05/29(金) 09:56:38
WEBサイト製作する時に、
PHPとJAVAどちらを使ったらいいですか?
また、どのようなサイトがどの言語に合っていますか?

545 :デフォルトの名無しさん:2009/05/29(金) 10:13:35
ホームページの単なるリッチ版 → PHP
バックエンドシステムと統合したり何階層にも分かれたり構成が大規模 → Java

546 :540:2009/05/29(金) 13:34:41
みんな、ありがとう

547 :デフォルトの名無しさん:2009/05/29(金) 16:39:26
>>545
なんだかなぁ…

548 :デフォルトの名無しさん:2009/05/29(金) 16:49:39
何かマズいこと言ったか?

549 :デフォルトの名無しさん:2009/05/29(金) 17:06:30
>>544
何がしたいかによる。

>>545がよくわからん事を書いているが、
PHPでもバックエンドといろいろやりとりしたり出来るし、
バックエンドをJavaとすることだって出来る。

PHPを選ぶ積極的な理由になるのは、
PHPなら共用サーバでDBも含めて非常に安く借りられる、ってこと。
(性能がそれで十分かどうかは別の話)
JavaだとTomcat等のアプリケーションサーバが必要になるが、PHPに比べるとかなり割高。
そんなに性能要らないのにって言っても、メモリが必要だから必然的に高くなるパターンが多い。

ブログサイト・会社のホームページ等のいわゆるホームページ系はPHPで十分な事が多いし、
PHP上で動作するWordpress等のブログエンジン、CMS等を利用した方が
管理の手間が断然減って良いはず。
物販等の場合もほとんどの場合PHPで十分

Javaを利用する場合は・・・・俺の場合、PHPが嫌いだから。
JSPも含めてHTML内にタグ書き込むのが嫌。

ウェブサイト作るのにJava自体が必要な事は少ないから、
何をやりたいのかをちゃんと考えてから選んだ方が良い。


550 :デフォルトの名無しさん:2009/05/29(金) 17:15:20
可能かどうかの話なんか誰もしてねぇし。それだけならアセンブラだって可能。

551 :デフォルトの名無しさん:2009/05/29(金) 17:22:32
アセンブラでがんばれよw 

552 :デフォルトの名無しさん:2009/05/29(金) 18:50:59
>>537
変数をchar型にしたら出来ました。 有難うございます

553 :デフォルトの名無しさん:2009/05/29(金) 19:36:54
配列同士の比較は内容が同じであっても
equals()でやってもfalseが返るのは何故でしょうか

554 :デフォルトの名無しさん:2009/05/29(金) 19:48:11
そういう仕様だから。
必要なら Arrays.equals() とか deepEquals() を使う。

555 :デフォルトの名無しさん:2009/05/29(金) 20:07:18
>>554
どうもありがとうございました

556 :デフォルトの名無しさん:2009/05/29(金) 21:58:22
opentypeのフォント使って文字を描画したいんだけど、どうやってフォントを指定するの?
GraphicsEnvironment.getAllFonts()しても、opentypeのフォントだけ取得できないし…。

557 :デフォルトの名無しさん:2009/05/30(土) 01:07:52
>>554
>そういう仕様だから
誤解させるようなことを言うな
ちゃんと参照とかで説明してやれよ

558 :デフォルトの名無しさん:2009/05/30(土) 01:33:37
>>553
比較しているのは参照アドレスだから。
内容(?)を比較してtrue返すのはStringクラスとラッパークラスだけ。


559 :デフォルトの名無しさん:2009/05/30(土) 02:35:07
>>556
標準のAPIじゃサポートしていないみたい。
Font.createFont() で
Font.TRUETYPE_FONT 指定すると
Exception in thread "main" java.awt.FontFormatException: Unsupported sfnt C:\Program Files\Adobe\Reader 8.0\Resource\CIDFont\KozGoProVI-Medium.otf
かといって Font.TYPE1_FONT だと
Exception in thread "main" java.awt.FontFormatException: bad pfa font

gnu のライブラリだと読み込めそうなことも書いてあったけど、詳しく調べてない。

560 :474:2009/05/30(土) 03:00:19
>>476
できました!ありがごうございます

561 :デフォルトの名無しさん:2009/05/30(土) 03:11:52
アセンブラでCGI対応って大変そうだ。

562 :デフォルトの名無しさん:2009/05/30(土) 06:58:15
フレームにフリーラインの書けるパネル、描画をクリアするためのボタンをaddしたプログラムを作ったのですが、ボタンの上にマウスを置いた後に描画しようとするとパネルの0,0の位置にボタンが描画されてしまいます。

ボタンはフォーカスされた時点でイメージをバッファしてるのでしょうか?

repaint()の前にバッファをクリアするようなプログラムが必要になるのでしょうか?

説明が下手で申し訳ないのですが解決方法を教えていただきたいです。


563 :デフォルトの名無しさん:2009/05/30(土) 07:15:10
>>558
デマぬかすな。Date, Locale, File, URL, ... いくらでもあんだろ。

564 :デフォルトの名無しさん:2009/05/30(土) 07:16:19
>>561
おまえアセンブラも CGI も触ったことないだろ。

565 :デフォルトの名無しさん:2009/05/30(土) 07:22:30
>>564
お前馬鹿って言われてるだろ。
言われてないなら可哀相な目で見られていることに気が付いてないだけだ。

566 :デフォルトの名無しさん:2009/05/30(土) 07:23:29
以上、かわいそうな奴からの反論でした。

567 :デフォルトの名無しさん:2009/05/30(土) 12:03:35
オブジェクト型の初期値はNULLのハズなのに、BufferedWriteとかのクラスを使っていると
IDEはNULLで初期化してくださいと文句を言ってくるのですか?

568 :デフォルトの名無しさん:2009/05/30(土) 12:48:03
>>567
変数は、初期化されるものとされないものがある。

ローカル変数は初期化されない。

資料 java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5
>A local variable (§14.4, §14.14) must be explicitly given a value before it is used


569 :デフォルトの名無しさん:2009/05/30(土) 13:20:50
>>562
単に作り方を間違えてる。

class MyPanel extends JPanel {
ArrayList<Point> points = new ArrayList<Point>();
public MyPanel() {
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
points.add(e.getPoint());
repaint();
}
});
}
public void paint(Graphics gr) {
int cnt = points.size();
int[] xp = new int[cnt];
int[] yp = new int[cnt];
int p = 0;
for (Point pnt : points) {
xp[p] = pnt.x;
yp[p] = pnt.y;
p++;
}
gr.clearRect(0, 0, getWidth(), getHeight());
gr.setColor(Color.BLUE);
gr.drawPolyline(xp, yp, cnt);
}
public void clearLines() {
points.clear();
repaint();
}
}

570 :デフォルトの名無しさん:2009/05/30(土) 13:21:05
public class TestMain extends JFrame implements ActionListener {
MyPanel pan = new MyPanel();
JButton btn = new JButton("clear");
public TestMain() {
add(pan, BorderLayout.CENTER);
btn.addActionListener(this);
add(btn, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e) {
pan.clearLines();
}
public static void main(String[] args) {
TestMain test = new TestMain();
test.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
test.setSize(500, 500);
test.setTitle("TestForm");
test.setVisible(true);
}
}


571 :デフォルトの名無しさん:2009/05/30(土) 13:36:40
>>568
そうなのね、知りませんでした
ありがとう

572 :デフォルトの名無しさん:2009/05/30(土) 14:37:39
相対パスか絶対パスかを判断する方法ってないですか?

573 :デフォルトの名無しさん:2009/05/30(土) 14:38:52
File#isAbsolute()

574 :デフォルトの名無しさん:2009/05/30(土) 15:26:22
>>573
ありがとうございます
java se6 api リファレンスのjava.io.fileを探しましたが、私の目は節穴だったようです

575 :デフォルトの名無しさん:2009/05/30(土) 19:09:33
>>569 >>570
ありがとうございます。

根本から間違えていたみたいですね。
参考になります。

576 :デフォルトの名無しさん:2009/05/30(土) 20:37:08
ttp://www.sist.ac.jp/~suganuma/cpp/4-bu/20-sho/graph/main/graph.txt

↑サイトを参考に横棒グラフを表示するプログラムを作っているのですが
グラフ選択画面→グラフ表示 を
プログラムを実行したらすぐに横棒グラフを表示するようにするには
mainの部分をどのようにしたらいいでしょうか?

577 :デフォルトの名無しさん:2009/05/30(土) 20:38:54
sage

578 :576:2009/05/30(土) 21:39:15
あと、もうすこし簡略化したアプレット版もあるのですが
こちらもmainの部分をどう作ったらいいのか困っています。


import java.applet.*;
import java.awt.*;
import java.awt.event.*;

class bar_chart extends Applet {
final static int data_set[] = { 50, 85, 32, 65 };
final static String data_label[] = { "93", "94", "95", "96" };

int Graph_offset = 20;
int Graph_Height = 150;
int Y_Tick_Height = Graph_Height / 5;
int Graph_Width = 240;
int X_Tick_Width = Graph_Width / data_set.length;

public void paint(Graphics g)
{
g.setColor(Color.black);

g.drawLine(Graph_offset + Graph_Width, Graph_offset,
Graph_offset + Graph_Width, Graph_offset + Graph_Height);

for(int i=0; i<=5; i++)
{
g.drawString(String.valueOf(i*20),
Graph_offset + Graph_Width + 10,
Graph_offset + Graph_Height -(i*Y_Tick_Height));



579 :デフォルトの名無しさん:2009/05/30(土) 21:41:51
g.drawLine(Graph_offset,
         Graph_offset + Graph_Height -(i*Y_Tick_Height),
         Graph_offset + Graph_Width + 5,
         Graph_offset + Graph_Height -(i*Y_Tick_Height));
}
g.drawLine(Graph_offset,
Graph_offset + Graph_Height,
Graph_offset + Graph_Width,
Graph_offset + Graph_Height);
for(int i=0; i<data_set.length; i++)
{
g.drawString(data_label[i],
Graph_offset + X_Tick_Width*i + X_Tick_Width/2,
Graph_offset + Graph_Height + 20);
g.drawLine(Graph_offset + X_Tick_Width*i +
X_Tick_Width/2,
Graph_offset + Graph_Height,
Graph_offset + X_Tick_Width*i + X_Tick_Width/2,
Graph_offset + Graph_Height + 5);
}
g.setColor(Color.red);

for(int i=0; i<data_set.length; i++)
{
int bar_height = data_set[i] * Graph_Height / 100;
g.fillRect(Graph_offset + X_Tick_Width*i +  X_Tick_Width/4,
Graph_offset + Graph_Height - bar_height,
X_Tick_Width/2, bar_height);
}
}

}

580 :デフォルトの名無しさん:2009/05/30(土) 21:59:58
>>576
repaint() すると update() -> paint() と呼ばれる。

public class ChartMain extends javax.swing.JFrame {
public ChartMain() {
add(new bar_chart(), BorderLayout.CENTER);
repaint();
}
public static void main(String[] args) {
ChartMain test = new ChartMain();
test.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
test.setSize(300, 250);
test.setTitle("ChartTest");
test.setVisible(true);
}
}

581 :デフォルトの名無しさん:2009/05/30(土) 22:21:44
やさしいJava基本編の内容を理解して、ぐちゃぐちゃでも良ければ
動くものを書く程度までの実力はつきました。
あとわかるのは拡張forやlistなど

特別なJavaの機能やオブジェクト指向について学びたいのですがオススメの書籍はありませんか?
今はEffective Javaがいいのかな?っと思っています

582 :デフォルトの名無しさん:2009/05/30(土) 22:37:20
core javaとか?
まあやさしいjavaは忘れることだ

583 :デフォルトの名無しさん:2009/05/30(土) 22:48:53
>>581
基本押さえたら次は実践だろー
何か興味のあるものは無いのか?
HTTPget でも自作してみるとか、そこからリンク辿って自動的にダウンロード
してみるとか、ミニゲーム作ってみるとか、科学技術計算に耽溺してみるとか。

584 :デフォルトの名無しさん:2009/05/30(土) 23:12:51
>>582
Amazon.co.jp: コアJava2〈Vol.1〉基礎編 (サンソフトプレスシリーズ): ケイ・S. ホーストマン, ゲイリー コーネル, Cay S. Horstmann, Gary Cornell, 福龍興業: 本

これですね
立ち読みしてきます

>>583
実践って言うほどじゃないんですが、TwitterのBOTをTwitter4j使った遊んでいます

585 :デフォルトの名無しさん:2009/05/30(土) 23:37:27
>>584
ばっちりじゃん。目標があるなら好きなように遊んでいれば問題ないと思ってる。

586 :デフォルトの名無しさん:2009/05/30(土) 23:57:44
>>580
表示できました!本当にありがとうございました!!

587 :576:2009/05/31(日) 00:39:10
度々すいません
アプレット版の方は表示できたのですが
ttp://www.sist.ac.jp/~suganuma/cpp/4-bu/20-sho/graph/main/graph.txt 
↑を参考にして作った方のプログラムのmainの部分で
public class ChartMain extends javax.swing.JFrame {
public ChartMain() {
add(new BarGraph(), BorderLayout.CENTER);
                            repaint();
}
public static void main(String[] args) {
String title[]; // グラフ,x軸,及び,y軸のタイトル
String g_title[]; // 凡例(グラフの内容)
String x_title[]; // x軸への表示
double x_scale[]; // x軸目盛り
double y_scale[]; // y軸目盛り
double data_x[][], data_y[][]; // データ
                    ・・・具体的なデータの入力・・・・
BarGraph gp = new BarGraph(title, g_title, x_title, y_scale, 0, data_y, true, true);
ChartMain test = new ChartMain();
test.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
test.setSize(300, 250);
test.setTitle("ChartTest");
test.setVisible(true);
}
}
をjavacすると
シンボルを見つけられません。
シンボル: コンストラクタBarGraph()
場所 :BarGraph の クラス
add(new BarGraph(), BorderLayout.CENTER);
と出てしまうのですがどうすればいいのでしょうか?

588 :デフォルトの名無しさん:2009/05/31(日) 00:52:29
設計が悪いw
再提出。

まあ、とりあえず『なげやりな応急手段』としては。

public ChartMain(BarGraph gp) {
add(gp, BorderLayout.CENTER);
repaint();
}

と修正して main() では

ChartMain test = new ChartMain(gp);

589 :576:2009/05/31(日) 01:27:05
>>588
プログラムを実行するとなんとかグラフ表示はできるのですがコマンドプロンプトが

Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAwindow(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JFrame.addImp(Unknown Souce)
at java.awt.Container.add(Unknown Source)
at ChartMain.<init>(ChartMain.java:java:8)
at ChartMain.main(ChartMain.java:77)

と出るのですがどうすれば・・・


8:add(gp, BorderLayout.CENTER);
77:ChartMain test = new ChartMain(gp);



590 :デフォルトの名無しさん:2009/05/31(日) 01:51:03
参考元のソース見て納得いったわ。
BarGraph の継承元が Frame になってる。
こいつを bar_chart と同じく Applet に変更。

591 :576:2009/05/31(日) 02:05:59
>>590
やっと完成しました。
色々と答えていただきありがとうございましたm(_ _)m

592 :デフォルトの名無しさん:2009/05/31(日) 02:08:12
ちょい解説。

Applet も Frame も Container を先祖に持っていて、その更に祖先は Component
なんだけど、Frame の親が特殊で Window なんだ。
こいつは Container に add しようとすると
private void checkNotAWindow(Component comp){
if (comp instanceof Window) {
throw new IllegalArgumentException("adding a window to a container");
}
}
と例外を吐く。


593 :デフォルトの名無しさん:2009/05/31(日) 02:17:45
あ、最近Javaを始めた、あ、初心者です。

スレッドを生成してrunメソッドでObjectInputStreamのreadObjectを使って受信しているのですがスレッドを例外の発生なしで強制終了したいときにはどうしたらいいしょうか?

594 :デフォルトの名無しさん:2009/05/31(日) 02:27:27
>>593
読み込みで readObject() が wait してるんだろうから、どのみち例外は起こる。
というか、起こらなかったら不味くはないか?読み込めたと勘違いしそうだから。

ということで、例外は起こるもの(実際起こってるし)として処理すればいいだけ。

595 :デフォルトの名無しさん:2009/05/31(日) 02:45:10
つまり、生成時に使ったInputStreamをクローズ→ObjectInputStreamが例外を投げる。
この場合、ObjectInputStreamはcloseしなくてもいいですか?

596 :デフォルトの名無しさん:2009/05/31(日) 02:53:49
強制終了しなきゃならない事態なら、あとは終わるだけだろうし。
だったら、気にすることもない。
試しにクローズしてもいいだろうし。

終わらないなら、読み込み終わるまで放置していればいいし。

597 :デフォルトの名無しさん:2009/05/31(日) 14:50:30
JavaファイルをJarにかためるときは、どういった単位で固めるのですか?

598 :デフォルトの名無しさん:2009/05/31(日) 15:05:21
ソースツリーをそのまんま。
Eclipseとかでライブラリのjarに対応して設定すると、classとソースコードを連動
してくれる。
よく配布ライブラリにはxxxx-sources.jarってあるけど、そういうこと。

599 :デフォルトの名無しさん:2009/05/31(日) 15:14:00
setメソッドでURLが正しいかどうか確認した後で、フィールにあるStringオブジェクトに値を入れたい
public void setUrl(String url) throws MalformedURLException {
URL checkUrl = new URL(url);
this.url = url;
}
ちゃんとしたURLでないと、インスタンスが生成されず例外が発生するのでこの様に書きました
しかし、それだけのためにオブジェクトを生成するのはかなり抵抗があります
そこで、もうちょっとしっかりとした書き方を教えて欲しいのですが... 教えてエロい人!!

600 :デフォルトの名無しさん:2009/05/31(日) 15:46:08
前スレで質問したkeyPressedで呼んだ先でさらにキー入力を読むプログラムなんですが
最初Enter押すとStart、次Space押すとEnd.と出るつくりです。
import java.awt.*;
import java.awt.event.*;
public class test extends Frame implements Runnable,KeyListener {
int k;
public void keyPressed(KeyEvent e) {
k=e.getKeyCode();
if (k==10) {
System.out.println("Start");
keyin();
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public static void main(String[] args) {
test f = new test();
f.setBounds(10, 10, 300, 200);
f.addKeyListener(f);
f.setVisible(true);
f.start();
}
public void start() {
Thread t = new Thread(this);
t.start();
}
public void run() {
//keyin();
}

601 :デフォルトの名無しさん:2009/05/31(日) 15:46:48
続き..

public void keyin() {
int d=0;
while (d==0) {
try {
Thread.sleep(1);
if (k==32) { d=1; System.out.println("End."); }
} catch (Exception e) {}
}
}
}

keyPressedから呼ぶとキー入力不能になります。run()からなら正常に動きます。
keyPressedの中でさらにキー入力受け付けるにはどうすればいいでしょうか?

602 :デフォルトの名無しさん:2009/05/31(日) 15:51:39
>599
>それだけのために
URLの判定って、それだけでものごっつい処理だったりするから・・・
自力でURL(RFC2396)を正規表現でチェックしたら・・・軽く死ねます。

厳密にチェックしたければ、
1. URISyntaxException をハンドリングしつつ URI インスタンスを生成する。
2. isAbsolute() であることを確認。
3. toURL()でURL生成。

603 :デフォルトの名無しさん:2009/05/31(日) 16:01:58
>>600
そりゃイベント処理で無限ループさせてたら次のイベントは取れないわな・・・
イベント駆動ってことを考えて再設計しなされ。

具体的には、イベント処理関数内部でループすんな!

604 :デフォルトの名無しさん:2009/05/31(日) 16:18:34
そうですか..変更します。

605 :599:2009/05/31(日) 16:27:54
>>602
ありがとうございます
URLクラスだけで完結しないのですねorz

606 :デフォルトの名無しさん:2009/05/31(日) 16:42:37
きりが無いから、URLで作れるか否かで充分ではないか?

607 :デフォルトの名無しさん:2009/05/31(日) 21:07:06
こんばんわ。
質問をさせていただきます。

下記のことをしたいと思っています。

@フレームは、GridBagLayoutを設定
Aフレーム上に3つのパネルをセットする
Bパネル1はsetboundsを設定
Cパネル2、3は、GridBagLayoutを設定

自分でソースを組んでみたのですが、パネル1が表示されません。
パネル2、3は表示がされるのですが・・・
GridBagLayoutのフレーム上で、setboundsのパネルを
配置することができないなんてありませんよね?


608 :デフォルトの名無しさん:2009/05/31(日) 21:37:41
エスパー召喚の呪文だな

609 :デフォルトの名無しさん:2009/05/31(日) 22:23:47
よくわかんないけど、フレームfに

GridBagLayout gbl = new GridBagLayout();
f.setLayout(gbl);
GridBagConstraints gc = gbl.getConstraints(f);
gc.insets = new Insets(5, 5, 5, 5);
gc.fill = GridBagConstraints.BOTH;
gc.weightx = 1.0;
gc.weighty = 1.0;
gc.gridwidth = GridBagConstraints.REMAINDER;

ってGridBagLayout配置した上に

JPanel pan = new JPanel();
pan.setLayout(null);
pan.setBorder(BorderFactory.createLineBorder(Color.red, 5));

って、nullレイアウトの子パネルpanを置いて、そこに孫パネルsubpanを

JPanel subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
subpan.setBounds(10, 30, 100, 30);
pan.add(subpan);
f.add(pan, gc);


610 :デフォルトの名無しさん:2009/05/31(日) 22:25:18
ちなみに、その後に追加してみた別レイアウトなパネル2

// panel 2
pan = new JPanel();
pan.setBorder(BorderFactory.createLineBorder(Color.yellow, 5));
GridBagLayout subgbl;
GridBagConstraints subgc;
subgbl = new GridBagLayout();
pan.setLayout(subgbl);
subgc = subgbl.getConstraints(pan);
subgc.insets = new Insets(5, 5, 5, 5);
subgc.fill = GridBagConstraints.BOTH;
subgc.weightx = 1.0;
subgc.weighty = 1.0;
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
pan.add(subpan, subgc);
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
subgc.gridwidth = GridBagConstraints.REMAINDER;
pan.add(subpan, subgc);
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
pan.add(subpan, subgc);
f.add(pan, gc);


611 :デフォルトの名無しさん:2009/05/31(日) 22:26:33
パネル3

// panel 3
pan = new JPanel();
pan.setBorder(BorderFactory.createLineBorder(Color.blue, 5));
subgbl = new GridBagLayout();
pan.setLayout(subgbl);
subgc = subgbl.getConstraints(pan);
subgc.insets = new Insets(5, 5, 5, 5);
subgc.fill = GridBagConstraints.BOTH;
subgc.weightx = 1;
subgc.gridheight = 2;
subgc.weighty = 1;
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
pan.add(subpan, subgc);
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
subgc.weighty = 0;
subgc.gridwidth = GridBagConstraints.REMAINDER;
subgc.gridheight = 1;
pan.add(subpan, subgc);
subpan = new JPanel();
subpan.setBorder(BorderFactory.createLineBorder(Color.green, 5));
pan.add(subpan, subgc);
f.add(pan, gc);

適当なパネル追加が笑える。

612 :デフォルトの名無しさん:2009/05/31(日) 22:30:14
ついでにmainも

public static void main(String args[]) {
JFrame f = new JFrame("GridBag Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addPanels(f);
f.setBounds(100, 100, 800, 400);
f.setVisible(true);
}

addPanels() に上のコードを書けば良い。

613 :デフォルトの名無しさん:2009/05/31(日) 22:39:17
class NewAccount extends Account {
public void Withdrawal(xxx) //親のメソッドをオーバライド
if(accountMethod(aaa)) {  //accountMethodは親のメソッドをオーバライド

public class Mousugu6gatu {
public static void main(String args[]) {
NewAccount a1 = new NewAccount(yyy)
a1.Withdrawal(zzz); //ココ

このようなときに、NewAccountクラスのインスタンスを生成して、
変数a1に参照が入っていて、ココでは、a1オブジェクトのWithdrawalメソッドを
呼び出しているのですけど、Withdrawalメソッドにの中にある、
accountMethod(aaa)の記述は、
a1.accountMethod(aaa)としなくても良い理由が知りたいのです。
教えて下さい。

614 :デフォルトの名無しさん:2009/05/31(日) 23:01:37
Javaで別システム(C++で作成)と連携させたいのですが、
最近は何で連携するのが流行でしょうか。
昔はCORBAなんかで連携してましたが、最近の流行を知りたいです。

JavaのシステムからC++のシステムにデータをわたし、加工したものを
受け取りたいのです。
同期的、非同期のどちらも可能である方法が知りたいです。

615 :デフォルトの名無しさん:2009/05/31(日) 23:32:12
>>613
インスタンスのメソッドの中から同じインスタンスのメソッドを呼び出してるだけ
だから。

内部的には、インスタンスメソッドにはそのインスタンスへの参照が暗黙的に
渡され、それを介してインスタンスメソッドにアクセスする。これがthis。
ただ、言語規定を漁ってみたけど記述がみつからん。_| ̄|○

616 :デフォルトの名無しさん:2009/05/31(日) 23:47:56
http://java.sun.com/docs/books/jvms/second_edition/html/Compiling.doc.html#14787
に"The invocation is set up by first pushing a reference to the current instance, this, ..."
とthis参照に関しては明記されてた。

ところで、614 はパスw 最近のなんてわっかんねえし。

617 :デフォルトの名無しさん:2009/06/01(月) 00:01:29
>>609
ご返答ありがとうございます。
サンプルまで作っていただいてすみません。
私のほうで作成したサンプルを書いてみます。
ボタンを押すと、画面が開かれる仕様ですが、
その開かれる画面の設定内容です。
メインパネル1の上に置いたtxt_gyomu_cdが
どうやっても表示されません。
コーディングがどこかおかしいのでしょうか

618 :617:2009/06/01(月) 00:02:39
public class Item_reg {
//メインパネル1 START
private JPanel mainPanel1 = new JPanel();
private JTextField txt_gyomu_cd = new JTextField();

public void showFrame() throws Exception{
GridBagLayout layout = new GridBagLayout();

// フレームの定義 start
JFrame frame = new JFrame();
Container con = frame.getContentPane();
con.setLayout(layout);
GridBagConstraints con_gbc = new GridBagConstraints();
// フレームの定義 end

// メインパネル1 start
mainPanel1.setLayout(null);
txt_gyomu_cd.setBounds(10, 10, 600, 600);
txt_gyomu_cd.setVisible(true);
mainPanel1.add(txt_gyomu_cd);


619 :617:2009/06/01(月) 00:04:21
// コンテナにセット start
con_gbc.gridx = 0;
con_gbc.gridy = 0;
con_gbc.gridwidth = 1;
con_gbc.gridheight = 1;
layout.setConstraints(mainPanel1, con_gbc);
con.add(mainPanel1);
// コンテナにセット end

frame.pack();
frame.setVisible(true);
}
}


620 :デフォルトの名無しさん:2009/06/01(月) 00:49:26
>>615>>616
ありがとうございました。

621 :デフォルトの名無しさん:2009/06/01(月) 01:03:43
>>617
con_gbc.fill = GridBagConstraints.BOTH;
con_gbc.weightx = 1.0;
con_gbc.weighty = 1.0;
con_gbc.gridwidth = GridBagConstraints.REMAINDER;
を追加。

622 :デフォルトの名無しさん:2009/06/01(月) 08:58:26
JavaでDirectXを扱う方法を教えてくださいまし。
OpenGLはあるようなんですけど。

623 :デフォルトの名無しさん:2009/06/01(月) 12:04:17
jlistの入力補完?を止めたいんだけども、
リストに表示される文字列を入力していくと、自動で選択してくれる機能
お願いします。


624 :デフォルトの名無しさん:2009/06/01(月) 12:17:07
>>622
javaにこだわらずC#使ったらいいんじゃね?

625 :デフォルトの名無しさん:2009/06/01(月) 12:54:53
オブジェクトの比較についてですけど
==だと参照の同一性だけの比較なのでequals()を使えば、
内容に比較が出来ると思っていたのですけど、
今読んでいる本では、equals()も==と同じように、参照の同一性しか
比較できないと書いてあり、内容を比較したいなら、equals()メソッドを
オーバーライドしないといけないと書いてあります。
たかだか、比較するだけなのに、どうして、このように
二段階、三段階の複雑怪奇なのでしょうか。
真実は、どうなっているのでしょうか。

626 :デフォルトの名無しさん:2009/06/01(月) 13:26:43
最小2乗法によるm次の多項式近似を行うプログラムを教えてください
教えて

xがー2の時yが3.02
−1の時0.98
0の時1.22
1の時2.16
2の時2.61         の時のです
出来ればソース全文書いてください




627 :デフォルトの名無しさん:2009/06/01(月) 13:34:52
>>625
参照の同一性と中身の同一性、好きな方で比較できると思えばいいんじゃね?

628 :デフォルトの名無しさん:2009/06/01(月) 15:12:55
>>626
乞食行為は宿題スレでやってくれ

629 :デフォルトの名無しさん:2009/06/01(月) 17:21:07
すいません
java.awt.im.*をインポートして,入力された日本語を漢字へ変換したいのですが
使い方がまったく分かりません。
どうすればインプットメソッドを用いた漢字変換ができるのでしょうか
簡単にでいいのでどなたか教えてくれませんか?

630 :デフォルトの名無しさん:2009/06/01(月) 17:33:23
これは酷い

631 :デフォルトの名無しさん:2009/06/01(月) 20:45:54
ArrayListなどのコレクションは、何だか便利らしいという事はわかりました
でも実際に実装する時には、どのようなタイミングで使えばいいのかわかりません
教えてエロい人!!

632 :デフォルトの名無しさん:2009/06/01(月) 21:13:09
>>629
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/imf/api-tutorial.html
のサンプルが実例なんだけど、標準の漢字変換に任せたほうが無難だと思うなぁ。

絶対、やっちゃった実装だろ、これは・・・

633 :デフォルトの名無しさん:2009/06/01(月) 21:25:22
>>625
「たかだか、比較するだけなのに」がド甘い考え。

デフォルトだと、equals()は
[Object.java]
public boolean equals(Object obj) {
return (this == obj);
}
となっているので、実質==と同じ。
これじゃ参照の同一性しか比較できないから、
[String.java]
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
// ・・・・・・・略
return true;
}
}
return false;
}
というようにオーバーライドしてある。
オブジェクトの中身なんて実装者にしかワカランから、仕方ない。

634 :デフォルトの名無しさん:2009/06/01(月) 22:57:11
equalsはサブクラスにオーバーライドされる前提だろ

635 :デフォルトの名無しさん:2009/06/02(火) 10:15:41
>>631
必要になったら使う。
配列を置き換えてよいとは言わんが、適時積極的に使って良いもの。

636 :デフォルトの名無しさん:2009/06/02(火) 11:26:27
むしろArrayListを使わずに何が作れるというのか

637 :デフォルトの名無しさん:2009/06/02(火) 12:29:06
>>632
ありがとうございます
参考にします

638 :デフォルトの名無しさん:2009/06/02(火) 14:33:04
不思議に思ったことがあるのでお便りさせていただきます。
Javaプログラミングの経験はそれなりにあるのですが、
ドラッグ&ドロップは使ったことがありませんでした。
たまたまちょっとやってみようと思い、参考書(グラフィックJava2 vol1.AWT編 ASCII)
のコードを動かしてみました。
AWTのLISTから別のLISTに項目をコピーするという簡単なものです。

private List dropList = new List();

private DropTarget dropTarget = new DropTarget(
dropList,
DnDConstants.ACTION_COPY_OR_MOVE,
this
);
thisはDragGestureListener,DragSourceListener,DropTargetListener
をインプリメントしたFrameです。
で、プログラムは想定どおり動くのですが、dropTargetのハンドルをどこにも”登録”らしきことをしていない(eclipseではこの変数使ってないよマークが出る)
のに動く(DropTargetDropEventがちゃんとdropTargetのことを知っている)のがとても疑問です。
もっと一般的な情況を想定してリフレクションかなんかで処理しているのですかね?


639 :デフォルトの名無しさん:2009/06/02(火) 15:26:19
>>638
DropTagetのコンストラクタの中に addDropTargetListener(dtl); とあるけど、これ?


640 :デフォルトの名無しさん:2009/06/02(火) 15:41:59
いえ、dropTargetのハンドルそのものをプログラム中で使用しないのでaddDropTargetListenerとかは関係ないです。
ちなみに長くなるので省略してしまったのですが、DragSourceのインスタンスもDragGestureRecognizerのインスタンスもプログラム中で使用していません。(DragSourceのインスタンスはDragGestureRecognizerを生成するために一回だけ使いますが)
ソース、ターゲット、ジェスチャーの各インスタンスはFrameを拡張したクラスの中で生成されたきりです。
置きっぱなしなのに、ちゃんと動いているのが不思議だなと。


641 :デフォルトの名無しさん:2009/06/02(火) 15:46:33
もちろん、DropTargetのコンストラクタやDragGestureRecognizerの生成メソッド
のパラメータにソースやターゲットとなるコンポーネントをのせてるところが、
ミソののでしょうが。

642 :デフォルトの名無しさん:2009/06/02(火) 15:47:43
ミソののでしょうが。==>ミソなのでしょうが。
連投&字の間違い、すみません。

643 :デフォルトの名無しさん:2009/06/02(火) 16:57:52
なぜこのプログラムは出力に「ok」が出ないのか教えてくれませんか

public class Sample {
static String a="abc";
static String b;
public static void main(String[] args) {
b="";
b=b+'a'+'b'+'c';
if(b==a){
System.out.println("ok");
}

}
}


644 :デフォルトの名無しさん:2009/06/02(火) 17:01:52
>>643
okが出るように書かれてないから。

645 :デフォルトの名無しさん:2009/06/02(火) 17:04:33
>>643
>>1

646 :デフォルトの名無しさん:2009/06/02(火) 17:46:47
Stringの==だけ本当にどうにかならないかな

647 :デフォルトの名無しさん:2009/06/02(火) 18:00:41
Stringだけ特別扱いできんだろうなぁ。
==で比較できない!って他のクラスとかでも言い出す奴が出だすし。

648 :デフォルトの名無しさん:2009/06/02(火) 18:04:31
文字列は書き換えられないんだから、
参照型じゃなくて基本型でも良かったんじゃないかな。
Javascriptみたいに。

649 :デフォルトの名無しさん:2009/06/02(火) 18:07:57
>>643
String#internについて調べよう

650 :デフォルトの名無しさん:2009/06/02(火) 18:13:29
>>648
そこまでわかった上で言う人間ばかりだったらそれで良いのだろうけどな。

651 :631:2009/06/02(火) 19:22:56
>>635
わかりました
thx

652 :デフォルトの名無しさん:2009/06/02(火) 19:37:10
>>633 >>634
ありがとうございました。

653 :デフォルトの名無しさん:2009/06/02(火) 20:20:57
toStringメソッドってどこのメソッドでもオーバーライドしているけど、
これはデバッグする時に使うって本当?

654 :デフォルトの名無しさん:2009/06/02(火) 20:31:04
誰がそんなこと言ったんだよ…

655 :デフォルトの名無しさん:2009/06/02(火) 20:51:18
clone()メソッドについて質問です。
java.lang.Objectのclone()はシャローコピーですが、docには
「通常、このメソッドにより返されるオブジェクトは、このオブジェクト (複製されている)から独立している必要があります。(後略)」とあります。
ということは、java.lang.Object以外のクラスのclone()は、ディープコピーになるようにオーバーライドするのが好ましいと考えていいんでしょうか?

656 :デフォルトの名無しさん:2009/06/02(火) 21:04:08
いいよ

657 :デフォルトの名無しさん:2009/06/02(火) 21:36:11
今Javaを勉強中なのですが、疑問におもったことがあります。
メソッドからはフィールドにthisなしでアクセスできるのに、
なぜコンストラクタからはthisがないとアクセスできないのでしょうか。
c++ではメソッド、コンストラクタ共にthisなしで
フィールドにアクセスできたのですが・・。

658 :デフォルトの名無しさん:2009/06/02(火) 21:38:16
>>657
なんでっていわれてもそういうもんだからしかたない


659 :デフォルトの名無しさん:2009/06/02(火) 21:42:07
>>657
引数と区別するためにthisを付けてるのと勘違いしてないか?


660 :デフォルトの名無しさん:2009/06/02(火) 21:47:21
>>659
その通りでした。
くだらない質問すみませんでした。

661 :デフォルトの名無しさん:2009/06/02(火) 21:55:23
複数のBeanで構成されるDTOで
Beanの追加と削除メソッドはあるんだけど
更新はBeanの変数を直接弄る
これってありなんですか?
DTOの概念だと更新メソッドを追加してDTO内でBeanの変数を弄らないと駄目だと思うんですが、、

662 :デフォルトの名無しさん:2009/06/02(火) 21:56:31
>>656
ありがとうございます。

663 :デフォルトの名無しさん:2009/06/02(火) 22:07:39
>>578
このプログラムのdata_set[]の配列にmain関数から、もしくは引数で数値を渡すには
どうすればいいでしょうか?


664 :617:2009/06/02(火) 22:13:26
>>621
ご回答ありがとうございました。
教えていただいた方法で行うことができました。
返事がおくれてすみませんでした

665 :デフォルトの名無しさん:2009/06/02(火) 22:15:50
>>653
貴方は何処で其れを見たのだ

666 :デフォルトの名無しさん:2009/06/02(火) 22:47:43
>>665
適当にネットをさまよっていただけです
そこに、デバッグがなんちゃらって書いていたので

667 :デフォルトの名無しさん:2009/06/02(火) 22:59:59
まー実際、デバッグに使っちゃうよな。

668 :デフォルトの名無しさん:2009/06/02(火) 23:10:02
>>666
じゃあJTableのデフォルトレンダラはセルの内容表示にtoStringを使ってるから
JTableを使用する=デバッグしてる時ってこと?

669 :デフォルトの名無しさん:2009/06/02(火) 23:13:28

今後におきましては、Object#toStringはデバッグ目的以外での使用をお控え下さい。

670 :デフォルトの名無しさん:2009/06/02(火) 23:15:26
toStringなんてまともに展開してくれないだろ

671 :デフォルトの名無しさん:2009/06/02(火) 23:16:39
>>653
toStringはオブジェクトの文字列表現を返すメソッドだから、
端的にオブジェクトの内容を示すようにオーバーライドしておくのは特別なことではない。
オブジェクトの内容が見えるからデバッグ「にも」使えるということであって、
デバッグ「にだけ」使うという意味に取ったのならそれはもったいない使い方。

672 :665:2009/06/02(火) 23:22:25
お前ら、ありがとう
今日のお前らはいつもより親切だな

673 :デフォルトの名無しさん:2009/06/02(火) 23:36:05
何回か、GridBagLayoutについて質問をしているものです。
また、はまってしまいました。
パネルを1〜4まで作成し、それをGridBagLayoutのframeの上に配置
しているのですが、パネル4をframeに追加すると、
それまで出ていたパネル1とパネル2が表示されなくなってしまいます。
自分なりにプログラムを簡素化したりしてみたのですが、どうにも
わかりません。
大変申し訳ないのですが、見ていただいてもよろしいでしょうか

674 :デフォルトの名無しさん:2009/06/02(火) 23:42:02
何回か、GridBagLayoutについて質問をしているものです。
また、はまってしまいました。
パネルを1〜4まで作成し、それをGridBagLayoutのframeの上に配置
しているのですが、パネル4をframeに追加すると、
それまで出ていたパネル1とパネル2が表示されなくなってしまいます。
自分なりにプログラムを簡素化したりしてみたのですが、どうにも
わかりません。
大変申し訳ないのですが、見ていただいてもよろしいでしょうか

675 :デフォルトの名無しさん:2009/06/02(火) 23:43:04
public class Item_reg {
//メインパネル1 START
private JPanel mainPanel1 = new JPanel();
private JLabel lbl_title1 = new JLabel("あああ");
//メインパネル1 END
//メインパネル2 START
private JPanel mainPanel2 = new JPanel();
private JLabel lbl_title2 = new JLabel("いいい");
//メインパネル2 END
//メインパネル3 START
private JPanel mainPanel3 = new JPanel();
private JLabel lbl_title3 = new JLabel("ううう");
//メインパネル3 END
//メインパネル4 START
private JPanel mainPanel4 = new JPanel();
private JLabel lbl_title4 = new JLabel("えええ");
//メインパネル4 END
static DbItem dbObj_item;
static DbCharge dbObj_charge;
static DbMember dbObj_member;

public void showFrame() throws Exception{
GridBagLayout layout = new GridBagLayout();
// フレームの定義 start
JFrame frame = new JFrame();
Container con = frame.getContentPane();
con.setLayout(layout);

676 :デフォルトの名無しさん:2009/06/02(火) 23:44:09
ソースが長くなるならうpろだ使えよ

677 :デフォルトの名無しさん:2009/06/02(火) 23:44:42
GridBagConstraints con_gbc = new GridBagConstraints();
// フレームの定義 end
// メインパネル1 start
mainPanel1.setLayout(null);
mainPanel1.setPreferredSize(new Dimension(400,450));
mainPanel1.setOpaque(true);
mainPanel1.setBackground(Color.BLUE);
lbl_title1.setBounds(0, 0, 100, 30);
mainPanel1.add(lbl_title1);
// コンテナにセット start
con_gbc.gridx = 0;
con_gbc.gridy = 0;
con_gbc.gridwidth = 1;
con_gbc.gridheight = 1;
con_gbc.fill = GridBagConstraints.NONE;
con_gbc.weightx = 1.0;
con_gbc.weighty = 1.0;
layout.setConstraints(mainPanel1, con_gbc);
con.add(mainPanel1);
// コンテナにセット end
// メインパネル1 end


678 :デフォルトの名無しさん:2009/06/02(火) 23:45:54
そうですね、その手がありました。うpロダつかいます

679 :デフォルトの名無しさん:2009/06/02(火) 23:47:23
1レス以上使うソースはうpろだ行きとテンプレに入れるべきだな

問題なのはテンプレ読まない一見の新参が多いことだが

680 :673:2009/06/02(火) 23:53:56
無駄にレス消費してしまって申し訳ありませんでした。

http://www.dotup.org/uploda/www.dotup.org89178.txt.html
ここにUPしました。

質問内容としては、>>673にありますとおりです。
よろしくお願いいたします。

681 :デフォルトの名無しさん:2009/06/02(火) 23:57:36
SQL*PLUSからは実行できるSQL文がJDBC経由で実行すると
内部エラーが発生します。


長いSQL文が原因かどうかわかりませんが
SQL文を短くすると内部エラーがでません。

なにかアドバイスが頂きたいです。

ODBC経由では実行できてJDBC経由では実行できない
経験があるかたいらっしゃいましたら教えてください。

以上です。

682 :デフォルトの名無しさん:2009/06/03(水) 00:01:57
>>681
> 内部エラー
何で詳細貼らないの?

683 :デフォルトの名無しさん:2009/06/03(水) 00:05:23
ORA-00600: 内部エラー です。
「SQLException(クローズされた接続です。)」ってログは
はいてます。

684 :デフォルトの名無しさん:2009/06/03(水) 00:10:57
>>674
masterとかobjectとかdbとかのパッケージ関係(importとクラス変数)を削ってmainメソッドを追加して、
newしたItem_regのshowFrameを呼んだけど、全部のパネルが表示されたんだが?
あああ、いいい、かかか、さささ×3個の4つでいいんだよね?

685 :デフォルトの名無しさん:2009/06/03(水) 00:14:26
>>683
よくわからんがconnectしてないんじゃ

686 :デフォルトの名無しさん:2009/06/03(水) 00:15:09
リサイズしたらおかしくなるってことか!
おかしくなるソースを示されるよりも、
理想的にはどういうレイアウトになってほしいのかを言ってくれたほうがいいかもしれん。

687 :685さんへ:2009/06/03(水) 00:17:41
直前のSQL文までは実行できているので
コネクションは貼れてます。


688 :デフォルトの名無しさん:2009/06/03(水) 00:20:23
>>687
ソースうpできん?

689 :688さんへ:2009/06/03(水) 00:32:48
とにかくすっごい長いSQLぶんです。

UPはできません。すみません

690 :デフォルトの名無しさん:2009/06/03(水) 00:41:44
>>689
・そのSQLは更新系か参照系か
・問題が起きるSQLの直前にConnection#isClosed()でtrueが返ってきてたりしてないか
・そのSQLの実行はStatementによるものか、PreparedStatementによるものか
・実行対象のSQLの大体の文字列長はどれくらいになるのか

691 :デフォルトの名無しさん:2009/06/03(水) 00:44:10
追加
・使用しているOracleのバージョンは何か
・DBサーバのOSは何か
・クライアント側のJDK/JREのバージョンは何か

692 :690さんへ:2009/06/03(水) 00:46:05
PreparedStatementで解析してます。

ステップ実行で追ってみるとその次のexecuteQueryで
SQLEXCEPTIONをスローしてきます。

SQLは、参照系です。

Connection#isClosed()は、まだ試してません。

そうとう長いです。
条件によってSQL文を組み替えるマクロを組んでいるため
いろいろ条件は変わりますがそうとう長いとしかいえないです。

Oracleは10gです。
DBサーバのOSは、WINDOWS XP PROです。
JDKは、1.5.0です。

693 :デフォルトの名無しさん:2009/06/03(水) 00:49:20
>>674
どういうふうにレイアウトされることを想定しているのか分からないので
とりあえずリサイズでいきなり消えたりしないようにするには

mainPanel1.setMinimumSize(new Dimension(400,450));
以下、2〜4のパネルにも設定。

GridBagLayoutのドキュメントをしっかり読むこと
>> この制約オブジェクトに加え、GridBagLayout は、コンポーネントのサイズを決定するために、
>> 各コンポーネントの最小サイズおよび推奨サイズを考慮します。


694 :690さんへ:2009/06/03(水) 00:49:59
Connection#isClosed()試しましたが
クローズはしてませんでした

695 :デフォルトの名無しさん:2009/06/03(水) 00:54:05
>>694
元となるSQL文、またはPreparedStatementによるsetXXXのパラメータ値をファイルから読んだりはしていない?
ちなみにSQLExceptionが出るのが常に確認できるなら、せめてトレースくらいは貼ってほしい。
これは別に問題なく出せる情報でしょ?

696 :デフォルトの名無しさん:2009/06/03(水) 00:55:32
>>693
> 以下、2〜4のパネルにも設定。
は各パネルの推奨サイズと同じサイズに最小サイズを設定っていう意味ね

697 :デフォルトの名無しさん:2009/06/03(水) 01:14:22
>>655
独立というのは

Object c=o.clone();

のときo.equals(c)がfalseを返すという意味。
それ以上の言及はjavadocではされてないし仕様上cloneはシャローコピーだが実際ディープコピーで実装することもある。
が、それが良いか悪いかは別問題。

698 :デフォルトの名無しさん:2009/06/03(水) 01:17:42
DBは一筋縄じゃいかないからなぁ。
VBAやってたころ、DAOからADOに切り替えたら結果セットを解放しないで
次のクエリを投げるパターンでコネクションが増えちゃって一時テーブルが
見えなくてエラーになったことはあった。というようなケースも考えられる。

699 :デフォルトの名無しさん:2009/06/03(水) 01:20:16
まあ無いとは思うけど、
Connectionを複数持ってて、実はPreparedStatementを切ったConnection側から生成していたとか・・・

700 :デフォルトの名無しさん:2009/06/03(水) 01:27:10
698の事例(ただ、これはSybaseでのケース)
一時テーブル作成。
更新クエリ。
参照クエリ。(結果セット戻る)
結果セット読みつつ一時テーブル参照クエリ。
ここで二本目のコネクションが内部的に張られていて、別セッションと見做されて
一時テーブルのオーナーでなくなっていた。
っーように結果セットの方式も関係しているから、聞くだけじゃわかんねー

701 :デフォルトの名無しさん:2009/06/03(水) 10:53:55
俺がOracel+TomcatのConnectionPoolingではまったのは、
ConnectionPoolingではストアドが実行できないって事。
ストアド用のコネクションを別に張ったらOKだった。

702 :デフォルトの名無しさん:2009/06/03(水) 11:33:28
ttp://www011.upp.so-net.ne.jp/flatsoft/soft/fs_about_fscalendercombo.html
これJDK1.6でSynth適用したりしてたら
一部が消えたり、日付のところが消えたり、上手く使えないんだけど
誰か代替出来る物とか修正方法知りませんか。

703 :デフォルトの名無しさん:2009/06/03(水) 13:48:32
Eclipse3.4
Seasar2
EclipseHTMLEditor
SAStrutsPlugin for Amateras

上の環境で${f:〜}を コンテンツアシスト使って
リスト出そうとしたらぬるぽ出るんだけどそういうもの?

Eclipseログの頭↓

!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
at net.sf.amateras.sastruts.SAStrutsUtil.getDisplayProperties(SAStrutsUtil.java:134)
at net.sf.amateras.sastruts.SAStrutsUtil.evalProperty(SAStrutsUtil.java:76)

704 :sage:2009/06/03(水) 21:01:32
SQLの流れを切ってすんません。教えてください。

DataInputStream dis = new DataInputStream( FileInputStream("file"));
みたいに、コンストラクタの引数にコンストラクタを入れること、
あるいは、メソッドの引数として戻り値を持ったメソッドを入れることって
何か呼び方がありますか?
入れ子?ネスト?インライン? じゃないんですよね…。

ついでにメリット、デメリットは?
○インスタンスを作らないから速い?
×スタックを消費するから多用すべきではない?
よろしくお願いします。

705 :デフォルトの名無しさん:2009/06/03(水) 21:38:17
どうでもいいがFileInputStreamにもnewいる
FileInputStreamのインスタンスも普通に作成される

差といえばFileInputStreamを受け取らないぶん
参照カウントが1低いくらいだろ

706 :クサれ脳みそ:2009/06/03(水) 21:43:44
可変長配列ArrayList<>に配列array[n]をaddしたいのですが、当然add(array[])してもうまくいきません。
forループなどで一個ずつ要素を加える以外になにかスマートな方法がありましたら教えていただきたいです。

707 :デフォルトの名無しさん:2009/06/03(水) 21:48:52
list.addAll(Arrays.asList(array));


708 :クサれ脳みそ:2009/06/03(水) 21:53:57
>>707
うまくいきました。こんな便利なメソッドあったんですね。

709 :704:2009/06/03(水) 22:20:29
>>705
確かにnewしないと

>FileInputStreamのインスタンスも普通に作成される
変数名の無いインスタンスが作成されるってこと?
参照カウント、調べてみます。

ありがとうございました。

710 :674:2009/06/03(水) 23:11:03
>>684 >>693
お返事ありがとうございます。
うまくパネルが1〜4まで表示されますか・・・
どうにも私のところではうまく表示されません。
setMinimumSizeも設定してみたのですが、パネル1,2が表示されません。

私のやりたいレイアウトと、現在の状況をBMPファイルにして
UPロダにあげましたので、見ていただくことはできますでしょうか。

◎現在の状況
ttp://www.dotup.org/uploda/www.dotup.org91580.bmp.html

◎やりたいレイアウト
ttp://www.dotup.org/uploda/www.dotup.org91584.bmp.html
やりたいレイアウトの方では、ボタンやラベルは省略してあります。
また、パネル4の色もわかりやすく黒くしてあります。(PG上は青です)


711 :デフォルトの名無しさん:2009/06/03(水) 23:23:49
>>710
現在の状況って最小サイズを設定する前の状況じゃないの?
最小サイズを設定するやり方が分からないならそう言ってくれ
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/686.java
でとりあえずパネルがいきなり消えたりはしないと思うが

712 :デフォルトの名無しさん:2009/06/03(水) 23:29:55
うちの環境だとここのろだにあげたファイルの最初の行が消えるのか
消えた行は//package master;なんでパッケージにするのが必要なら気をつけて
面倒だからこっちで試すときはコメントアウトした

713 :674:2009/06/03(水) 23:40:12
>>710
いえ、最小サイズを設定しても状況はかわらなくて困ってます。
ためしに、
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/686.java
を上書きして試してみても、パネル1と2が表示されません。
ソース上でおかしいところはないように思えるのですが・・・
うーん、なんでなんだろう

714 :デフォルトの名無しさん:2009/06/03(水) 23:46:39
自分のソースに導入するんじゃなくうpしたソースをコンパイルして実行したらどうなる?
それが普通に表示されるなら上書きした>>713の手元のソースに原因がある
それさえも駄目なら表示関係の環境のせいかもしれないけどそんなことはあまり起こらなさそう

715 :674:2009/06/03(水) 23:52:58
>>714
なるほど、了解しました。
試してみます。
ちょっと今日はこれでPCを落とさないといけませんので、
明日試してみて、また報告します。
お付き合いいただいてすみません。
ありがとうございました。

716 :デフォルトの名無しさん:2009/06/04(木) 02:12:30
あるlistが帰ってきて、その中から値をランダムに取得しようと思います。
listの大きさの範囲は0~無限です

どうすればいのでしょうか?

717 :デフォルトの名無しさん:2009/06/04(木) 03:16:40
>>716
大きさ無限のリストなんてありえないわけで
選択する時点でのリストが持っている要素数をList#size()で求めて
RandomクラスなりMath.random()なりを使って0以上要素数未満の整数の乱数値を1個作り
List#get(int)で要素を取得する
使用しているListの実装がInteger.MAX_VALUEより多くの要素を持つようなものなら
たぶんsize()ではなく正確な要素数を返す代替メソッドがあるはずなのでそれを利用し
乱数に関してもその要素数をカバーできるサイズのものを使用する

718 :デフォルトの名無しさん:2009/06/04(木) 03:41:23
>>716
無限リストで疑似乱数でも取得するのかい?

719 :デフォルトの名無しさん:2009/06/04(木) 09:30:09
0で除算
を防止する方法って無いですか?
すべての割り算に、分母が0でないかどうかチェックするよう
コーデイングするのは無理です。うっかり忘れてしまうことがあるんです。
特に、外人が書いたコードに多い。つか、外人は0除算の概念が無いのでは?と思うほど。

コンパイラ時に検出・・・とか、
ソースコードのバグ検出ソフトか何かで検出するとか・・・
実行時に例外を発生させるとか・・・
ソースコードの品質を向上させる、何かうまい方法は無いでしょうか?

720 :デフォルトの名無しさん:2009/06/04(木) 09:45:50
米国では
Chuck Norris can divide by zero.
だそうだからその関係かな。

アサーション使ったら?

721 :デフォルトの名無しさん:2009/06/04(木) 09:49:12
計算内容定式化できるなら一箇所に纏めてそこだけtrycatchすりゃいいやん
プログラムの構造そのものの問題だと思うよ

722 :デフォルトの名無しさん:2009/06/04(木) 10:50:42
>>719
DBの設計を工夫するとか、いろいろやってみる。
0除算が発生するケースは、そんなに無いと思うけどなあ。
もし一本のプログラムで大量の0除算が想定されるなら
頭で全てのチェックを一括でかけてはじいたらいいかな。
コンパイラオプションでエラーを強化できるけど、
それやると自分のところでは動いても、他の環境では動かないなどの
問題が出てくる。
そのあたりをトータルで考えて対処するのがいいね。

723 :デフォルトの名無しさん:2009/06/04(木) 11:16:57
値の範囲くらいチェック入れようよ

724 :デフォルトの名無しさん:2009/06/04(木) 12:25:57
>>719
UT ちゃんとやれば OK

725 :デフォルトの名無しさん:2009/06/04(木) 12:43:24
配列aの中身が{あ,い,い,う,あ,え,う,お}なら配列bが{あ,い,う,え,お}のように
配列内で重複しているものを整頓するようなプログラムを作りたいんですけどどうしてもうまくいきません
どうすればいいか教えてくれませんか?

726 :デフォルトの名無しさん:2009/06/04(木) 12:50:34
速さ気にしないならHashtableにキーとして格納して列挙するのが簡単

727 :デフォルトの名無しさん:2009/06/04(木) 12:50:41
>>725
まずソートやって、forで先読みで重複分を読み飛ばすロジックを
組めばいい。javaの質問じゃないだろう。
単なるロジックの話だ。
どの言語に限らず最後はロジック力が問われるので頑張ってね。


728 :デフォルトの名無しさん:2009/06/04(木) 12:52:50
>>726
>>727
ありがとうございます
引き続きがんばってみたいと思います

729 :デフォルトの名無しさん:2009/06/04(木) 13:14:55
listって最大何個の要素を追加できるんですか?

730 :デフォルトの名無しさん:2009/06/04(木) 13:59:26
>>720-723
レスありがとうございます。
もちろん、自分のコーディングしたところは0除算のチェックくらいしてるんですが、
問題はチャックノリスの野郎たちが書くコードなんです。
せかく0除算チェックを入れたのに、いつのまにかオーバーライドで別のメソッドをこしらえて
あいかわらず平気で0除算しやがるんです。

javaインタプリタは0で除算すると Infinity という値を返すように実装されているようです。
つまり、javaインタプリタは0チェクしてるわけです。チェックしてるのに平気で嘘の答えを返すんです。
ここで何らかのExceptionを発生させるようなオプションなどがあれば
0除算のコードを特定できるはず。
・・・そんな機能って無いですか???

731 :デフォルトの名無しさん:2009/06/04(木) 14:34:27
INFINITYが返るってことは少数使った演算か
整数だけならArithmetricExceptionがあるんだけどな

732 :デフォルトの名無しさん:2009/06/04(木) 16:07:53
カバレッジテストとかやってる人いる?
俺はjUnitと併せて、Coberturaを愛用してる。
ttp://cobertura.sourceforge.net/

ユニットテストでのテスト漏れとか、
条件分岐でテストしきれていない箇所なんかが検出されてなかなか便利。
他に、これと同様以上の機能をもったツールって無いかな。

733 :デフォルトの名無しさん:2009/06/04(木) 16:27:26
djunitじゃダメ?

734 :デフォルトの名無しさん:2009/06/04(木) 16:51:54
その二つって両方ともJUnitみたいにレポート吐ける?
夜間バッチでAntからJUnitの自動試験を実行してXMLでログ吐いて、
そのログをjunitreportで可視化してるんだけど、
それができるんなら入れてみたいな。

735 :デフォルトの名無しさん:2009/06/04(木) 17:37:40
>>733
djUnitの紹介ありがとう。
さっそく入れてみた。なかなかいいねぇ。
Eclipse上でカバレッジが完結できるのがいい。
動作速度も、coberturaより速い感じ。
ただ、UTF-8のソースコードからのレポートをエクスポートしたら
日本語のコメントが文字化けするみたい。
それ以外は問題なさげ。Coberturaと併用してみる。

>>734
coberturaはantタスクで動かせるから、バッチでレポート出力できるよ。
出力形式はXMLとHTML。

736 :デフォルトの名無しさん:2009/06/04(木) 22:07:57
間違えて0で除算するくらいなら
間違えて0でない値で除算している可能性もあるに違いない

737 :デフォルトの名無しさん:2009/06/04(木) 22:17:04
ちゃんと読んでなかったが
0除算チェックとかInfinityが嘘の答えとか
釣りに反応した俺がくやしい

738 :デフォルトの名無しさん:2009/06/04(木) 22:43:28
すまん意味がわからない

739 :デフォルトの名無しさん:2009/06/05(金) 00:59:57
馬鹿な俺に教えてください。

String test = null;
while((test = br.readLine()) !=null){
System.out.println(test)
}

スコープの内側だと当然readLineで読んだ物が入って出力されるけど、
スコープの外側でtestに入れた物を参照したいが出来ない。
読み出す方法あります?

740 :デフォルトの名無しさん:2009/06/05(金) 01:23:01
阿呆な質問してすまんかった
自己解決した

結局>>739だと読まれるたびに消えるから(ryってことですよね

741 :デフォルトの名無しさん:2009/06/05(金) 01:40:22
それを言うならスコープでなく(while)ループの内側、外側じゃないかな。
本当に(変数の)スコープの外側で参照するようなコードを書いたら、
実行段階でなくコンパイル段階でエラーになる。

742 :デフォルトの名無しさん:2009/06/05(金) 10:26:58
byte配列からint配列に値を詰め替えたいんだけど、
こんな感じでループ使う以外のやり方ってありますか?

byte src[] = {0x7F, 0x7F, -0x80, -0x7F};
int dst[] = new int[src.length];
for(int i=0; i<src.length; i++){
dst[i] = src[i];
}

逆に、int配列の各要素の下位8itを
byte配列に詰め替えるってこともやりたいのですが、
現状はbyte値に & 0xFFをおこないながら、
ループで回してます。

743 :デフォルトの名無しさん:2009/06/05(金) 13:52:48
>>742
それでいいよ。何か不具合でもあるの?

744 :デフォルトの名無しさん:2009/06/05(金) 16:03:41
すみません、ちょっとしたプロキシ(リクエストヘッダに動的にパラメータを付加するだけ)を作りたいと思っているのですが、参考になるサイトを教えていただけませんでしょうか。。。

下記のような機能にしたいです。
・適当な空いてるポート(xxxx)をリスンする。
・Httpリクエストのヘッダに、パラメータを付加する。
・レスポンスは特になにもする必要はない。
要は、IE等任意のブラウザで、プロキシをlocalhost:xxxxに設定すれば常にリクエストヘッダ(クエリストリング等では×)に、パラメータが付加されてWebサーバに渡される、というのが目的です。

Fiddlerでカスタムルールを使う等すれば機能的には十分なのですが、作ってみたく、足がかり的なヒントをいただけたら幸いです。
よろしくお願いいたします。


745 :デフォルトの名無しさん:2009/06/05(金) 17:11:21
>>744
Apache MINA使うのはどうだろう?
exampleに、proxy serverのコードがあった気がする。

746 :デフォルトの名無しさん:2009/06/05(金) 17:14:45
漏れが知ってる限りだと、
rubyのWEBrickってライブラリを使えば
10行くらいでプロキシが作れる。


ってのはこのスレ的にNGなんだろうな。

747 :デフォルトの名無しさん:2009/06/05(金) 19:12:08
thread = new Thread(this)って何してるの?

748 :デフォルトの名無しさん:2009/06/05(金) 19:40:50
なんとか入門書を読んで理解できるくらいまでになりました。
まだ一人でコードは書けないですけど他人のコードは
苦労しつつも読めるようになりました。
一重にこの掲示板のご教授のたまものです。

749 :デフォルトの名無しさん:2009/06/05(金) 20:10:07
>>747
Threadクラスのコンストラクタに自分を渡してnewしてる。

750 :デフォルトの名無しさん:2009/06/05(金) 20:52:40
文法的なことを訊いているのか、意味合い的なことを訊いているのか

751 :デフォルトの名無しさん:2009/06/05(金) 20:53:57
djUnitについて質問です。

テストソースを書く際にはDJUnitTestCaseを継承して書くと思うんですが、
要するにJUnit 4.x系の書き方はできないってことでしょうか?
@BeforeClassや@AfterClass、@Beforeと@Afterも動いてくれないみたいですが・・・。

752 :デフォルトの名無しさん:2009/06/06(土) 02:20:05
http://pc12.2ch.net/test/read.cgi/tech/1232627790/
★★ Java の宿題ここで答えます Part 67 ★★

753 :デフォルトの名無しさん:2009/06/06(土) 11:14:15
【ハウツー】JavaでAtomやRSS等のフィードを扱うならこれ! - ROME (2) 使ってみよう | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/articles/2007/04/28/rome/001.html
ここを参考にしてRSSのtitleやURL記事タイトルを取得できたのですが、
本文を取得することができません

これは別途手段を用意してURLから本文を抽出するしかないのでしょうか?

754 :デフォルトの名無しさん:2009/06/06(土) 11:58:54
>>753
本文、というのが RSS の話ならば、ですが。
こういう時の APIdoc です。

ROME, RSS and atOM utilitiEs for Java 1.0RC1 API
ttp://www.nilab.info/docs/rome/1.0RC1/
ttp://www.nilab.info/docs/rome/1.0RC1/com/sun/syndication/feed/synd/SyndEntry.html

755 :デフォルトの名無しさん:2009/06/06(土) 12:21:10
>>751
ぐぐると対応方法が結構な数出てくるわけだが。

756 :デフォルトの名無しさん:2009/06/06(土) 12:31:33
>>754
docを見てgetできるものすべてgetしてみたのですが、
取得したいものが得られませんでした

なので取得したURLを開けば、取得したい本文を得ることができるので
そのURLから本文を得る方法を知りたいと思いました。

Perl Tips | Java で、サイトにアクセスして HTML を取得する方法
http://perltips.twinkle.cc/java/get_html.php
で取得できるか試してみます
スクリプトでHTMLには書いてないと困っちゃいますけど・・・

757 :デフォルトの名無しさん:2009/06/06(土) 13:18:24
>>735
すみません、djunitのjcoverage.serについて教えて下さい。
Eclipse上でソース選択して実行などとするとjcoverage.serができますが、
Antから実行するとjcoverage.serができない現象で躓いています。
このjcoverage.serが存在しないとカバレッジのレポートが作成できないというのはわかったのですが、
Antで<djunit>を実行した際のserファイルの作成をAntに組み込む方法を教えて頂けないでしょうか。

<target name="djunit_xml" depends="mkdir_djunit_report_xml_dir" description="djUnit実行">
  <delete dir="${dir_djunit_report_xml}" /> <!-- xml出力先削除 -->
  <mkdir dir="${dir_djunit_report_xml}" /> <!-- xml出力先作成 -->
  <taskdef classpath="${lib_path_djunit}" resource="djunittasks.properties" />
  <djunit targetSrcDir="${dir_src_test}" printsummary="yes" virtualmock="yes" coverage="yes" asmversion="asm" showoutput="on" >
    <formatter type="xml" />
    <classpath>
      <pathelement path="${dir_bin}" />
      <pathelement path="${lib_path_djunit}" />
      <!-- 以下略(JUnit、asm、oro等です) -->
    </classpath>
    <batchtest todir="${dir_djunit_report_xml}">
      <fileset dir="${dir_src_test}">
        <include name="**\*Test.java" />
      </fileset>
    </batchtest>
  </djunit>
</target>


758 :747:2009/06/06(土) 15:48:57
>>749
飲み会でレスが見れんかった
わかった、ありがとう

759 :デフォルトの名無しさん:2009/06/06(土) 17:57:02
public class Sym {
public static void main(String[] args) {
String text = "";
text = text + String.valueOf((char)(args[0].charAt(1) - 5));
} }
Stringクラスは値の変更が出来ないと思っていたのですが、
textの内容を変更してるように感じるのですけど
どう考えたらよいのでしょうか。

760 :デフォルトの名無しさん:2009/06/06(土) 18:01:01
>>759
変わったのは text であって、String じゃないからねえ。

761 :デフォルトの名無しさん:2009/06/06(土) 18:04:55
実態と参照

762 :デフォルトの名無しさん:2009/06/06(土) 18:07:40
// String型を参照する入れ物であるtextは、""(空文字)を参照している
String text = "";

// String型を参照する入れ物であるtextの参照先を、
// text + String.valueOf((char)(args[0].charAt(1) - 5))で生成されたものに切り替える
text = text + String.valueOf((char)(args[0].charAt(1) - 5));

763 :デフォルトの名無しさん:2009/06/06(土) 18:08:43
>>761
textという同一の変数名で新しくオブジェクトを作って
前のは破棄したということでしょうか

764 :デフォルトの名無しさん:2009/06/06(土) 18:10:28
String text = "foo";
text = "bar";

textは変わったけど。 "foo"はどうなった?

765 :デフォルトの名無しさん:2009/06/06(土) 18:11:49
>>764
ごみになったんじゃないでしょうか

766 :デフォルトの名無しさん:2009/06/06(土) 18:17:10
文字列定数はGCの対象になりますか?

767 :デフォルトの名無しさん:2009/06/06(土) 18:24:55
Stringクラスのオブジェクトは内容の変更が出来なくて
変更したいならStringBufferを使いなさいと書籍などで見ました。
StringBufferだと参照はそのままで内容だけを変更できて、
Stringは変数名は同一で別参照にして新たにオブジェクトを
作れるのでしょうか、というのが疑問に思ったのです。
疑問といいますか、よくわかってないですね。

768 :デフォルトの名無しさん:2009/06/06(土) 20:46:10
JVMはもともと文字列プールというものを持っていて、
いわゆる文字型リテラルが指定された段階でプールにオブジェクトを作成し、そこへのポインタを返す。
同一の文字列が既にプールに在る場合は、そこへのポインタを返す。

769 :デフォルトの名無しさん:2009/06/06(土) 23:14:09
intern()だとどうなるんですか?javadocを見ると同じようですが・・・・

770 :デフォルトの名無しさん:2009/06/06(土) 23:16:55
StringBufferじゃなくてStringBuilderにしとけ

771 :デフォルトの名無しさん:2009/06/06(土) 23:19:49
文字列プールって八種テーブル?
もしそうなら動的に作成された文字列も格納されるのかな。

772 :デフォルトの名無しさん:2009/06/07(日) 00:06:09
>>771
されない。
明示的に String#intern() された奴か、コンパイル時の定数となる文字列だけ

773 :デフォルトの名無しさん:2009/06/07(日) 00:11:06
実装次第じゃないか

774 :デフォルトの名無しさん:2009/06/07(日) 00:14:46
intern()だけど、SUNの実装…というかOpenJDKだとどうなってんの?
あふれちゃってOutOfMemoryとかにならないよね。

775 :デフォルトの名無しさん:2009/06/07(日) 00:15:16
言語仕様にきっちり明記されてるのに実装次第とはこれいかに

776 :デフォルトの名無しさん:2009/06/07(日) 02:14:11
たしかに明記されてるな。

String literals-or, more generally, strings that are the values of constant
expressions (§15.28)-are "interned" so as to share unique instances,
using the method String.intern.

文字列定数はString.internを使って得た一意なインスタンス。

777 :デフォルトの名無しさん:2009/06/07(日) 13:03:33
Javaのソースを解析して、SJISの文字列を抜き出して、
できれば書き換えまで行うツールを作りたいのですが、

JavaってVBみたいに文字列を途中で改行して実装したりできますか?
\"に気をつけるくらいで簡単に作れますかね?
\uで文字コードで実装してるのは無視という仕様で問題ありません。

また、そのようなEclipseプラグインがあるなら、教えてください。

778 :デフォルトの名無しさん:2009/06/07(日) 14:14:34
コマンドラインだけど、やっぱnkfが一番では?
http://sourceforge.jp/projects/nkf/

779 :デフォルトの名無しさん:2009/06/07(日) 14:44:41
なにおぅ!
nkfなんてクソ
時代はqkcだオラ

780 :デフォルトの名無しさん:2009/06/07(日) 14:55:56
懐かしいなwwwww

781 :デフォルトの名無しさん:2009/06/07(日) 15:46:05
ソースがテキストがshift-jisでosがja_JP.UTF-8環境だと、
コピー先のファイルの文字コードは何になるの?
ただし、コピー先のファイルはjavaで新しくする


782 :デフォルトの名無しさん:2009/06/07(日) 15:50:49
コピーしただけだと、文字コードは変わらない。
コピーじゃなくてテキストとして読んで、テキストとして書くなら、書いた通りに動く。

783 :デフォルトの名無しさん:2009/06/07(日) 15:55:42
あんまりな回答なので補足。
テキストを読む時と書く時に、それぞれencode指定する。

784 :デフォルトの名無しさん:2009/06/07(日) 16:44:33
>>778
最新版のnkf-2.0.9は開発者が修正忘れていてnkf32dll.cに

130,132c130,135
< if (std_gc_ndx){
< return std_gc_buf[--std_gc_ndx];
< } else {
---
> // if (std_gc_ndx){
> // return std_gc_buf[--std_gc_ndx];
> if (!nkf_buf_empty_p(nkf_state->std_gc_buf)){
> return nkf_buf_pop(nkf_state->std_gc_buf);
> // --
> } else {

を当てないとコンパイルできなかったりする。

785 :デフォルトの名無しさん:2009/06/07(日) 16:51:13
ものすごく古い漢字コード変換プログラムであるnkfを、メンテナンスするプロジェクトです。

786 :デフォルトの名無しさん:2009/06/07(日) 17:06:29

くだらない話ですが、Javaって何も返却しないときは
末尾のreturn文って書かないのが通例なの?

サンプルコード打ち込んでいて、ちょっと気になった。

787 :781:2009/06/07(日) 17:06:53
>>782
文字コードに変化はないのか
ありがとう

788 :デフォルトの名無しさん:2009/06/07(日) 17:07:53
でもqkcってばUTF-8以前にお亡くなりになっちゃったからなぁ。

789 :デフォルトの名無しさん:2009/06/07(日) 17:11:29
>>786
書いても書かなくても問題は無いが、無駄な気がするから書いてない。だけだと思う。
好きずき。

790 :デフォルトの名無しさん:2009/06/07(日) 17:25:18
Eclipseを使っているのですがjavaファイルだけ保存してあった場合
次に起動するときプロジェクトを作ってクラスに同じファイル名を打ち込んでって感じでいちいちやってたんですが
javaファイルが10個超えてるときとか結構時間がかかってしまいます
まとめて一気にプロジェクトに入れる方法とかってありますか?


791 :デフォルトの名無しさん:2009/06/07(日) 17:32:16
何を言っているのか理解できないんだが、
とりあえずキミの行動は明らかにおかしい気がする

792 :デフォルトの名無しさん:2009/06/07(日) 17:39:16
mainスレッドからコンソールにメッセージを繰り返し
表示する2つのスレッドを起動して、joinしています。
(下記ソース。)

期待動作としては、msg2の表示が途中から出なくなって、
msg1が終了したら、msg2の出力が再開されるのかと思っていた
のですが、msg1/msg2が混在して表示されてしまう。

何が問題なのでしょうか?
joinの仕様を誤解していますかね?

■ソース(main)
PrintMessageWithInterval msg1 = new PrintMessageWithInterval("MESSAGE1", 1000, 15 );
PrintMessageWithInterval msg2 = new PrintMessageWithInterval("MESSAGE2", 3000, 10 );

msg1.start();
msg2.start();

msg1.join();
msg2.join();

793 :デフォルトの名無しさん:2009/06/07(日) 18:06:44
>>792
joinの仕様をどう理解しているか分からないから誤解しているかどうかも分からない。
もしかして、
> msg1が終了したら、msg2の出力が再開されるのかと思っていた
ってことは、msg1.join()がmsg2を止めると思ってる?
msg1.join();
msg2.join();
は単にmainスレッドがまずmsg1の終了を待ち、次にmsg2の終了を待つということで、
msg1とmsg2は互いに止めあったりはしない。

794 :デフォルトの名無しさん:2009/06/07(日) 18:08:22
>>792
うん、joinどころかスレッド自体を誤解しすぎていて、どう誤解しているのか理解できない。
スレッドで期待される動作は、並列に動くことだから。(コア数によっては並列でないこともある)

795 :デフォルトの名無しさん:2009/06/07(日) 18:38:58
urlを'/'を区切る処理を書いているんだけど、
http://java.sun.com/javase/ja/6/docs/ja/api/の場合、://の場所で""の要素も追加されるじゃん
そこで、""の要素を削除したいんだけど、test.remove("");とすると例外が発生してしまう
public void checkUrl(){
List<String> test = Arrays.asList(this.Url.split("/"));
test.remove("");
for(String output:test)
System.out.println(output);
}
なぜ?

796 :デフォルトの名無しさん:2009/06/07(日) 18:44:21
>>795
> 指定された配列に連動する固定サイズのリストを返します。
サイズを変更するならサイズ可変のリストにコピー。

797 :デフォルトの名無しさん:2009/06/07(日) 18:44:41
>>793
あ、そういうことか。
納得です。ありがとう。

798 :デフォルトの名無しさん:2009/06/07(日) 18:50:17
>>791
すいませんずっと使ってるわりによくわかってなくて
javaファイルだけあって別のパソコンとかで起動させる場合って普通どうやるんですか?

799 :デフォルトの名無しさん:2009/06/07(日) 18:58:12
VMを入れれば勝手に関連付けされると思うぞ

800 :796:2009/06/07(日) 18:59:31
>>795
コピーというのはArrayListやLinkedListなどでtestをラップするって意味ね。
でも、それをやるならプロトコル部分も込みで全体をsplitせずに、
URLに渡してファイル部分やパス部分を得てそれをクラックした方がいいんじゃないかとも思う。
URLのインスタンスを構築するときに正しいURLかどうかも分かるし。

801 :デフォルトの名無しさん:2009/06/07(日) 19:01:28
>>798
うーーーーん;; それはもしかして import の仕方だろうか?
空プロジェクトを作ってから、それに対して、ファイルシステムから import する。

802 :795:2009/06/07(日) 19:01:30
>>800
URLクラスね
わかった。thx

803 :デフォルトの名無しさん:2009/06/07(日) 19:11:03
それでintern()しまくるとアボーンしてJVMごと吹っ飛んじゃうってことでおk?

804 :デフォルトの名無しさん:2009/06/07(日) 19:35:27
>>798
SVNでも使っとけ

805 :デフォルトの名無しさん:2009/06/07(日) 19:37:37
昔の Tomcat は intern() したセッショントークンに synchronized かけることで
セッションのロックを実現しててコーヒー吹いた。

806 :デフォルトの名無しさん:2009/06/07(日) 20:06:37
家でJAVAの環境を整えたのですが、複数のファイルを一度にコンパイルする処理がうまくいきません。
(「シンボルを見つけられませんでした」と出ます)

実行環境は、jdk1.6.0_13で
javac main関数のあるファイル.java
と実行しています。
大学のパソコンの環境でならこの命令で実行できます。

807 :デフォルトの名無しさん:2009/06/07(日) 20:12:01
>>806
>>1
CLASSPATHに変なもの(おそらくquicktime)が設定されている。

808 :デフォルトの名無しさん:2009/06/07(日) 20:16:50
QTJavaがあっても、カレントがちゃんと設定されていれば動くだろ

809 :デフォルトの名無しさん:2009/06/07(日) 20:25:25
カレントわざわざ消してました…

ありがとうございます

810 :デフォルトの名無しさん:2009/06/07(日) 21:11:27
あるクラスSampleを設計している最中、引数無しのコンストラクタをオーバーロードして、
引数の異なるコンストラクタを作成することになりました。
すでに引数なしのコンストラクタの中には処理が記述してあり、
それをコピー&ペーストして新しいコンストラクタを作成するか、this()を使ってやるか、
どっちが良いのでしょうか?

811 :デフォルトの名無しさん:2009/06/07(日) 21:21:50
Javaの本についての質問いいですか?

解きながら学ぶJavaよりもう少し上のレベルで、
実用的なテクニックを学べる本が欲しいんですが、
何か良いものありませんか?

812 :デフォルトの名無しさん:2009/06/07(日) 21:25:39
>>810
経験的には、
引数なしのコンストラクタの中身を引数ありのコンストラクタに移動して
引数なしのコンストラクタから引数ありのコンストラクタを呼び出すことが多い。

813 :デフォルトの名無しさん:2009/06/07(日) 21:29:09
>>810
「引数が異なる」とあるが、
経験上で言えば、大抵は引数の一番多いコンストラクタに処理を任せていると思う。

Hoge() { this(null, null, null); }
Hoge(Param param3) { this(null, null, param); }
Hoge(Param param1, Param param2, Param param3) { /* 入力値検査後、処理等 */ }

814 :デフォルトの名無しさん:2009/06/07(日) 21:30:13
>>805
intern()の使い方から逸脱しすぎてるし、そりゃすごい離れ業だわ。
で、intern()したrefはどうやって消してんの?
javadoc読む限りじゃgc対象でもないじゃん。

815 :デフォルトの名無しさん:2009/06/07(日) 21:31:42
>>812
エー 810は親クラスのコンストラクタの中身をコピーして作るとか言ってないか?

>>810
super(...) を使う。

816 :デフォルトの名無しさん:2009/06/07(日) 21:35:12
>>810
this() を使うってどういう風に使うんですか?

817 :デフォルトの名無しさん:2009/06/07(日) 21:41:50
>>811
実用的なテクニックなど無い。実用的って夜のオカズに最適とかか?

やりたい目的をイメージできてるか?出来ていないなら、まずはそこから。

818 :デフォルトの名無しさん:2009/06/07(日) 21:42:21
オーバーロードとオーバーライドを区別していない人がいらっしゃいますね。

819 :815:2009/06/07(日) 21:44:46
ああ、そうか、すまんかった!!

820 :デフォルトの名無しさん:2009/06/07(日) 21:56:05
>>817
返信ありがとうございます。
プログラミングってそういうものですか@@
「●●を作りたい!」とかの具体的な目標は特に持ってませんでした。
Javaで何ができるのかまだわかってないので、
一通り使いこなせるテクニックが学べる本があればな、と。
まずは目標を作ることから始めてみます。

821 :デフォルトの名無しさん:2009/06/07(日) 21:58:57
>>811
Effective Java は読むべき本だと思います。
この本には実用的なテクニックとその背景にある考え方が説明されています。

822 :デフォルトの名無しさん:2009/06/07(日) 22:18:28
>>821
返信ありがとうございます。
Amazonで見ましたがかなり評価高いですね。
Javaの初心者本を終えてから読んでみます。
あと目標を作ります。
次のステップに進めるように頑張ります。
皆さんアドバイスしてくださってありがとうございました。

823 :デフォルトの名無しさん:2009/06/07(日) 22:29:52
オレも、明解JAVAと解きながら・・・の2冊は読破して
形は作れるようになったが、そこからの課題は・・・なんでしょう。

やっぱり、次の段階として、ゲームか電卓を作ることになるんでしょうか。

824 :デフォルトの名無しさん:2009/06/07(日) 22:35:19
>>822
Effective Java は初心者本を読み終えた程度だと、かなり難しいよ。
ある程度のプログラムを組んで悩んだ経験がないと全部は理解しきれない。

あと、買うならEffective Javaの第2版の方ね。古い方はもう売っていないと思うけど、念のため。

825 :デフォルトの名無しさん:2009/06/07(日) 23:33:04
実際には、Effective Java が難しいんじゃなくて
まともなプログラムを作るのはそこらへんの一般人が考えているより
ずっと難しいことだということ

826 :おっさんのちら裏:2009/06/07(日) 23:48:19
>>822-823
俺はperlとかawkの替わりにテキストデータ処理する目的で使い始めたなぁ。
あと、ゲームのセーブデータの改造、趣味の物理計算、FTP自作してWEBの
簡単更新したりとかもやった(blogの無い時代)。
そういったごく身近な目的がいいよ。モチベーションが維持できる。これ重要。
続けられなければ意味は無いからね。

でも複雑なコントロールは使わないのでグラフィックばっかに知識が偏ったり、
目的のためだから都合のいいC#に浮気したりとか、という落とし穴もある。
今のところWEBアプリ作るようになって出戻ってるがw

827 :デフォルトの名無しさん:2009/06/08(月) 00:27:49
>>826
オブジェクト指向理解してますか?
その様子だと一生理解できないんでしょうけど…
FTP自作できるなら困らないとは思いますがあなたにはjavaもc#もcの延長なんでしょうね。

828 :デフォルトの名無しさん:2009/06/08(月) 00:31:19
何煽ってんだお前

829 :デフォルトの名無しさん:2009/06/08(月) 00:40:18
オブジェクト指向って言いたいお年頃

830 :デフォルトの名無しさん:2009/06/08(月) 00:50:22
PerlのOOPなめんな

831 :デフォルトの名無しさん:2009/06/08(月) 01:25:25
Perlなぁ

832 :デフォルトの名無しさん:2009/06/08(月) 01:34:42
public void paint(Graphics g)
{
if(image == null)
return;

g.setColor(Color.white);
g.fillRect(0,0,800,640);
Random rnd=new Random();

for(int i=0;i<image.length;i++)
{ //座標(x.y)を設定
int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
int y=(int)(rnd.nextDouble()*(getSize().height-image[i].getHeight(this)));
g.drawImage(image[i],x,y,this); //画像を描写
}
}


画像を描写するプログラムの描写部分なのですが上のプログラムは
画像をオリジナルサイズでウィンドウ上にランダムに描画する ようになっているんですが
これを画像を一定のサイズ(80×80)で順番に並べて描画する ようにしたいんですがどうすればいいんでしょうか?
int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
int y=(int)(rnd.nextDouble()*(getSize().height-image[i].getHeight(this)));

の部分を変えたらいいのはわかるのですが、どう変えたらいいのかさっぱりわからないんです。

833 :デフォルトの名無しさん:2009/06/08(月) 01:46:33
>>830
Perl OO なめてなんかないけど、
中途半端なモジュール(クラスじゃないよw)作られるのが一番困る。

>>832
> int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
とりあえず rnd.nextDouble() を消したらどうなるか見てみよーか

834 :デフォルトの名無しさん:2009/06/08(月) 01:50:16
Perlはなめられてもしょうがないだろ

835 :デフォルトの名無しさん:2009/06/08(月) 01:59:21
プログラミング経験全くのゼロなんですが、javaを始める前にjavascriptを先にやった方がいいと聞いたのですがどうでしょうか?

836 :デフォルトの名無しさん:2009/06/08(月) 02:07:23
結果が目に見えるので、動くうれしさが大きい

からだと

837 :デフォルトの名無しさん:2009/06/08(月) 02:14:20
javascriptプログラムじゃないけどそれも良ければどうぞ

838 :デフォルトの名無しさん:2009/06/08(月) 08:18:20
>>832
g.drawImage(image[i],x,y,x+80,y+80,this);
もっと引数が多い版あります

839 :デフォルトの名無しさん:2009/06/08(月) 08:28:37
いまだに>>837みたいな発言をする奴がいることに驚いた。
JavaScriptなめすぎ。

840 :デフォルトの名無しさん:2009/06/08(月) 08:37:54
いやーなんでJavaScriptなんて紛らわしい名前なんだろ
はやく名前かえりゃいいのに

841 :デフォルトの名無しさん:2009/06/08(月) 08:44:16
何でJavaティーなんて飲み物あるんだよ
紛らわしいから改名すりゃいいのに

842 :デフォルトの名無しさん:2009/06/08(月) 08:51:06
それでString#intern()について知ってる人はいないんですか。

843 :デフォルトの名無しさん:2009/06/08(月) 09:17:26
そりゃjavascriptじゃなめられる

844 :デフォルトの名無しさん:2009/06/08(月) 10:17:24
>>757
この辺が参考にならんかな?
http://d.hatena.ne.jp/hituziotoko/20070815/1187195425

djUnitは、Eclipse上でしか使ってない。
antの場合は、今まで通りcoberturaを使ってる。
coberturaのHTMLエクスポートはグラフィカルなんで
Eclipseが無い環境ではこれが気に入ってる。

845 :デフォルトの名無しさん:2009/06/08(月) 10:32:13
>>745
レスありがとうございます。
MINAはちょと時間がかかりそうだったのでJettyというのを利用することにし、
とりあえず、『何もしないプロキシ』は作れました。
が、新たに問題発生。

doFilterでブッ込めばいいかなと甘い考えでいたのですが、考えてみたら、
HttpServletRequestには、getHeaderはあっても、setHeaderがないのです。。。
楽にリクエストヘッダに付加する術はないでしょうか。
よろしくお願いいたします。

846 :デフォルトの名無しさん:2009/06/08(月) 11:41:52
Socketプログラムについて質問です。
Socketを使用して簡単なネットワークアプリを作っています。

Windows上でサーバ(SocketServer)を起動し、クライアントで接続する事はできました。
このサーバをLinux上で実行させたところ、サーバ自体は動いていますが、クライアントからの接続で下記例外が発生します。
--
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
--
コネクションが拒否されているのですが、何が問題でしょうか?
Linux側の環境は、CentOS5.3、JavaはOpenJDK6、VMで立てたサーバでファイアウォールは切っています。
サーバの実行ユーザは一般ユーザ(admin)とrootの両方で試しましたが同じでした。
Windowsからtelnet でポートを指定した場合はサーバのログに反応があるのでポートは開いていると思います。

847 :846:2009/06/08(月) 11:43:02
追記
Linux側の設定や実行方法の問題であれば、誘導願います。

848 :デフォルトの名無しさん:2009/06/08(月) 12:10:27
>>840
ECMAScriptと呼んでみるテスト。

849 :847:2009/06/08(月) 12:10:39
自己解決しました。
パーミッションがLinux版の場合は厳しくなっているのが原因です
以下のポリシーファイルを修正することで解決しました。
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/security/java.policy


850 :デフォルトの名無しさん:2009/06/08(月) 12:38:01
>>848
ecma-262とjsは違う。標準化された言語仕様とその実装だ。

851 :デフォルトの名無しさん:2009/06/08(月) 12:57:00
>>842
既にこのスレでも山ほど出てるだろ
文字列プールなんて言葉まで出てきているのに、何が不満だ

852 :>>835:2009/06/08(月) 13:22:46
>>836
>>837

レスありがとうございます
参考にさせてもらいます

853 :デフォルトの名無しさん:2009/06/08(月) 18:15:17
文字列プールにinternされた文字列(の参照)を消すにはどうやるんですか?

854 :デフォルトの名無しさん:2009/06/08(月) 18:19:59
その辺の管理はプログラマの領分ではない

855 :デフォルトの名無しさん:2009/06/08(月) 18:22:23
>>853
消すと何かいいことあんの?

856 :デフォルトの名無しさん:2009/06/08(月) 18:24:50
参照が切れたらGCの対象になるから放っとけ

857 :デフォルトの名無しさん:2009/06/08(月) 18:28:33
jarからexeファイルを生成するツールで
ヒープサイズの設定を行えるものはありますか?

858 :デフォルトの名無しさん:2009/06/08(月) 18:38:32
>857
出来ないもんなのかと思ってexewrap調べた俺はなんなの?

 -a <vm-args> アプリケーション実行時の VM 引数を指定します。

859 :デフォルトの名無しさん:2009/06/08(月) 19:05:21
文字列プールってのはclassファイルの中にあるんで消せないしgc対象でもないんじゃないんですか?
String.intern()した文字列はどこに格納されてSUNやOPEN JDKの実装ではどうやって消してるんですか?
このあたりを聞いてるのですが・・

860 :デフォルトの名無しさん:2009/06/08(月) 19:11:50
もうお前このスレに来なくていいよ

861 :デフォルトの名無しさん:2009/06/08(月) 19:13:52
>文字列プールってのはclassファイルの中にある

ハァ?

862 :デフォルトの名無しさん:2009/06/08(月) 19:13:59
>>859
1行目を100回音読しろ
頭おかしいから

863 :デフォルトの名無しさん:2009/06/08(月) 19:15:13
誰かキチガイにJavaを使わせないようにするツールを作ってくれ。

864 :デフォルトの名無しさん:2009/06/08(月) 19:18:23
GCとはゴールデンクロスのことですか?

865 :デフォルトの名無しさん:2009/06/08(月) 19:24:58
任天堂のgamecubeだろ

866 :デフォルトの名無しさん:2009/06/08(月) 19:35:03
バイナリ実行ファイルのリソーステーブルか何かと勘違いしてんじゃね

867 :857:2009/06/08(月) 19:47:10
>>858
exewrap -g -a -Xmx512m -i [icoファイル] [jarファイル]とやってもうまくいきません。

868 :デフォルトの名無しさん:2009/06/08(月) 21:15:18
>>827
ぶはは、javaもc#もcの延長。は否定できないな。
でも、リスナとかawtってOOPの理解無しには使えないだろ?
古典のデザインパターン程度の基本は押さえざるを得ない。

ただ、OOPなんてものは手段であって、目的にならない。
目的のない勉強なんてクソ食らえだ。

869 :デフォルトの名無しさん:2009/06/08(月) 21:21:42
>867
俺の環境だとうまく行くんだが。
Runtime.getRuntime().maxMemory()で確認すると確実

870 :デフォルトの名無しさん:2009/06/08(月) 21:21:53
こういうガイキチもどうにかしたいものだ

871 :デフォルトの名無しさん:2009/06/08(月) 21:56:46
リスナって言うのはイベントの意味でいってるんだろ?
OO関係ないじゃんw

872 :デフォルトの名無しさん:2009/06/08(月) 21:57:56
1スレで香ばしいのが大量に湧いたなw

873 :デフォルトの名無しさん:2009/06/08(月) 22:07:00
>>855,856
消さないとintern()しまくったときメモリエラーでJVMが落ちませんか?
簡単な攻撃方法だと思うんですけど・・

874 :デフォルトの名無しさん:2009/06/08(月) 22:12:07
それってListにnewしたオブジェクトを延々と詰め込んでいくのと本質的に何が違うんだよ

最終的にメモリが足んなくなって例外返すだけだろバーカ

875 :デフォルトの名無しさん:2009/06/08(月) 22:16:56
JVMのクラックでもしたい人なのかな?
放置しろ放置。

876 :デフォルトの名無しさん:2009/06/08(月) 22:18:10
言語仕様ちゃんと読んでないでしょ。
internはListのとは一味違いますよ?

877 :デフォルトの名無しさん:2009/06/08(月) 22:21:44
じゃあ読んで自己満ぶってろ
おわり

878 :デフォルトの名無しさん:2009/06/08(月) 22:22:05
本当にうざいなw
ちょっと埋めてやる。

879 :デフォルトの名無しさん:2009/06/08(月) 22:22:18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

880 :デフォルトの名無しさん:2009/06/08(月) 22:22:21
.

881 :デフォルトの名無しさん:2009/06/08(月) 22:22:27
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

882 :デフォルトの名無しさん:2009/06/08(月) 22:22:34
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

883 :デフォルトの名無しさん:2009/06/08(月) 22:22:41
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

884 :デフォルトの名無しさん:2009/06/08(月) 22:22:45
再開

885 :デフォルトの名無しさん:2009/06/08(月) 22:25:39
本当に妙なの沸いてるなあ。

886 :デフォルトの名無しさん:2009/06/08(月) 22:29:05
この時期はしょうがないね

887 :デフォルトの名無しさん:2009/06/08(月) 22:29:50
暑くなってきましたね〜。

888 :デフォルトの名無しさん:2009/06/08(月) 22:30:32
入社して待機状態の新入社員の質問みたいだな
そのうち抽象クラスやインターフェースが出てきそうだ

889 :デフォルトの名無しさん:2009/06/08(月) 22:34:21
3日続けて同じ質問を繰り返す暇があるなら実行してみればいいのにな。

890 :デフォルトの名無しさん:2009/06/08(月) 23:07:22
>>889
君いたなニートじゃないんでヒマがないんですよ・・・

891 :デフォルトの名無しさん:2009/06/08(月) 23:12:02
つーかjava intern gcでぐぐればすぐでてくるじゃねぇか・・・
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7478&forum=12&start=40
これでいいんだろ?

892 :デフォルトの名無しさん:2009/06/08(月) 23:14:29
>>890
時間が作れない連中は無能評価されているのはわかるか?

893 :デフォルトの名無しさん:2009/06/08(月) 23:15:17
>>877-884
荒らすなボケ

894 :デフォルトの名無しさん:2009/06/08(月) 23:30:11
>>890
PCにつきっきりでないと何も出来ない無能君なのか?君は

暇がなさそうなのは分かるよ
誤字ってるからね

895 :デフォルトの名無しさん:2009/06/08(月) 23:31:30
お願いだからNG処理してスルーしてくれ・・・。

896 :デフォルトの名無しさん:2009/06/08(月) 23:33:11
>>891
ありがとうございます。
といっても言語仕様にのってないところだったんで S U N や O P E N JDK の実装ではどうなってるかなんですけど。

897 :デフォルトの名無しさん:2009/06/08(月) 23:33:54
Sunに乗り込んで聞いてこいカス

898 :デフォルトの名無しさん:2009/06/08(月) 23:34:38
わざとNGに載らないようにするなよ。
こんなクズに答えてる奴も死ねよ。

899 :デフォルトの名無しさん:2009/06/08(月) 23:37:36
もうだめだこのスレ

900 :デフォルトの名無しさん:2009/06/08(月) 23:39:52
末期だなw

901 :デフォルトの名無しさん:2009/06/08(月) 23:49:14
>>896
そもそもスレ違い

902 :デフォルトの名無しさん:2009/06/08(月) 23:50:54
レスすんな。

903 :デフォルトの名無しさん:2009/06/08(月) 23:52:03
なぜこのプログラムは出力に「ok」が出ないのか教えてくれませんか

public class Sample {
static String a="abc";
static String b;
public static void main(String[] args) {
b="";
b=b+'a'+'b'+'c';
if(b==a){
System.out.println("ok");
}

}
}

904 :デフォルトの名無しさん:2009/06/08(月) 23:58:46
全力でスルー

905 :デフォルトの名無しさん:2009/06/09(火) 00:02:41
==は参照アドレスの比較だから。

906 :デフォルトの名無しさん:2009/06/09(火) 00:04:48
>>905
>643

907 :デフォルトの名無しさん:2009/06/09(火) 00:06:07
equalsegnorecase
を使う癖つけろ

908 :デフォルトの名無しさん:2009/06/09(火) 00:08:42
いや、それはねーわ

909 :デフォルトの名無しさん:2009/06/09(火) 00:09:42
使う頻度多いだろ

910 :デフォルトの名無しさん:2009/06/09(火) 00:12:48
そうでもなくね。

911 :デフォルトの名無しさん:2009/06/09(火) 00:14:58
大文字小文字混在してる中で同一比較って、何に使ってるの?
勝手に画面系だと創造してみる

912 :デフォルトの名無しさん:2009/06/09(火) 00:49:49
javascriptの中にjsp記載しても動くのでしょうか?

913 :デフォルトの名無しさん:2009/06/09(火) 00:59:35
サーバーサイドjsですね。わかります。

>>912
>>1

914 :デフォルトの名無しさん:2009/06/09(火) 01:13:12
大小文字比較は普通toLowercase()とかで整形しね
誤動作のもとだろ文字比較厳密にやらんと
もしもっと良い方法有るなら教えて欲しいけど
ところにより作法違うんだねこの辺

915 :デフォルトの名無しさん:2009/06/09(火) 01:34:19
toLowercase()したあとの比較は厳密じゃないだろ。

916 :デフォルトの名無しさん:2009/06/09(火) 01:35:45
大小混在比較の場合だけそうしてそうじゃない場合は普通にやんね
よくバグらないな

917 :デフォルトの名無しさん:2009/06/09(火) 01:48:23
916だけど
別に非難してるわけじゃないからね
ただ最初にこの作法で覚えちゃったから驚いただけ

918 :デフォルトの名無しさん:2009/06/09(火) 01:54:08
このスレの人は答えられない質問があるととたんに冷たくなるんですね。
自分は何の努力もしてないのに人を非難するだけじゃ、いつまでたっても友達は出来ませんよ。

919 :デフォルトの名無しさん:2009/06/09(火) 02:00:26
いやそうでも無いよ

920 :デフォルトの名無しさん:2009/06/09(火) 02:11:50
>>916
厳密な比較って言っただろ?
文字列の厳密な比較って言ったら大文字小文字無視はまずくね?
比較する場合って汚染された値の場合が多いんだがそうじゃなきゃ最初から大文字か小文字どっちかに統一して文字列持ってるかじゃないの?

921 :デフォルトの名無しさん:2009/06/09(火) 02:24:16
うん
でも混在そのものが厳密じゃないじゃん

922 :デフォルトの名無しさん:2009/06/09(火) 02:25:27
でも比較他どうやってるの??

923 :デフォルトの名無しさん:2009/06/09(火) 09:11:32
>903 1嫁
・String に == は使うな。equals() を使え。

924 :845:2009/06/09(火) 09:25:25
自己解決しました!
Jettyのorg.mortbay.servlet.ProxyServletをほぼ流用で出来ました。
Proxyサーバからリクエスト先に投げるHttpServletRequestに、
クライアントからのリクエストのヘッダを全部にコピーする処理のところで、
情報付加の目的が果たせました。


925 :デフォルトの名無しさん:2009/06/09(火) 11:26:51
MINAか
俺も最近弄り始めたんだよなあれ
JERONIMOが今一良くわからん

926 :デフォルトの名無しさん:2009/06/09(火) 11:37:29
MINAは面白そうだな。
サンプルが最初からあれこれ付いてるのがいい。

今はNIOのFileChannelとバッファをもっと簡単に使える
自分用APIをシコシコと作ってる。
入出力も、同じメソッドの引数を1つ変えるだけで
ByteBuffer#allocate()とかdirectAllocate()とか
ByteBuffer.MAP_MODEなんかを自由に使い分けられる。
できあがったら、ひっそりとgoogle codeあたりで
apacheライセンスで流してみよう。。。

927 :デフォルトの名無しさん:2009/06/09(火) 14:07:56
FileWriterクラスは効率が悪くて、
ラップしてBufferedWriterクラスを使えば効率が良くなって
さらにラップしてPrintWriterクラスを使えばもっと効率が良くなって・・・
らしいのですが、ということは、
大抵の人は、PrintWriterクラスを使うと考えていいのでしょうか。

928 :デフォルトの名無しさん:2009/06/09(火) 14:35:03
JTreeで、格ノードに個別のインデックス値を設定する方法ない?
Win32APIのTreeViewではできたんだが、JTreeでどうやるのか
さっぱり分からない

929 :デフォルトの名無しさん:2009/06/09(火) 14:42:19
Win32なんて関係ないからjava初心者だって言えば良いよ
nodeにname設定すれば表示されね

930 :デフォルトの名無しさん:2009/06/09(火) 14:44:12
BufferedInputStreamにFileInputStream詰め込んでバッファサイズ調整するべ普通

931 :デフォルトの名無しさん:2009/06/09(火) 14:56:11
>>929
name設定とは?ググッても一つもヒットしない・・・

やりたい事は、ノートが選択されたら、その各ノードごとの
処理をするという単純なことなんだけど
今までやってたWin32APIだと、各ノードごとに数値を設定して
swich分で処理するとい単純な処理で出来たけれど
JTreeだとどうしていいやら・・・

getUserObjectでテキスト値取得して判別する処理でやったら
同じテキスト値があったので駄目でした、同じテキスト値でも
格ノードで別の処理をしたいので

932 :デフォルトの名無しさん:2009/06/09(火) 15:02:58
過去スレで既出かもしれませんが教えてください。

...i586.exe
...i586-p.exe
...i586-p-s.exe

など、配布ファイル名が複数ありますがどういう意味なんでしょうか?

933 :デフォルトの名無しさん:2009/06/09(火) 15:17:33
nodeのメソッド見た??

934 :デフォルトの名無しさん:2009/06/09(火) 15:17:56
JDK1.6.0_14だと、Coberturaが動かないな。

935 :デフォルトの名無しさん:2009/06/09(火) 15:18:17
プログラムも始めてなんじゃないのか

936 :デフォルトの名無しさん:2009/06/09(火) 15:21:37
「格ノード」って書いてあるから、
Java言語以前に日本語もままならないのかも。

937 :デフォルトの名無しさん:2009/06/09(火) 15:23:21
>>931
Name って java.awt.Component じゃないの?
TreeXxxListener もあるけど。

938 :デフォルトの名無しさん:2009/06/09(火) 15:32:08
JTreeにname値はないわな
TreeViewと勘違いしてる

939 :デフォルトの名無しさん:2009/06/09(火) 15:37:49
>>933
それらしきものはないですね

>>937
java.awt.Component?
それをどう応用したら良いか分からんのですが

>>938
TreeViewにはあったんですけどね

940 :デフォルトの名無しさん:2009/06/09(火) 15:42:21
ノードのコンストラクタで変数String指定してやるとそれがTree上で表示されるけど
それじゃダメなの???

941 :デフォルトの名無しさん:2009/06/09(火) 15:45:32
JTreeとノードや他のクラスとの関係が今一分かって無いんじゃないのかな
少しチュートリアル読んでみたら?


942 :デフォルトの名無しさん:2009/06/09(火) 15:46:09
>>940
はい、その事は>>931で書きました
Stringで指定したテキストを取得して判別していたのです最初は

でも、同じテキストのノードがあって駄目だったんですよ
同じテキストでも、違うノードなら違う処理をさせたいので

で、それぞれのノードに個別の数値を設定できたら良いなと思ったんですが
その方法が分からなくて

943 :デフォルトの名無しさん:2009/06/09(火) 15:46:14
JTreeは使ったこと無いけど、
各ノードに個別のインデックス値を設定する必要があって
それを実現する方法がJTreeに無いなら、
JTreeを継承して新たなクラスを作ればいいのでは?

944 :デフォルトの名無しさん:2009/06/09(火) 15:50:03
>>941
チュートリアルは読んでみたんですけどね
ちょっとここ1週間行き詰っているので、何かヒントもらえませんかね

>>943
個別のインデックス値を返すメソッドの作り方が思いつきません・・・

945 :デフォルトの名無しさん:2009/06/09(火) 15:50:16
同じStringってのが昨日の話しじゃないけど==で同一と認識されるものなのか
.equals()で同一と認識されるものなのかと言う話はあるけど
後者なら俺は普通に同じテキスト表示されてるよ


946 :デフォルトの名無しさん:2009/06/09(火) 15:53:08
945はDefaultTreeNode拡張してfield増やして使ってるけどね
そういえばNodeは何を拡張した??

947 :デフォルトの名無しさん:2009/06/09(火) 15:58:19
ごめん今見たらDefaultMutableTreeNodeだな

948 :デフォルトの名無しさん:2009/06/09(火) 16:00:21
>>929
君、いつも一言多いんだよね。友達少ないでしょ?w

949 :デフォルトの名無しさん:2009/06/09(火) 16:00:50
>>946
DefaultMutableTreeNodeです

ああ、さっぱり分からない
1週間悩んでとうとうここで相談することにしたんですけど
なんとかなりませんか

950 :デフォルトの名無しさん:2009/06/09(火) 16:01:21
いや実際そうでしょ初心者に対する場合とベテランとでは接し方変えるよ
普通はね

951 :デフォルトの名無しさん:2009/06/09(火) 16:02:34
コンストラクタは
super(String)で作って有るんだよね

952 :デフォルトの名無しさん:2009/06/09(火) 16:04:56
>>948
それ以前にname設定とか言ってる時点で>>929はただの馬鹿でしょ

953 :デフォルトの名無しさん:2009/06/09(火) 16:06:13
問題解決できないなら書き込まんで良いよ

((DefaultTreeModel)jTree1.getModel()).reload();
addした後でこれやった?

954 :デフォルトの名無しさん:2009/06/09(火) 16:11:53
>>953
やってみましたが、解決の手段にはならないようですが・・・

955 :デフォルトの名無しさん:2009/06/09(火) 16:13:29
だとするとNodeを変にオーバーライドしなきゃそうはならんから
その辺だね

956 :デフォルトの名無しさん:2009/06/09(火) 16:16:53
初心者独特のミスだな

957 :デフォルトの名無しさん:2009/06/09(火) 16:23:38
>>955-956
うーん?何か話がおかしな方向へいってませんか?

えーと、やりたい事はシンプルで
JTreeのノードが選択されたときに、その選択されたノードごとの
処理を行いたいのです

最初に行った方法は、(String)node.getUserObject()で
ノードに設定されたテキストを取り出して、そのテキストごとに
処理させるという方法でした

しかし、この方法だと、テキストが同じノードがあった場合
同じ処理に飛ばされてしまいます
同じテキストでも、違うノードなら、違う処理がしたいのです

ノードが選択されたとき、それが同じテキストであっても
別のノードだと判別する簡単な方法はありますか?

958 :デフォルトの名無しさん:2009/06/09(火) 16:30:33
それ2つのノードが==になっちゃうノードの生成して無い?


959 :デフォルトの名無しさん:2009/06/09(火) 16:33:09
参照アドレス比較すりゃいいだろ…

960 :デフォルトの名無しさん:2009/06/09(火) 16:38:46
まずノードの選択が上手く出来てるかどうかも怪しいな
TreePath selected = jTree1.getAnchorSelectionPath();
ChartTreeNode node = (ChartTreeNode)selected.getLastPathComponent();
return node;
例だけど
こういうのでちゃんとセレクトされてるかどうか

普通の人では起こらない現象だからどこか変な箇所が有ると思うよ



961 :デフォルトの名無しさん:2009/06/09(火) 16:43:11
そして文字列プールの話に戻るのであった。

つかNodeの違いを調べたいのに
わざわざ表示されてる文字列を取得するとはコレイカニ。

962 :デフォルトの名無しさん:2009/06/09(火) 16:43:46
確かに

963 :デフォルトの名無しさん:2009/06/09(火) 16:51:21
初心者は思いもよらぬところで間違うから
難しいな

964 :デフォルトの名無しさん:2009/06/09(火) 17:16:49
質問スレなのだから、質問者にもう少し優しくても良いのでは。
少なくとも人格攻撃は不要だと思います。

965 :デフォルトの名無しさん:2009/06/09(火) 17:18:04
人格じゃなく技術技量に対してだから良いと思う

966 :デフォルトの名無しさん:2009/06/09(火) 17:18:06
昨日あたりから妙なのが沸いてるんで。
2〜3日すれば平常に戻ります。たぶん。

967 :デフォルトの名無しさん:2009/06/09(火) 17:18:50
だな

968 :964:2009/06/09(火) 17:40:18
すみません。人格攻撃は言い過ぎました。

969 :デフォルトの名無しさん:2009/06/09(火) 17:40:54
全然OK気にして無い

970 :デフォルトの名無しさん:2009/06/09(火) 17:58:45
>>950
ゴズリンなんか神だけどどう接するの?
というか、どうやってその人が神か分かるんだ?

971 :デフォルトの名無しさん:2009/06/09(火) 18:00:21
みなさんは今どんなアプリケーションをjavaで作ってるんですか?

972 :デフォルトの名無しさん:2009/06/09(火) 18:04:39
書き出しで分かったでしょ今回は

今は新型のクローラプログラム作ってる

973 :デフォルトの名無しさん:2009/06/09(火) 18:05:04
コレクションには、ArrayListクラスやHashMapクラスなどが
あるのですけど、配列のような感じがすます。
これらをコレクションというように呼ぶのはどういう感触なんでしょうか。
コレクションというと収集というイメージなんですけど。
何故コレクションと呼ぶのか、イメージが涌きません。

974 :デフォルトの名無しさん:2009/06/09(火) 18:35:35
>コレクションというと収集というイメージなんですけど。

まさにコレじゃん。

975 :デフォルトの名無しさん:2009/06/09(火) 18:43:20
そうなんか俺そういうとこ疎いが
集合って意味合いなのかい?

976 :デフォルトの名無しさん:2009/06/09(火) 18:44:31
データ収集をする色んなクラスをまとめたものなんですか
それとも
便利で有用なクラスを収集してまとめたものなんですか。

977 :デフォルトの名無しさん:2009/06/09(火) 18:47:15
JTree tr = (JTree)e.getSource();
x = e.getX(); y = e.getY();
TreePath path = tr.getPathForLocation( x, y );
if( path != null ){
DefaultMutableTreeNode slct = (DefaultMutableTreeNode)
path.getLastPathComponent();
tmp = category;
n = tmp.length;
for (i = 0; i < n; i++)
if (tmp[i].equals(slct) == true)
break;
} else return;
if (i >= 3) {
choiceRightClick = i;

俺の駄ソースから、このchoiceRightClickがindexな悪寒

978 :977:2009/06/09(火) 18:59:03
JTreeを作るほうはこう。

DefaultMutableTreeNode[] category = new DefaultMutableTreeNode[n + 1];
category[0] = new DefaultMutableTreeNode( "A" );
for(i = 0; i < n + 1; i++) {
category[i] = new DefaultMutableTreeNode( "Test" );
category[0].add( category[i] );
}
JTree tree = new JTree(category[0]);

979 :977:2009/06/09(火) 19:00:12
むぅ。iは1からだな

980 :928:2009/06/09(火) 19:04:23
すいません、ちょっと席はずしてました

>>958
えーと、ノードで比べてるんじゃなくて上にも書いたとおり
選択されたノードに表示されてる文字列で比べているので
表示されてるテキストが同じなら、同じになってしまうのです

>>959
参照しているアドレスで比較しても、同じテキストなら
同じ処理がされしまうわけで・・・

>>960

DefaultMutableTreeNode node =
(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();

if (node != null){
String data = (String)node.getUserObject();

DefaultTreeModel tm = (DefaultTreeModel)tree.getModel();
tm.nodeChanged(node);
}

>>977-978
ちょっと今から見て考えてみます

981 :デフォルトの名無しさん:2009/06/09(火) 19:06:35
何か良いやこの初心者誰か何とかしてやって

Nodeコピーして作成して無いかって事な
そもそもデバッグして自分で発見できる範囲のことだろこれ


982 :デフォルトの名無しさん:2009/06/09(火) 19:08:14
selectに問題が有りそうなのは見当付くが
初歩的なコードミスっぽいよな

983 :デフォルトの名無しさん:2009/06/09(火) 19:12:21
でも内容的にそう大したコードじゃなさそうだから一回出してみ

984 :デフォルトの名無しさん:2009/06/09(火) 19:13:07
>参照しているアドレスで比較しても、同じテキストなら
>同じ処理がされしまうわけで・・・

これが既に意味わかんない

985 :デフォルトの名無しさん:2009/06/09(火) 19:14:08
javaのプログラミング環境なんですが、
Java SE Development Kit (JDK)をDLして
保存したはずなんですがインストール方法
がいまいちわかりません。
jdk-6u2-windows-i586-p.exeファイル名もないのですが。

986 :デフォルトの名無しさん:2009/06/09(火) 19:16:02
とりあえず次を立ててくるから一時シャラップ。

987 :デフォルトの名無しさん:2009/06/09(火) 19:18:35
【初心者】Java質問・相談スレッド127【歓迎】
http://pc12.2ch.net/test/read.cgi/tech/1244542623/



988 :デフォルトの名無しさん:2009/06/09(火) 19:21:59
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode( "A" );
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( "A" );

質問者は上の2文を実行した時 node1==node2 になるのは分かってる?

989 :デフォルトの名無しさん:2009/06/09(火) 19:22:12
>>987 乙華麗酸

990 :988:2009/06/09(火) 19:22:37
ごめん間違えた。 node1!=node2 ね。

991 :デフォルトの名無しさん:2009/06/09(火) 19:23:08
次スレ乙

>>985
インストール用のファイルが無いなら再ダウンロード。
まぁ、JDK 無くとも JRE 有れば Eclipse は動くから。

992 :デフォルトの名無しさん:2009/06/09(火) 19:24:50
>>984
ノードの参照アドレス比較しろよって言ってるのに、頑なにテキストの比較しようとしてるよな。
そういう持ちネタなのかと思えてきた。

993 :977:2009/06/09(火) 19:29:19
あれ、わかんなくなってきた。
node1.toString().equals(node2.toString())は等しいけど、
node1.equals(node2)は等しくはないよね?

994 :デフォルトの名無しさん:2009/06/09(火) 19:35:04

>>987
ありがとん

995 :デフォルトの名無しさん:2009/06/09(火) 19:38:01
Node node1 = new Node("A");
node1 = node2;

にしないとtrueにならんね
簡略でごめん

996 :デフォルトの名無しさん:2009/06/09(火) 19:40:02
node2 = node1;

更にごめん

997 :デフォルトの名無しさん:2009/06/09(火) 19:42:59
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode( "A" );
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( "A" );

System.out.print(node1==node2);
System.out.print(node1.toString().equals(node2.toString()));
System.out.print(node1.equals(node2));

上からfalse,true,false

998 :デフォルトの名無しさん:2009/06/09(火) 19:45:42
Stringクラスのequalsメソッドは信じられるってことですか

999 :デフォルトの名無しさん:2009/06/09(火) 19:46:04
つまり
俺が疑ってるのはNodeを生成してaddする際に
Node node2 = node1;

にして無いかって事だな
俺らからするとありえんけどな

1000 :デフォルトの名無しさん:2009/06/09(火) 19:47:32
どっちにしてもコード出してもらった方が早いな

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

284 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)