【初心者】Java質問・相談スレッド126【歓迎】
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を追加したいんだけどどうしたらいいのか分からん 誰か教えてくれないか?
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;
NIOのMappedByteBufferを取得する際、 FileChannel.MapMode.PRIVATE を使う意味ってある? バッファ内のデータは操作できるけど、 マップ対象の物理ファイルには何ら反映できないんでしょ? ファイル側に影響無しでテストなんかをしたい場合用?
システム開発中に配属されて苦悩中
開発環境は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
で御願いします。
むーずーかーしーいー
なんでrarなんだよw
テキストフィールドの中身をノーチェックでsqlにつないだりしたら、 ブチ殺されるだろ。
何というSQLインジェクション推奨コード・・・
違う観点での話だけど、mysqlでSUPER権限あるユーザで繋ぐと、 トランザクションが有効にならないんじゃなかったっけ? バージョンわからんし、まあそもそもサンプルなんだろうけど。 つーか、無闇にフィールドをpublicにしないで、privateにしてgetter/setterを作ろうぜ。 jLabel1.setTextの最初の空文字は何ぞや?文字列連結として扱わずに、素直にparseしよう。 DB繋ぎっぱなのは……例外の捕捉は……まあサンプルか……。
13 :
デフォルトの名無しさん :2009/05/13(水) 21:39:33
javaで画面に折れ線グラフ書きたいんですけど、 どうすればいいでしょうか。 項目は日付と売上金額です。
>>13 そーゆーライブラリを拾う/買う。
Java2Dで自力描画。
JFreeChartあたりはどうよ
>>前スレ992 ありがとうございます。
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か
何につかうんすか
とりあえず教えて君でここにカキコしてるうちに調べてこよう。
SQLインジェクション対策だったら、 最低限として、jakarta-commons-lang/StringEscapeUtils#escapeSql() とか、PreparedStatementあたりを使っておけばよいのでは?
21 :
8 :2009/05/14(木) 11:07:18
>>20 PreparedStatementでもインジェクション対策になるんだ
参考になります。有難う。
どのみち速度向上の問題もありあそうだし
PreparedStatement使ってみる。
クラス分け云々というよりはカプセル化だな 本当にお遊びレベルで書いているならともかく、 このレベルだったら慣れのためにも常に意識するべき せっかくオブジェクト指向言語を学んでいるんだから、 完全に覚えろとは言わないけれど、 そういう考えがあるという事実を認識しておいた方がいい ConnectionやStatement、ResultSetのcloseはfinallyで行えばいい 自分でDB接続関連の汎用クラスを作ってみると勉強にもなるよ
23 :
8 :2009/05/14(木) 11:20:42
>>22 ふむ。
まずカプセル化の概念から探してみるかなぁ。
有難う。
あ finalizeじゃないfinallyだ
てことは、毎回はcloseしないでいい訳ね。
mainでDBに接続させるのと最初のコンストラクタのところでDBに接続させるのって
どっちがいいんだろ。
いまんところはKojin(){}の中とかに書いちゃってるけど。
あれ これってコンストラクタであってたっけ?_?;
だっはー javaやって1ヶ月くらいになるけどぜんぜん覚えられない
>>23 素のJDBCでのコーディングは勉強になるけど、
なんとなく掴めてきたら、
jakartaのDbUtils使うといいかも。
JDBC直接よりは解りやすくコード量も少なめで、
O/Rマッピングツール使うよりはシンプル。
情報源やサンプルコードも、ググればたんまりと出てくる。
25 :
8 :2009/05/14(木) 12:31:31
>>23 なんていうかお前らすごす
おかげで色々と進みそうな予感がしてきた。
あくまで予感だけな予感だけ。
とりあえずJDBC関連の事とかもあさってみる。
正直昨日パッケージ変えてライブラリにMySQLドライバ入れ忘れてて
一人で発狂してたくらいだから。
はー頑張ろう
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にぶち込むメソッドはボタン押されたら呼ばれる様になってるんだ。 ヒントがあったら頂けると助かります。
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 はかなり省略して書いてる。
ってこれ回答になってる?
31 :
8 :2009/05/14(木) 16:58:37
すまん。それは確かにそうだと思う。 swingだけの本読むべきか・・・。 ネットだけで って訳にはいかないのかなやっぱり。 とりあえず本探してみるよ ありがとう。
どこでヌルポでてんだよ
34 :
8 :2009/05/14(木) 17:09:04
>>32 デバッグしてみた。
Kojinに入った時点で呼び出してるんだけど
DB接続前にブレークポイント置いてとめてみた。
そしたら既にnullだった。
Menu.javaの方で一応jtxtfも見てみたんだけど
ぜんぜん普通に値が入ってた。
だから豆が飛んでないのかな。と。
それでさっきからg−gr先生と対話中。
ぬるぽってお前エラーは出てないのかよw だとしたらボタン押した時にテキストフィールドから値を取る動作 >jtxt = jTextField1.getText(); が動いてないんじゃねw
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
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);
こいつかもしかして
>>40 エラー情報に何行目でエラーでたか書いてあるだろ
>rs = stmt.executeQuery(sqlStr);
これの更に後ろだろたぶん
ソースはろだに上げてくれ
43 :
8 :2009/05/14(木) 17:50:12
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
>45 ぬるぽはコーディングミスだからね。 戻り値はちゃんとnullチェックをしましょう。
>>26 privateを外すと同じパッケージ内ならアクセス出来る様になる
privateが一番キツいアクセス修飾子だから外しただけなら制限が緩くなるだけで
エラーの発生要因にはならない
逆に制限を強めるとエラーが起きる可能性が出てくる
48 :
8 :2009/05/14(木) 18:36:33
>>46 でした。
Main.java側のString jtxtf;をprivateとかpublicとかにしてたものの
staticにしたらいけました^o^;
staticはカプセル化の上で絶対なので?
確かそのクラスに属する・・とかって感じだった様な気がします。
>>44 普通はセキュリティや物理配置、ポートの割り当てやらプロセスの立ち上げやらの環境構築が
必要なので DB のインスタンス自体をアプリケーションから作成するようなことはしない。
一旦別の DB に接続して CREATE DATABASE を発行して再接続すれば希望は叶うかもしれないが、
インスタンスが 1 つも無い時は JDBC ではどうしようもない。どうしてもと言うなら MySQL
固有のライブラリが用意されていないか調べるしかない。
読み直すと否定文テンコモリであまりよろしくないな。誰か肯定文に直して。
>>50 ないをあるに変えてみた。こうか?
普通はセキュリティや物理配置、ポートの割り当てやらプロセスの立ち上げやらの環境構築が
必要なので DB のインスタンス自体をアプリケーションから作成するようなことはしないアル。
一旦別の DB に接続して CREATE DATABASE を発行して再接続すれば希望は叶うかもしれないアルが、
インスタンスが 1 つも無いアル時は JDBC ではどうしようもないアル。どうしてもと言うなら MySQL
固有のライブラリが用意されていないアルか調べるしかないアルよ。
52 :
44 :2009/05/14(木) 19:12:02
>>49 ありがとうございます。
いっくらググって検索しても、方法が見つからないわけですね(^^;
普通にやります。
すみません 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のままなのですか?
修飾子無しがprotectedだと思うが パッケージ外から呼べるのはpublic
>修飾子無しがprotectedだと思うが 勘弁してくれ protectedはサブクラスから参照できるが、無指定は参照できん
修飾子なしの可視性は、defaultとかfriendlyとか俗に言う。 前世紀にJavaHouse-Brewersで見かけた表現だから今でも通用するかは不知。
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 サブクラスでパッケージは関係なくできる。
サブパッケージでもサブクラスじゃなければ出来ない。
月を表すJComboBoxの項目を選択すると その月の最大日数を取得して 日を表すJComboBoxの項目を作成するプログラムを作成しているのですが うまくいきません。 ActionListenerを作成しその中で cbDay.removeAllItems(); cbDay.addItem(・・・・); とするとエラーが出てしまいますがこの方法はまずいですか?
66 :
デフォルトの名無しさん :2009/05/15(金) 10:00:39
PreparedStatment(設定自体はJava側です)でSQLを先にロードさせる。 判らない所は?で示す様になるんだけど そこをどういう風に表示させるか分かりません。 あくまで予想だけど sqlStr = "select * from t_member where ? = ?" みたいな感じになると思うから 違ってたら教えて下さい
>>65 何度も言われていることだが、
なんのエラーが出たのかを書け。
javaからMySQLのAutoincrement属性が付いたフィールドへ突っ込む時は どうすればいいんだ? MySQLと違ってjava側でnullで送ったら致命的エラーが出て終わるんだが。 insert into timber (member_id) values (null) 今ここ
70 :
デフォルトの名無しさん :2009/05/15(金) 12:08:41
>>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();
}
}
>>70 いや別に何も無いよ。やってみればすぐわかることだろうに。
>71 残念ながら、ぬるぽはコーディングミスです。 出所不明な変数はnullチェックをしましょう。 特定の引数にnullが含まれるとぬるぽを返す仕様のメソッドもあります。
75 :
デフォルトの名無しさん :2009/05/15(金) 14:26:25
>>72 失礼しました。
解決しました。お手数かけました。
76 :
デフォルトの名無しさん :2009/05/15(金) 14:28:30
どなたかThreadについて分かりやすく解説してるサイトをご存知ですか? いろいろ調べてみたのですが、どうも分かりにくいのばかりで・・・
preparedStatementってバインドの?使わないと使えないとか そんなことってあったりする?_?
いまAwtで画面にDBの内容表示して、SWINGでも同じようにしているけど SWINGがawtに比べて何が便利なのかわかりません。 awtのほうがプログラムが見やすいのですけど、如何なものでしょうか
Write once, run anywhereとはいうが、 AWTはGUIがプラットフォームで異なるのが大きい 利便性というよりは共通化の観点が大きいんじゃなかったっけ
>>78 コンテナとか使ってなかったらそう感じるかもね。
Swingではawtのほとんどを使い回せるから、別にメリットを感じないならawtのままでいいんじゃない?
>>77 そんなことはない。 さっきから言われているとおり、試せって。
>>81 試さずに書くかよ。
それでもnull吐き出続けるから俺の書式がおかしいのか
もしくはその概念自体を間違えてるのか確かめたくてね。
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
カスタムタグ作ったら?
>>82 どこでヌルポってんだよw
例外キャッチしてスタックトレースはかせれば行番号ぐらいでねえか?
>>82 少しググれば例が使ってない例があるんだから、そういうこと言われるんだろう?
任意のサイズのファイルを作成する際に、 中身は空で、とにかくサイズだけはあるファイルを 作成するのに良い方法ありますか? 今は、FileオブジェクトにOutputStream系を使って 無意味なbyteデータをループ回して 延々書き込んでるんですが。
90 :
sssssssssss :2009/05/15(金) 16:57:58
前スレ945だな。
>>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で回答した人ですか??
ですけど、なにか
LnFのSynthの設定に関する事で質問したい事があるんだが、この板でOK?
あ 俺もL&Fのこと聞きたいんだけど。 FileChooserのボタンだけを戻すとかできないのかな。 個々に設定するのはbindのtype使ってやればいいとして Dialogもそうすればいいとして・・・ chooserどうやってやるんだああああちくしょうおおおおおお
>>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
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
>>100 フレームのサイズが設定されてないからじゃ?
JTextAreaやJScrollPaneはコンテンツペインを経由するけど JListはコンテンツペインを経由していないです コンテンツペインを経由するしないの判断は、どこにあるのでしょうか。
>>69 「nullという値」を突っ込もうとしてるからじゃね?
autoincrement属性の付いてるフィールドに値を入れようとした場合、その値が優先されるはず。
で、not nullか何かが付いててエラーになってるんでは。
autoincrement属性の付いてるフィールド「以外」のフィールドにだけ値を入れてみたらどうなる?
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の下とかに 置いてみたりしたけど何も変わりませんでした。
>>102 public Window()
{
super();
this.setSize(500, 800);
フレーム・・・こういう事でしょうか。
>>105 それによって出力されたHTML文のソース自体は確認した?
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のキーワードは使えませんが、 一般的に内部クラスから大元のインスタンス変数を参照する際にはキーワードは何も付けないものなのでしょうか?
>108 俺はよくフィールドで private TestSwing testSwing = this; みたいにしちゃうんだけど邪道なのかな
そのtestSwingは何なんだよって事でソースの中探しちゃうな。
TestSwing.this.selectAllButton.setEnabled(false); と書けなくもないが長ったらしいので付けない。
112 :
デフォルトの名無しさん :2009/05/16(土) 01:07:12
>>109 それの効果は?
thisがあるんだからthis使えばいいんじゃないかなと思うんだけど、
内部クラスでthis使えないじゃない 完全に内部クラス用になっちゃうけどさ
114 :
デフォルトの名無しさん :2009/05/16(土) 01:28:24
なるほどね。 内部クラスっていまいちありがたみがわからないんだけど、 例えばアプレットとかで、一つのclassファイルに納めたいときに、 内部クラスで機能わけとかをするのに使ったりするの?
内部クラスあったらクラスファイルは複数できるって
>>107 はい、それは勿論。
Helloも表示されているし、headタグやその他のタグにも以上はありませんでした。
cssの外部呼出しもServlet前の画面では同じ記述で反映されてるため
Servletで出力したhtmlは階層が変わっているのではないかと思ったのですが
解決策が見つかりませんでした。
>>116 情報が断片的なんでアドバイスしにくいわけだが、
cssのURLをフルパスで書くわけにはいかんの?
これでCSSファイルの位置が悪いのかどうかははっきりする。
>>115 あ、そっかぁ。
じゃぁ、なおさらわかんなーぃ。。。
だれか教えて下さぃ(>_<☆。
初心者です かなり基本的な質問で申し訳ないのですが、現在蔓延しているウイルス対策にjavaを切りたいのですが どうすればいいのでしょうか ググっても該当項目が出てこないのでこちらで質問させていただきました ブラウザはIEとLunascape5です
即レス・誘導ありがとうございました 該当スレで聞いてきますm(_ _)m
124 :
デフォルトの名無しさん :2009/05/16(土) 10:13:41
Proxy#getInvocationHandlerの使い所ってどこよ?
インスタンスがプロキシだと分かっていて、その InvocationHandler を取得したい時。
ん? ここはレドモンドじゃないはずだが?
再帰代入演算について質問させてください。 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); }
ループの中のgのintを取る。
>>128 できました。ありがとうございます。
なぜ、intをつけるとダメなのでしょうか。
教えてクンですいません。
2重定義だろ
>>130 あ、わかりました
こんなことにも答えてもらって、どうもありがとうございます
public static void main(String[] args) { javaの例題やってるけどメインプログラムの上に関数(メソッドっていうんだっけ?)が羅列されてるなぁ C言語の例題はメインプログラムの下に関数作ってたけど
クラス内なら定義する順番は無いんだ。
むしろ大昔のC言語処理系なんかだと、mainの前に関数を定義か宣言をしておかないと コンパイルエラーになったりする。
K&Rはそういうもんじゃなかった?
K&Rだと、呼び出す前に定義するか、戻り値の型を事前に宣言。 高級アセンブラ的視点で、関数の戻り値のアドレス幅だけは使用 前に知っておく必要があった。 ANSI Cだと、同じく呼び出す前に定義するか、引数型を含めた プロトタイプを宣言。実際の呼び出し時には引数を含めてチェック。 というところだったかねぇ。
137 :
71 :2009/05/16(土) 21:21:00
>>74 ありがとうございます。
英語読めないのでじっくり解読します
逆だろ。大昔のはプロトタイプ宣言なくてもコンパイル通ってた。 だが矛盾もなにもお構いなしで動いてバグになりやすかったから宣言必須になった。
K&Rの関数宣言はプロトタイプじゃないよ。
K&Rの場合は、関数の戻り値型宣言を省くとintだと判断してたハズ。
ローグクローン2日本語版のソースが少なくとも今のコンパイラだとエラー吐かれたきがす
RMI でサーバ側からコールバックってできる? サーバ側にイベントソースがあって クライアント側にコンシューマがいるような。
クライアントもRemoteを実装して、サーバからRMIで呼び出す。
それってセキュリティ的に(ry
セキュリティ持ち出すならそもそもRMI使うのか? CORBAに変更して暗号化するしか無くなるような・・・
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 +"です"); } }
148 :
デフォルトの名無しさん :2009/05/17(日) 13:55:31
ここを乗り越えれば理解が一気に深まりそうなんだがまだ解らない public class Rpg02 extends Applet implements Runnable{ ↑なんですがRpg02が子クラスでAppletが親クラス(スーパー?)なんだよね? でここには長いから書かないけど上記プログラムの後は Rpg02がAppletの関数つーかメソッド?を利用してるんだよね 子供が親(スーパークラス)を使うの? 親の下に子供があって子供を関数として呼び出して使うんじゃないのかい? 親 メインプログラム ↓ 子 サブプログラム(関数) 現在は↑のような認識なんですが><
Rpg02 は Applet の持つ機能を全て引き継いでいる。
継承と実装なんかネットでサンプルてんこ盛りだろ
子クラスとかサブクラスなんて呼ぶから混乱するんだ。 派生クラスとか、ピッコロクラスとか呼べばいい。
>>148 凄く違う。
サブルーチンと勘違いしてるのかもしれませんが、
他の言語の事は忘れて一からJava用語を覚えた方が良いと思います
サブクラスもjava用語じゃないだろ
クラスパスの環境設定ができません・・・ とりあえずコマンドプロンプトに set CLASSPATH=%CLASSPATH%;. と打ち込めばプログラムを実行できるようになるんですが コマンドプロンプトを再起動させるとまたset CLASSPATH=%CLASSPATH%;.と 打ち込まないと実行できません・・・ ちなみにコンパイルはできます jdkのバージョンは1.6.0_13です
いあ、言語規定の8.1.4でサブクラスと命名されてる。
autoexec.bat を編集する
>>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); } }
>for(int sum=0 , i=1; i<=10; i++) { > sum = sum + i; >} これ答案に書いた時点で減点です。
162 :
デフォルトの名無しさん :2009/05/17(日) 17:17:21
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という意味ではない)
ファイルの入出力に関する質問です。 テストの成績を管理するプログラムの練習をしています。 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のこと?
ぶっちゃけ何がしたいのかわからん >テキストファイルを引数から読み込み簡単に入力する パラメータにファイル名を指定して、 読み込んだものを表示するだけなのか? それとも手で名前やら出席番号やら科目の情報を入力するのか? 「テキストファイルを引数から読み込み」と言っているのに(これが入力になるのでは?) 「簡単に入力する」ってのが意味わからん
まずは大学名をかけ。
>>164 BufferedReaderで一行づつ読み込んだStringをsplit()で分割。
でいいのかな?いまいちエスパー気味に回答。
DIコンテナって ソースコード中でオブジェクトのプロパティを一々設定したりコンストラクタに大量の引数を渡したりしなくても 外部XMLで自動的に設定してくれる、って事?
普通にこれだろ BuffredReader = reader = new BufferedReader(FileReader("score.txt")); String line = ""; while((line=reader.readLine()) == null){ // lineをsplitで区切ってなんやかんやする }
間違えた。!=nullな
>>169 そう。外部XML「から」自動的に設定してくれる。
174 :
デフォルトの名無しさん :2009/05/17(日) 19:35:49
全部2次元のリストに格納して ObjectOutputStreamで書き込んどけば 操作メソッドつきのデータになるから便利だよね
>>48 staticの意味も把握してないで、適当に付けたり外したりしてんのか、おまえ
筋金入りのバカだな
>んでKojin.javaのドライバ読み込む直前で
>Menu mMenu = new Menu();
>String jtxtf1 = mMenu.getJtxtf();
>これしてる。 もしかして読み込みが間に合ってないのか
んなわけねーだろ
自分で、既存のinstance無視して、new Menu();してんじゃねぇか
それじゃインスタンス変数がnullなのは当然だろ
こんにちは、お願いします。 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)でした。 できてるのかよくわかりません。 教えてください。
色空間という概念については名前しか知らんので詳しいことは答えられないが、 ここで getInstance に与える引数は ColorSpace.TYPE_RGB ではないだろうか。 1001がその値なのかもしれんが。 そうすると RGB ColorSpace オブジェクトが得られるので、「この」は RGB ColorSpaceになる。
178 :
デフォルトの名無しさん :2009/05/17(日) 23:56:46
操作メソッドってなんだ?
>>177 ありがとうございます「この」の意味は作成したインスタンスのことだったんですね。
1001はCIEXYZでした。
でもCS_RGBは返ってくる値が0〜1みたいです。
ColorSpace.getInstance() の引数の名前が int colorspace だし、TYPE_系じゃ なくてCS_系じゃないかな?と思った。思っただけ。
181 :
デフォルトの名無しさん :2009/05/18(月) 02:10:10
JavaSoundでSequence()データをAIFFやWAVE形式で保存って出来ないんでしょうか? MidiSystem.write()ではSMF形式でしか保存できないようで AudioSystem.write()ではSequenceを引数に与えられないようですが・・
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
186 :
デフォルトの名無しさん :2009/05/18(月) 12:14:56
ミスった netbeans
>>184 ClassNotFoundException
ってかいてあるやん。
MySQLのドライバはほんとにインストールしたの?
188 :
デフォルトの名無しさん :2009/05/18(月) 12:51:44
>184 pathが届いてないとか。
190 :
デフォルトの名無しさん :2009/05/18(月) 14:04:51
ClassPath通して無いんだべ 初歩的で一番よく有るミスじゃね
Class.forNameをを呼んでいないだけとエスパーしてみる
forName() 呼ばないで JDBC URL からドライバ推測できるわけねぇじゃん。それなら no stable driver だろ。
トランザクションができなす。 やったこと ・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なの?
目の前にいる上司に聞いてみろ。
198 :
デフォルトの名無しさん :2009/05/18(月) 18:09:18
>>184 つーか、よく見てみろ。
com.mysql.jdbc.Drivercom.mysql.jdbc.Driver になっとる。
com.mysql.jdbc.Driver を二回コピペしちゃっただけ。
>>194 そんなsqlplus チックな使い方したこと無いからわからないけど
とりあえず java.sql パッケのリファレンスを読むことを勧める。
Connection クラスより
>注: 各文を実行後、デフォルトでは、Connection オブジェクトは自動コミットモードになり、自動的に変更をコミットします。
>setAutoCommit(boolean autoCommit)
> この接続の自動コミットモードを指定された状態に設定します。
>commit()
> 直前のコミット/ロールバック以降に行われた変更をすべて有効とし、この Connection オブジェクトが現在保持するデータベースロックをすべて解除します。
あとpreparedstatement のキャストは要らんでしょ。いいけどさ。
>>196 Jデータと rec って何?何かを伝えようっていう意思ある?
テーブル定義がそこにあるならResultSet からカラム名指定して取得すりゃええし
ないならResultSetMetaData でも使えば?
すみません、わかる方がいらっしゃれば教えていただけないでしょうか。 GridBagLayoutを使用しているのですが、罫線(枠線)をつけることは できるのでしょうか。 グリッドのセルの中にはラベルを入れているのですが、 このラベルにsetborderで枠線をつけてみても、 きれいな形にならずに困っております。
setBorder() の何が不満なのか書かないと答えようがない。
>>202 そうですね、失礼しました。
私のやりたいことは、各セル均一にきれいに枠線をつけたいのですが
(Excelのように)、ラベルにsetBorder() をつける形で
実装しようとすると、各セルごとのラベルの幅が異なるため、
均一な枠線になりません。
セルの中にあるラベルにつけるという形ではなくて、
グリッドに枠線を表示させる、という方法はあるのでしょうか
不均一?? ちょっと、 GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(5,5,5,5); と、してみてくれないか? くっついているのを不均一と見てたりしないか?
GridBagConstraints の fill に BOTH を指定すればセル範囲いっぱいにラベルが拡張される。 というかスプレッドシートみたいなものを使いたいなら JTable を使う。
ご返答ありがとうございます。 すみません、諸事情がありPCを落とさなくてはならなくなりました。 後日上記のことを試してみます。 ありがとうございました!!
>>205 すみません、ひとつ確認させていただけますでしょうか
JTableにボタン(JButton)は設置することはできるのでしょうか
ざっと調べてみたのですが、それらしい情報はありませんでした。
コンボボックスをつけることはできるみたいですが。
実は、当方、データグリッドの中にボタンを設置しております。
JTableでもボタンの設置ができるのであれば、そちらに
編集しなおそうと思っております
>207 できる。 普通にレンダラとエディタいじれば。 やり方はコンボボックスと一緒だけどさ
209 :
208 :2009/05/19(火) 00:47:17
GUIつーかSwingの話題が多いな 研修か?まさか業務用で組むなんて滅多にないだろうし (小物ツールとかならともかく)
単にIDE使ってるとSwingコントロールが目に付くからだと思うが
JTable にコンポーネント配置は結構めんどい。忘れてくれ。 背景の JPanel とかを黒にして各コンポーネントのマージンを 1px づつ取れば グリッドが引かれたようには見える。
213 :
194 :2009/05/19(火) 09:18:00
>>200 ふむ。
別の所で聞いてたんだが、どうもauto_increment属性付きフィールドはロールバック対象外らしい。
ということで似たような物をつけることにするよ
なぜかswingスレが過疎ってんだよな
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もバージョン一緒だし。 ライブラリも見たところ同じだし。 何が原因だこれ。
>>215 org.jdesktop.beansbindingというパッケージがクラスパスの通ったところにあるか確認
移したほうの環境ではライブラリが存在していてもそこにパスを通していない可能性がある
32bitOSでコンパイルしたclassファイルを64bitOSで実行することはできるのでしょうか?
JavaVM と関連するライブラリの JNI が 64bit 対応していていれば。
216>> デスクトップに一応プロジェクト自体はあるんだが そんでorg,jdesktop.beansbindingもそこにもあるし、Netbeansフォルダ(CのNetbeansフォルダ)にある。 クラスパスはjdkに通してある。
すいませんパスはjavaです。
どう操作したらエラーが出るのか、 どんなエラーが出るのかを書こうよ。 コンパイルまでしなきゃいかんのは面倒だ。
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)
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)
連続ですいません。 簡単なテキストエディタで、copy,paste,cut機能を実装し、それらを実行しようとした時に起こります。 まったく同じサンプルプログラムをコピペって実行するとエラーは出ないので、どこか間違ってると思うのですが。。。 2日間サンプルと見比べたのですが分からなかったので質問させてもらいました。 よろしくお願いします
ただのぬるぽじゃねーか。 バグの原因すら突き止められないなら諦めろ。 それがお前の実力だ。 ヒントを与えるとしたら片っ端からコメントアウトしてエラーがでない状態にしろ。 そこから少しずつコメントアウトをはずしてエラーが出る部分を突き止めていけ。 ここはデバッグ代行スレじゃないから自分でやれ。
ソース見ちゃいないけど、 MyEditor.javaの153行目でぬるぽって書いてあるのに、 何で調べようとしないんだろうな JButtonだか何だかを押した時っしょ? フリーで高機能なデバッガが簡単に手に入る時代だというのに
ソースの9行目と28行目をよく見てみるんだ。 editor.textがnullだからNullPointer
酷すぎるw
つーか作っている途中のプログラムを実行したらエラーでて当然だろ・・・ text実装しろよ
オブジェクト名.copy();でエラーが出たのでそこをSystem.exit(0);に変えて試したら機能しました。 そこから先が分からなくて。。。
おまえらソース全然みてないだろw すごい落ちだぞw
だから、9行目 JTextArea text; 28行目 JTextArea text = new JTextArea(); を確認しろと。
わかりました。 ありがとうございます スレ汚してしまってすいませんでした
>>232 オチって?
単にtextが空なだけじゃねーの
フィールド隠蔽かw ワロタ
237 :
デフォルトの名無しさん :2009/05/19(火) 19:51:41
鞭打ち死刑
フィールド変数の接頭に m やら _ 付けとけ
JComboBoxの今表示されている項目を String型変数 strに移そうとして str = JComboBox.getSelectedItem(); ってやったら怒られました。 互換性がない型といわれましたが String型にObjectをキャストする方法あるんですか?
誰かAPIドキュメントのURL貼ってやれよ
キャストだったらAPIじゃなくて言語使用の方のドキュメントじゃねえかな
>>240 残念ながらありません。
実装方法の見直しを行って下さい。
自己解決しました。 str = (String)JComboBox.getSelectedItem(); でできました。 これってキャストとはいわないのですか? 無知ですみません。
言いますよ キャストって何だと思ってるんですか?
243さんがありませんといってたので
その場合、 str = JComboBox.getSelectedItem().toString(); に、すべきじゃないかと思うんだが。
クソミソに叩きつつも結局アドバイスをしてるツンデレ回答は好きだが嘘を付くのはダメだと思うんだよな。
>>247 実行したところ
str = (String)JComboBox.getSelectedItem();
の方法だと途中でエラー吐いてきました。
ありがとうございます。
toString()が抜けてるのは釣りか?
251 :
181 :2009/05/19(火) 23:27:38
>>182 ありがとう、標準では出来ないって事ね。
まぁ急ぎじゃないし誰かがつくるかJavaSoundが標準サポートするまで待つか
ありがとう
あれ?ひょっとしてJMFとか使って出来るのか!?もうちょっと調べて見ようかな。
結局は str = (String)jComboBox.getSelectedItem(); でいいんでしょ?
どっちでもいいんじゃね?
んにゃ、addItem()みてみ。toString() 一択。
いつの間にgetからaddの話に変わったの?
Androidの実機がついに日本で出るわけだがAndoroidスレ立て直しの需要はあるかね。
初心者歓迎と聞いてやってきたんだが、今Eclipseでjavaやり始めたんだが 最初に public class rensyu { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ } } って出てくるんやけど、これを class rensyu { { public static void main(String args[]); } } って出るように設定しなおせる?
>>258 Preferences > Java > Code Style > Code Template
でだいたい設定できるんじゃないかな。
>>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);
>>261 tex2が"こんばんは"の参照を持つように
初期化されて以来、一度もtex2は
変更されていないじゃないか。
>> 261 String tex = "こんにちは"; // 変数 tex が オブジェクト "こんにちは" を参照 String tex2 = "こんばんは"; // 変数 tex2 がオブジェクト "こんばんは" を参照 tex = tex2; // 変数 tex が、「変数 tex2が参照しているオブジェクト」(= "こんばんは") を参照 tex = "おはよう"; // 変数 tex がオブジェクト "おはよう" を参照 // tex2はずーーーっと "こんばんは" を参照したまま 参照型の代入は、矢印の付け替えだと思いねぇ。
264 :
261 :2009/05/20(水) 02:28:21
>>262 ,263
丁寧な説明ありがとうございます。
すごい大きな勘違いをしてました。
本当にありがとうございました!
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]と表示されてしまいます。 ご指摘お願いします。
>>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 になる。
>>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()); } }
volatile の使いどころがいまいち分かりません。 マルチスレッドで共有される前提のクラスの非 final メンバは全部 volatile にすべき?
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 個 > 前まではなんの問題もなくコンパイルできたのですが、今日になっていきなりでてきたんです。 これってどういういみなんでしょうか
JDK 1.5 でコンパイルしたクラスを JDK 1.4 で実行しようとした。
jComboBoxに日付を自分で入れるんじゃなくてaddしていくことって出来る? ついでにその当日にフォーカスを置いて初期選択がその日になってると尚いいんだが。
>>277 エスパーさせる内容ですまんかった。
要はうん、日付を取得してそれをぶち込むってこと。
かなり回答が的を射ててくれて助かった。
ありがとう
>>274 どうやれば、このエラーが無くなるのでしょうか
jcy = String.valueOf(cal.get(Calendar.YEAR)); int icjcy = Integer.parseInt(jcy); jComboBox1.setSelectedIndex(icjcy); java.lang.IllegalArgumentException: setSelectedIndex: 2009 out of bounds だ・・・と?
もう一回ソースからコンパイルしれ 超適当に言うと、新しい環境で作ったモノが古い環境で動きませんってこった ソース次第じゃ警告かエラー出るかもしれんが
>>281 たぶん speech.jar が 1.5 でコンパイルされている。
JDK1.5をインストールしなきゃだめだべ。
285 :
282 :2009/05/20(水) 18:24:16
これもしかして項目数か・・
もしかしなくてもインデックスに年号指定しとりますがな。 アイテムを一個ずつ取り出してインデックスを探すか、アイテムを作りこむ際に インデックスを覚えておくしかないかな? 選択中と任意の違いはあれども、アイテムから文字列を得るには >247 参照。
>>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; }
}
これと等価と言うことで良いですかね。
単発の変数や参照で原子性が必要なことってあまりないですよね。
>>282 リストとコンボボックスの項目数は実装上の制限がある
>>284 ありがとうございます。
とりあえずダウンロードし直してみます
みんなのおすすめor使ってるエディタは何?
Eclipse
>>291 ありがとう、さっそくインストールしてみるわ
職場のボロノートPCにGanymede入れてみたものの、 起動に四分かかって俺涙目
>>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をつけたい。 何か方法ある?
SimpleDateFormatじゃだめ?
Javaの勉強してて、いろんな基礎文法載ってるテキストは大体やったから ある程度基礎は知ってる。で、15歳からはじめるJAVAゲームプログラミングってやつやり始めたら 中盤当たりからかなり難しくなってきて、もぅただテキストをただ見ながら移して打ちこむ感じに・・・・ 理解しながら打ってるけど、どーも自分で考えてやったわけじゃないから受身な感じになって覚えられない。 ある程度自分でプログラムを考えてやらせるようなプログラムの本ないでしょうか。 サイトとかも教えてほしい
>>298 > ある程度自分でプログラムを考えてやらせるようなプログラムの本ないでしょうか。
> サイトとかも教えてほしい
この時点で自分で考えてないし、受身な感じだと思うよ。
自分で作りたい物を考えて、それを実現する方法を必死に調べるほうが身につくと思う。
テトリスでも作ってみれば?
俺もゲームでも作ってみることを勧める。 普通言語覚えたいという欲求には、何かをしたいという事が前提だとおもうんだけど そういうのはないんかなぁ?
>>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 でも、普通に使えるようになる。
あ、ガニメデ・・・こっちはプレアデスだった。まあ、やることは似たようなものだろう。
>15歳からはじめるJAVAゲームプログラミング あれはいい本だが内容は入門向けだぞ。
ここで良いかわからないですが、 hoge.jar というのがwebサバに置いてあったとして、 Javaアプリとしてそれを利用する形なんだけど、 1分間に15回くらいの頻度でwebにhoge.jarアクセスがあるんです。 Javaのverとかブラウザの設定の問題? それとも他に何か影響してるのかしら・・・・ 同じような現象知ってる人いたら情報欲しいです。。
>>304 イミフ。まあ言ってることからして板違い
俺のターン!ドロー。
>>307 をいけにえにエスパーを特殊召喚!
ターンエンド。
URLClassLoaderのキャッシュ実装がタコなんじゃね? と見ようとしたんだけど、sun.misc.URLClassPath に委譲してる? ドロー、ワーウルフを召喚。二枚伏せて、ターンエンド。
小生cを少しかじっていてこのたびjavaで 鷲巣麻雀をつくろうとおもってるんだがオブジェクト指向ができない、、、 牌クラス ルールクラス (待ちくらす、鳴きクラス、点数計算クラス、役クラス、流局クラス) プレイヤークラス (親クラス、子クラス その他 (配牌クラス、理牌クラス、場所決めクラス、親決めクラス) 間違ってないよね?
>>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の性能上表示不能なんてことはないですよね?
単に大きさが128以下の配列の129番目を参照しようとしただけじゃないか? フーリエ変換で2のべき乗サイズの配列しか用意してないのに その1個先のナイキスト周波数もしくはそれに相当する時間か空間軸一杯まで 読み込むか書き込むかしたんじゃないの? PowerSpectrum.javaの39行目あたりより前を見て添え字が変になっていないか確認しろ
補足:129番目の添え字は128なので
314 :
デフォルトの名無しさん :2009/05/22(金) 02:00:35
processingの質問ってこの板で合ってますか?
ナイキスト周波数でなくサンプリング周波数だね
317 :
デフォルトの名無しさん :2009/05/22(金) 02:05:13
>>どうも有難う御座います
>>308 試行錯誤してて仕様や動作は決まったけど実装を変えたくなったら
リファクタリング
でググるといいよ。
google newsをjavaでググたらオラウータンが開発で激減とか言うタイトル見つけてオラウータンがデスマーチで過労死したのかと思ったお
ジャワ島か!
"あ"って書かれたボタン押したらテキストエリアに"あ"って入力されるような スクリーンキーボード作りたいんですが ボタン押したらRobot使ってキーボードを押してKeyPressedの中で処理を行うって 感じでいいのでしょうか? あと入力された文字の漢字変換を行いたいんですがこの方法で出きるでしょうか?
特定のテキストを単に挿入するだけならRobotに頼らずともテキストエリアの insert と getCaretPosition を使えばよい。 インプットメソッドを通した結果を貰うには……java.awt.im.* を使うのかな。 変換操作もボタンでがんばるんだろうか。どうやるつもりか知らないけど。
変換操作も"変換"ボタンをクリックすると漢字に変換されるようにしたいと思っています この部分の実現方法がさっぱり分かりません どなたか良い実現方法はないでしょうか?
次候補とか文節区切り変更とか確定の操作の段階になるとIMに制御が渡ってしまうから ボタンとかイベントとかでどうにかするレベルじゃなくなってくるんではないだろうか。 JavaでIM SPI実装すれば出来るんだろうけど、気が遠くなる。 Robotの出番になるのかな……
>>325 ありがとうございます
SPIの実装は大変そうなので,Robot使って色々試してみます
また,別の方法で実現できるならば,書き込んでいただけると幸いです
327 :
デフォルトの名無しさん :2009/05/22(金) 15:22:33
興味本意で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を用意してやらないと無理でしょうか?
よくよく考えたら当たり前ですよね、失礼しました。
>>15 JFreeChartを使ってやっとグラフが書けました。
ありがとうございました。
332 :
デフォルトの名無しさん :2009/05/23(土) 17:46:58
paintとpaintComponentってどう違うのですか?
javadoc嫁
正確にはjavax.swing.JComponent#paint嫁、かな? 両者の比較っーことだから。
paintとpaintComppnentの違い聞くくらいだから両方読まないと分からないんじゃないのか。
>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
>>337 自分で見つけられるようにならんと、いつまでたっても半人前だぞ。
java.awt.Component#update
ファイル選択ダイアログをhogehogeするときはそもそもJFileChooser使わずに一から作るもんなんだが。
paintごちゃごちゃする前にcreateDialogをオーバーライドすれば良さそうな。
int型の 987654321を 987,654,321と いうように、3ケタごとにコンマをうつ方法は どうやったらいいのでしょうか
自分のクラス内のメソッドを呼んだら 非スタティックなのをスタティック読みできませんと。 しかし、コンストラクタの中に書いたら、普通にスタティック読みできますね。 自分のクラスでもインスタンス化するのが基本なんでしょうか。
>>342 System.out.println(MessageFormat.format("{0,number,integer}", 1000000));
String.format("%,d", 987654321)
>>343 スタティック読み???
何を言いたいのかエスパーすると static 参照かな。
staticメソッド(例えばmain)からインスタンス(非static)メソッドを呼んだんだろ?
そしてコンパイルエラーになった、と。
staticメソッドからは、staticメソッドかstaticフィールドしか直接アクセスできない。
そしてコンストラクタはstaticじゃないので別のインスタンスメソッドを呼べる。
初心者です。少し長くなりますが教えてください。 処理結果を仮に田中・モブ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です。
>>347 > protected static String name;
static 削ってみれば?
>>351 ありがとうございます。ちゃんと表示されるようになりました。
staticの使い方があんまり分かってなかったようなので
勉強しなおします。ありがとうございました。
すごい初歩的な質問ですが、c言語でいうscanfと同じ動作をするコマンドってないのですか?
354 :
デフォルトの名無しさん :2009/05/24(日) 03:33:31
java.util.Scannerがそうだけど、これを使えるようになるにはc scanfと違って時間がかかるんじゃないか。
コマンドじゃないしなあ。入出力以前な感じ。
ハッシュマップについて質問なんだけど、 1.mainクラスで作成したハッシュマップを別クラスのメソッドに渡す 2.そのメソッドでハッシュマップの値を変更する 3.変更後のハッシュマップを返す ってやった場合でも、値が変更された後のハッシュマップを mainクラスでも使えるの?
>>356 更に言えば、main は最初に作った時に
代入した変数を使うことで、変更後の
値を見ることもできるだろうから、
返してもらう必要も無いことが
多いだろうな。
>359 ものの名前を伝えられるように正しく覚えろって話
>>359 単純にそれだけを目的のプログラムを作成する、と言えるかもね。
Excel か、スクリプトの方が簡単に早く終わると思う。
ただ普通は
・要件としてJava の使用があって
・仕様を満たすためにはその作業が必要になって
じゃあJavaでどう実装したらいいか、という話になるんじゃないかなぁと思うけどな。
>>361 とあるプログラムの一部に入れたいんですよ
最初に数を入れてみたいな文字列を表示させてから
キーボードでその変数に数を入力させるみたいなことをする作業が必要な場合ですね。
なんか日本語変になってすいません。
>362 その変数って何さ。 Javaにおける入出力の基本 Input/OutputStream, Reader/Writer の関係を調べると良いかもよ 別に知らなくてもプログラムは書けるけど、少しは興味ない?
swingでボタンとかラベルのオブジェクトの名前どうつけてる? オブジェクトが増えてくると、何が何が何だかわからなくなってくる
>>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に入る数値を入力するって形にしたいんです。
なんの変数?っていう質問の答えになってるでしょうか……
>>366 JOptionPane#showInputDialogはどうよ?
String input = JOptionPane.showInputDialog("数値を入力してください");
int i = Integer.parseInt(input);
>>368 PowerSpectrum.java:39: シンボルを見つけられません。
シンボル: 変数 JOptionPane
場所 : PowerSpectrum の クラス
String input = JOptionPane.showInputDialog("数値を入力してください");
^
PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。
int i = Integer.parseInt(input);
^
エラー 2 個
だそうです。プログラム冒頭のメイン関数で定義したほうがいいんでしょうか
>>369 うん?まさか
>>368 のコードをそのままを挿入した?
ちゃんとコンパイル通るように組み替えないと駄目だろ・・
JOptionPaneは
javax.swingパッケージだからインポートしないと使えないよ。
こんな風に
import javax.swing.JOptionPane;
もしかしてインポートも分からない?
>PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。
こっちはエラーになったソースを見せくれないと指摘のしようがないなあ。
javaは最近始めたばかりでして全く知識が皆無でして……ほんとすいません importってのは、プログラム冒頭の奴ですか?
import入れたらできました。 >PowerSpectrum.java:40: i は main(java.lang.String[]) で定義されています。 は解決してませんが、ソース全部はった方がいいですか?
単に同じ関数内でint iを二重に定義しているだけ。 それくらいは自分で探さないと勉強にならん。
NetBeansでSwingをしていると、JFrameでpublic static void main(String[] args)が 勝手に作られるけど 他のクラスからJFrameクラスを使うときは、public staic void main..を削除した方がいい?
起動時にはmainを実行するクラスを指定するから、削除しなくても問題ない。
ゴミなら消しとけ
JFrameをアプリケーションクラスにするのはやめろってのはsunのSwingのガイドかチュートリアルにも書いてなかったけ? EDT使えとしか書いてないんだっけか。 メインウィンドウをアプリケーションクラスにするのは行儀悪いからアプリケーションクラスがウィンドウ持つようにした方がいい。
本格的なアプリならなぁ。 main.c に全部書かないで、関数は別ファイルに書いて分割コンパイルして リンク汁。と同じレベルの親心。
嗚呼流れてしまった、前スレを見る方法ないですか
383 :
デフォルトの名無しさん :2009/05/24(日) 18:02:58
main(void)やlibcだけではguiは出来ないが?
>>383 ライブラリとインクルードヘッダはコンパイラ機能として、main.cだけでGUIは書けるぜ。
Windowsでもスタートアップ処理とウィンドウプロシージャ書くだけだからな。
流石に、にちゃんでjavaの全部を学ぶのは無理なので、一冊java入門書を読む事を勧める。
386 :
デフォルトの名無しさん :2009/05/25(月) 00:40:40
OSで使われているMIDIシンセサイザを取得する事はできませんか? MidiSystem.getSynthesizer() で取得されるのは Java Sound Synthesizer ところが、MidiSystem.getReceiver() で使われるシンセサイザはOSで使われるシンセサイザなんですね いま必死こいてMidiSystem.getReceiver()のソースを眺めているのですがサパーリです。
soundbankに読み込みロックを掛けて開いておく
JavaでMidiって結構ここで出てくるけど、 やっぱりゲームでも作ってんの? まともなソフトウェアMidi音源ありゃなー
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; } }
質問よろしいでしょうか 例えばRobot.keyPress(68)としたときキーボードのdが押されますが この時keylistenerのkeyPressedは呼び出されないのでしょうか? 呼び出されないのなら,どうやって呼び出せば良いのでしょうか? どなたか教えていただけませんでしょうか
>>初心者たん boolean型というのは真か偽,つまりtrueかfalseを示す型 public static boolean showQuestion(int questno)これはboolean型の戻り値を返すメソッドで 今回の場合,ランダムで九九の問題を出題し解答者が答えを入力する その入力された答えが正しいならtrueを,誤っているならfalseをmain()メソッドへ返す if(ok)はokがtrueならgoodAnswer++するということ
>392 その質問は呼び出されるかどうかが知りたいわけ? それとも試して駄目だったの?
すいません 試してみてkeypressed()のなかでSystem.out.println("AA")としてみてもAAと表示されなかったんで 呼び出されないのかと思ったんです それで呼び出せないかと思って質問しました
>395 特に問題なく動くけど、反応が無い組み合わせもある。 GUIをどういう構造で構築したかにもよる。 何処にフォーカスがあって、何処にKeyListenerをaddしたかによって変わる。 例えば、単にJFrameを作成しリスナーを追加してロボットでキープレスした場合、キチンと反応する。 次に、contantPaneに、キーリスナーを追加したJPanelを追加した場合、反応は無い。 ただし、そのJPanelにsetFocus(true)をセットしておくと、キチンと反応する。 理由はわからないけど、色々試してみたら?
ありがとうございます 色々やってみます
ArrayListへDBのデータをぶち込んで そのArrayListの中のデータをjTableにぶち込む方法ってあるか?
メモリの許す限りTableDataModelでも使ってザックリ回せば
400 :
初心者たん :2009/05/25(月) 15:23:40
>>393 親切なレスに感謝です、ありがとうどざいます。
8行目のbooleanは理解できました;;
えっと、
>>391 の boolean型メソッドshowQuestionの後のカッコに
int型の引数 questno と書かれてるとこなんですが、その値が6行目の
"第 ○ 問" の ○のとこにキャスト? されてるのも理解できずじまいです;;
正答ならtrue 誤答ならfalse なのにshouQuestionメソッドの戻り値にint型の
questno とあって、しかもそれが問題数を表示するところにキャストされてる???
理解しきれてなくて質問が変だったら指摘ねがいます;;
>>初心者たん キャストというのは型変換を行うことで今回行われているのは391の2,3行目のみ randomはdouble型で値を返すためそれをint型へ変換している questnoとは今が何問目か示すための変数 6行目では何問目でどんな問題内容か出力するだけ 戻り値とはreturn ○○というところだけなので,どこを見て戻り値がintだと思ったのか わからないけど今回の場合戻り値はtrueかfalseしかない というかintを返そうとしたらエラー出る
>>400 かなり変なこと書いていると思うので
本などで確りと基本を一度やったほうがいいと思う。
このまま進んでも上滑りしてモノにならないと思う。
403 :
デフォルトの名無しさん :2009/05/25(月) 19:01:51
ファイル削除について質問です。 DBUnitを使用したJUnitの各試験ケースにおいて、メソッドの先頭にて試験対象のテーブルのバックアップを取り、 メソッドの末尾にてバックアップしたテーブルをリストアしています。 バックアップはFile.createTempFileにてExcelに出力しています。 (setUpとtearDownはDB接続、切断のみです) メソッドの末尾でDB情報をリストアした後で不要となったExcelファイルを削除したいのですが、 File.deleteで消せる場合と消せない場合があります。 どのような原因があるかご存知の方、教えて頂けないでしょうか。
回答じゃなくて悪いんだけど truncate するんじゃなければ普通にrollback じゃだめなんだろうか・・ ロックの確認とかはコミット切ってコネクション2本張らないと無理だけどさ。
setUp/tearDownで接続/切断だけって言ってるから、トランザクション込みなんじゃないか? ファイルはちゃんとクローズしてる? というかExcelファイルってPOIでも使ってるのか?
>>405 今「DBUnitを利用した単体テストに関して」でググって最初に出てくるページを読んでます。
試験手法の問題だとは思いますが、トランザクションをロールバックする方法も検討してみます。
>>406 setUp/tearDownでDB接続・切断しているのは、
そのタイミングでしかコネクションを制御できない(と思ってます)からです。
(コネクション一本でやってるので)
試験用メソッドの前後で行うsetUp/tearDownではなく、
試験クラスそのものが動く前後のsetUp/tearDownみたいなものがあればいいのですが。
(あったりするのでしょうか?)
POIに関しては、自分が明示的に使っているわけではなく、
DBUnitがExcelの情報を読み書きする際に必要となります。
ファイルのクローズ等に関してですが、もう少し色々調査をして見ます。
消せたり消せなかったりするのが意味不明ですが……。
レスありがとうございます。
テストクラス全体の前後は、4系なら @BeforeClass @AfterClass があるけど、 DbUnitってJUnit 3.8ベースだっけ? junit.extensions.TestSetup というのを使うらしい。
DButilでバックアップ用途にExcelファイル使うってのは、無駄だろ?XMLでいいじゃん。 テスト用データソース用途なら、表形式で編集できるから便利だけど。
DBTestCaseを継承しなければ、JUnit4ベースでいける。 継承しないで使う方法は公式ドキュメント見れ。
>>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)は更に加工する場合でスレッドセーフである必要の有無。 今のところはこの程度の認識です。 よろしくお願いします。
JPQLで聞きたいことがあります。 個人に聞いていたのですが、何度もメールするのもちょっと悪いので ここで聞かせて下さい。 JPQLの問題です。 SELECT t FROM TList WHERE t.data1 = '2009/05/21' にて動作は確認できました。 この文字のところを変数に変更することは可能なのでしょうか。 通常のSQLであれば、'" + today + "'でいけるのですが JPQLでの記述方法が判りません。 色々調べてみたのですが、どうにも。 ヒントを頂けると幸いです。
JAVAだとcharの配列を65535個作ると何バイトになるんでしょうか?
Look and feelのSynthについてkwsk書いてある本知らない??
Javaではオブジェクトの参照先の アドレスを表示させる手段ってありますか? print文でオブジェクトを与えて出力した時の 文字列はアドレスは表してないですよね?
アドレスって何? おいしいの?
>>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);
かも?
あ、非推奨か・・・メンドクセ SimpleDateFormat.parse("2009/05/21")
>>413 よく見れば、(3)(4)(5)はそんなコンストラクタ無いよな。自動的にtoString()されるのかな?
>>417 ない。nimbusのソースでも読むとか
エラー個所晒せ
質問。 引数付きのコンストラクタにwhile文で変数を2つ、任意の回数だけ渡したい。 GAME[] g = new GAME[変数のペアを渡す回数]; while(i<回数){ <プレーヤ名入力文> <ゲーム名入力文> g[i] = GAME(ブレーヤ名,ゲーム名); i++; } 普通ならこれで良いんだろうけど、自分の場合は名前とゲーム名を スタートという文字が打たれるまで入力し続けなくちゃいけない。 つまり上の文では変数のペアを渡す回数を事前に設定しなくちゃいけないから 無理。 こういう場合どうしたら上手くいくだろう。やっぱり、whileの中ではハッシュマップにデータを入れて、 whileが終わった後にハッシュマップの内容を引数付きのコンストラクタに渡さなきゃダメかな。 でもそれをしたら実行途中で止まるんだよね。
>>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
書き込んでから気付いたが >>名前とゲーム名をスタート だから || じゃなくて &&か?
>>425 ApplicationContext contxt = new ClassPathXmlApplicationContext("applicationContext.xml");
の箇所です。コンストラクタで引っかかります。
ソースはURLのものから一言一句変えていません。
>>426 絶対パス、参照パス、
Fileオブジェクトを作ってからのAbsolutePathもCanonicalPathも
全てがFileNotFoundExceptionになる模様です。
>>429 ありがとう。しかし、別クラスのコンストラクタに渡した値を、
そのクラスのgetNameメソッドとかでメインメソッドに返したい場合は
どうしたらいいの?
>>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");
って感じで
繋ぎ直すか、新しいコネクションを作って同時に二本を張るかじゃないかな
434 :
430 :2009/05/27(水) 11:04:04
Eclipseを使わずに書いたら、対象のXMLを読み込めました。 どういうことなんだろう?
System.out.println(new File(".").getCanonicalPath()); の実行結果を見ながらよく考えれ。
436 :
430 :2009/05/27(水) 11:56:19
解決しました。 springにおいては、DI情報を記述するXMLはクラスパス上にあるものしか参照できないみたいです。 ClassPathXmlApplicationContextのAPIドキュメントには書いていないので引っ掛かってしまいました。 スレ汚し失礼しました。
>>432 確かに違和感あるね。他のRDBMSはどうなんだろう。
mysystemはデータベースってことになってるから、
個別のデータはテーブルということになる。
実際に業務システムを構築するときには、DBは販売と人事のデータ連携など
よくある話で、通常はデータベースを分ける。
しかし接続がDB単位となると、一つのDBにぶっこみになるんで扱い難いね。
各人、どうやって凌いでいるんだろう。
それとバックアウトの考え方は、存在するのだろうか。
438 :
432 :2009/05/27(水) 12:04:27
>>437 やっぱり違和感ありますよね。
少し前から疑問に思ってて。
例えば
mysystem1には顧客の個人データ
mysystem2にはその日行った個人データの一部+作業データ
とかになってくるとどうにもねぇ。
販売に於いても同じような事が言えるし。
やっぱり
>>433 が言ってる様に繋ぎ直す、または二本張りか。
繋ぎ直す方がスマートには見えるが、なんかいちいち閉じて繋いで閉じて繋いで・・・
ってやってると 複数回やる場合には絶対ロスがありそうだし。
む〜ん。 何か知恵があればお願いします。
… MySQL の開発者ってこんなんばっかなの?
…妄想に取り付かれてるだけだろ
>なんかいちいち閉じて繋いで閉じて繋いで・・・ コネクションプールは使ってないわけ?
442 :
432 :2009/05/27(水) 13:26:56
>>441 ループ使っても閉じて・繋いで・閉じて・・・でしょう?
オーバヘッドでかいよ。
Driverのロードは一回だけだし、 コネクションも繋ぎっぱで良いし、 SQL文毎にリクエスト発生は普通だし、 いったい何が問題なんだ
性能を意識するレベルじゃなさそうだから、 まずは実現させることが最優先じゃね
そもそもwebプログラミングとかDBはやる気失せるのは俺だけ?
javaというかHTMLでしがボタンaを押すとA.classへ ボタンbを押すとB.classに遷移するようにしたいのだがHTMLにはどう書けばいいですか
WebProg板へどうぞ。 まあその内容だとスルーされて終わりそうだが
Eclipseなどでインスタンス変数のsetter/getterを自動生成すると、 setter内でインスタンス変数を参照する箇所にはthisが付きますが、 getterにはthisが付きません。 メソッド内で変数名が競合しない場合、thisは付けないものなのでしょうか。
>>449 コーディング規約によっては this必須にしてる場合もある。
そうでなければ必要ないなら付けなくてもいい。
例えば Sunのコーディング規約だと this は必須ではない。
気にいらなければコードテンプレートいじればいい。
外部プログラムをjarの中に入れて、その外部プログラムをjavaプログラムから実行させたいんだけど、これって出来るの? ProcessBuilderとかgetResource()使ってやってみたんだがうまくいかないorz
jar : Java ARchive
>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だとデータベース名とテーブル名の間にテーブルのオーナー名が入る。
>>452 補足
外部プログラムをA、javaプログラムをBとすると、AとBを同じjarにアーカイブしてBのコードからAを実行したい。
画像とかならgetResource()でBのコードから使えるんだけど、同じ様にしてBのコードから実行ファイルを実行する方法が分からないという事です。
アップデートしてもアンチウイルスソフトで「java\jre1.5.0_06」と「javaws\jre1.5.0_06」が検出されてしまいます。 最新版にはなってるみたいなんですが何か大切なことができてないんでしょうか。 それともアンチウイルスソフトの感度を上げてスキャンしてるからでしょうか。
>>446 WEBは食わず嫌いだったんだが、この不況で研修と称してSeasar始めてみたら
意外とおもろいよ。
書類用の Cerelon 1GHz 512MB のノートなんだが hot deploy に二分w
>>431 質問の意味が解らない。意図も解らない。
>>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をそれぞれインストールすればいいんですよね。
貼って下さったサイトはそれぞれどれをダウンロードすればいいんでしょうか。
>>460 >301 に晒してある設定でなら、なんとか動く。
VisualSVNとMySQLも調整次第で同時起動可能。
H2使えという話もあるがw
ところでEclipseのSVNで file:///C/svn/ とか使えないんだが・・・使える方法
ないかな?
こんばんわ。 GridBagLayoutについて質問させてください。 当方、JAVAをやり始め、フォームエディタを使わないでGUIを 作ろうとしています。 画面構成として、JPANELにGridBagLayoutを設定して、 そのグリッドの中にボタンだとかラベルを格納しているのですが、 どうにもつかいづらく感じています。 なぜGridBagLayoutを使っているかというと、いくつかのサイトで、 レイアウトの中ではGridBagLayoutが一番融通がきくという旨の 記述がよく見受けられたからです。 確かに、SQLから取得したものを表状にして表示させるには 都合がよいのですが、ボタンの配置だとかになると、あくまで セル単位でしか移動できません。 これならば、HTMLと同じ間隔で配置のできるsetBoundsのほうが 使い勝手はよいのではないでしょうか。 setBoundsの方も使ってみようと思うのですが、 そこまで「GridBagLayoutは融通がきく」といわれているのは なぜなのでしょうか。 長文になってしまって申し訳ありません。
>>463 サイズを変更して、縦長、横長にしてもあら大丈夫。
>>464 ありがとうございます。
サイズを変更したコンポーネントと、他のコンポーネントとの
相対位置がかわらないということでしょうか?
ちなみに書き忘れたけど、サイズを変更っていうのは配置するパネル全体のサイズ。 その中で、複数セルをまたがった配置ができるというのがミソ。 絶対、Lotus123とかExcel見て思いついたんだろうなぁ、というレイアウト。 そういった単純なわりには多彩な表現力と、全体サイズが変わった時もけっこう安心 という点が好まれる理由だと思ってる。
>>458 1.5.0_19はSUNに登録しないと落とせないような。
java関連のプロダクトのアーカイブページには6の方はupdate13まで落とせるけど、
5の方はupdate18までしか選択できない。
登録フォームまでしか見てないんだが捨てアドを作って他の必須項目は匿名希望とかでもいけるのかな?
468 :
463 :2009/05/28(木) 00:17:12
なるほど、確かにExcelとにていますね。 ただ、Excelのほうは、セルの大きさを自由に設定できるのですが、 GridBagLayoutはできなくないでしょうか? (私がしらないだけであれば、申し訳ありません) 調べてはみたところ、セルの最小幅は設定できそうですが、 最大幅の設定はできなかったのではと思います。 確かに、セルの幅、高さ指定が自由にできるのであれば、 使い勝手はよさそうですね
>>468 融通が利くからといって使いやすい書きやすいってことはない
汎用性は高くなくても要求に必要十分なものがあればそのほうが使いやすいことも多々ある
複数のレイアウトマネージャの組み合わせを検討してみるとか
GridBagLayoutで制約条件を書くよりは少し楽な(でも少し重い)GroupLayoutを使ってみるとか
自分に必要な機能だけを実装したレイアウトマネージャを作ってみるとか
状況に応じてやりようはいろいろある
融通が利くって要するに自分でそこを融通するってことだからねぇ
471 :
463 :2009/05/28(木) 00:40:49
そうですね、「融通がきく=使いやすい」とは限らないですね やはり、自分がやりたいことに適している方法と組み合わせてみます。 ありがとうございました。 参考までにお聞きしたいのですが、このスレには、「自分はGridBagLayoutが使いやすいから 使っているなぁ」って方はいらっしゃいますか?
使い易い=手で書き易いってことならGridBagLayoutが使い易いと思ったことはないなw 一つのレイアウトマネージャである程度複雑なレイアウトができるという点で、 確かに昔は融通のきくレイアウトマネージャの筆頭だったけど。
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 となります。 何がいけないのでしょうか?
もしかして public class test extends Frame implements ActionListener,Runnable implements KeyListener { って書こうとしてる? public class test extends Frame implements ActionListener,Runnable,KeyListener {
477 :
473 :2009/05/28(木) 00:56:34
>>475 その下段で書くとabstractじゃないとかいうエラーになります
それでpublicをabstractに変えると別のエラーになります
>>477 そのエラーをちゃんと読んでKeyListenerを実装するのに必要なメソッドを追加しようとか思わないのか?
479 :
456 :2009/05/28(木) 01:00:56
480 :
473 :2009/05/28(木) 01:01:13
追加する以外の意味をわかっていないもんでどうすればいいかわかりません abstractもよくわかってないもんで
>>479 何を脆弱性とするかはアンチウイルスソフトによって違う。
アンチウイルスソフトのメーカーに問い合わせた方がいい。
>>480 言語の基本的な理解が十分でないと思うので今後もこの言語と関わるならインタフェースに関して復習すべき
>>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の両方をインストールする必要があるんでしょうか?
>>479 Javaは、新しいバージョンをインストールしても古いバージョンが残る。
プログラムの追加と削除から古いやつを明示的にアンインストールしる。
特に事情がない限り、6.0が入ってれば5.0は不要。
>>484 プログラムの追加と削除を見たらjava (TM) 6 update 13というのしか入ってませんでした。
バージョンは6.0.130とあるんですが1.6.0_13のことでいいんでしょうか。
とりあえずCCclernerを使って脆弱性が検知されなくなるか調べてみます。
>>485 それだと、そのJava処理系は内部でJavaを使ってる特定のソフトのためのものかもしれん。
C:\Program Files\Java (XP以前の場合)の下にないなら、おそらくそうだと思われ。
>>486 XPで「C:\Program files\java\jre1.5.0_06\bin\java.exe」と
「C:\Program files\java\jre1.5.0_06\bin\javaws.exe」が検知されました。
最初から全部書かないですみません;
>>455 同じ jar にアーカイブする事と B から A を
呼び出す事には何の関係もない。
呼び出すやり方が間違っていたら同じ
jar になっていても呼び出せないし、
正しく呼べば別の jar でも呼べる。
そして同じ jar にアーカイブする事自体は
呼べるかどうかとは無関係に簡単だ。
>>455 getResource() で取得した実行ファイルをテンポラリファイルか何かに保存して実行。
Java初心者です 開発環境を整えようと、Java SE 6からJDK6をDLし、 実行してインストールをしようと思ったのですが、エラーが発生して強制終了し、インストールできません。 JDK5でも試してみましたが、やはり同様の現象が起こりました。 どなたか、対処法を知っている方がいらっしゃったら、教えてください。お願い思案す。
>>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」が入ってるフォルダ を開こうとすると「このフォルダにはシステムを正常に保つためのファイルが含まれています。 フォルダの内容は変更しないでください」と出るんですが、更新か削除か何かできないんでしょうか。
jFrameを継承した2つのクラスを作ってmainから呼び出している ある時はAのフレームだけ、その他はBのフレームを呼び出したい なんか、いい呼び出し方ない?
main() の中で if で分岐すればいいじゃん。
>>492 そのメッセージで検索しました? それはOSのシステム保護メッセージに使われてる文面です。
その近くに「このフォルダの内容を表示する」というのはありませんか?
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\ です。
java1.5が上手く削除出来てなくて、1.6がインストール出来ないのでは ないかなあ。どこかで、アンインストーラを探してみるのも一考。
>>498 >>499 インストーラの再インストールを行ってみた結果、無事インストールすることができました!
本当にありがとうございました!
むしろ、javacのトラブルではなくて、申し訳ない><
前も書いたんですが 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する方法ないでしょうか?
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点けたくないなら、インターフェースのメソッド実装せんとエラーになるのは当たり前じゃね?
>>502 ありがとうございます
いくつか抜けてました
>>495 スキャン結果から「C:\Program files\java\jre1.5.0_06\bin\java.exe」と「C:\Program files\java\jre1.5.0_06\bin\javaws.exe」
のファイルを開いて、それが入ってる上のフォルダに遡っていったら保護メッセージが出てるページに行き当たりました。
その中に入ってたのでフォルダ内で削除するのはまずいんでしょうか。
インターフェースが何なのかもエラーメッセージの意味も分からずやってるんだから仕方ない
>>504 うぜえからOSからクリーンインストールしろ。
>>506 クリーンインストール後のことなのでそれも無理そうです。
しつこくしてしまい失礼しました。
レスしてくれた方ありがとうございました。
定数クラスをinterfaceにして、 定数を使用する側のクラスでimplementsするのって邪道なのでしょうか? interfaceは実装クラスの振る舞いを定義するようなものですし、 抽象メソッドが一つもないのは意義的に間違っていますよね?
それってバッドノウハウってやつじゃない?
動けば全て正道、邪道なんでことはない。 言語文法で網羅されている仕様を、一部の狂信的マニアが、 己の好みに反する事に対して邪道と言って見たり、 ある種の宗教的な標準化組織が、勝手に標準化事項を標榜し それに反することを邪道と言ったりするが、気にすることはない。 動けば、これ全て正道なり。
昔は原理主義が強くて邪道扱いだったが別に弊害もないし今となってはどーでも良い話。 特に 1.5 で import static ができて implements 不要になったから尚更。
>>509 バッドノウハウじゃなくてアンチパターンな。
ファイル内データを読んで、 各クラスから使用する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("ファイル名"); ・・・ }
>>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の引数をファイル名で
ハードコーディングしてクラスを分けているので共通化できないか
と思います。
メンドくせえからソース全部上げろ >実行時にエラー そもそも提示されてる箇所だけじゃ、↓がコンパイルエラーだ public static long COUNT = getkeyValue("COUNT"); private static String getkeyValue(String key) { 変に抽出して書くと逆に相手にされなくなるぞ
properties形式で書いてloadするのじゃダメなのか?
結構ソースは長いので要点だけ書きました
下記はすみません、誤植でした
public static String COUNT = getkeyValue("COUNT");
private static String getkeyValue(String key) {
ですね。
もし、これでも不明でしたら全部載せます。
>>516 SJISで読まないといけないものもあり、自作しました。
長くなかったらソース貼るつもりだったのか・・・恐ろしい 車輪の再発明って流行ってんのかい?
>>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 秒)
>>513 ですが、
ファイル読み込み機能が主題のように書いてしまい
混乱させてすみません。
>>514 の方法で
現在もファイル自体は読み込めています。
staticメソッド内でインスタンス変数を使用させて
そのインスタンス変数に外部から値をセットさせる
方法をご教示ください。
>>513 はあくまで例としてとらえていただけますでしょうか。
AntでJUnitを実行する場合、 実行対象として指定するのはクラスファイルでしょうか、ソースファイルでしょうか? 一応どちらとも動きはするみたいなのですが。 (Eclipse 3.2 + JDK1.5.0_18、Ant1.7.1)
BufferedReaderのインスタンスがあるんだけど、BufferedWriterを使ってファイルに書き込みたい この時に、BufferedReaderのインスタンスをjava.lang.Objectにキャストすれば、 BufferedWriterで使えるようになるの?
だから全部上げろって言ったのに スルーされる前に上げといた方がいいぞ >staticメソッド内でインスタンス変数を使用させて コンパイルできません
>>521 動いたとしても、建前はクラスファイルのはず。
>>522 キャストじゃ無理。読んだ端から書け。
520みたいなのが最も厄介な相手だな。スルーする。
>>523 こんな感じにしたいのですが・・・
getkeyValueメソッド内のPropFile
に値をmainから渡したいのです。
下記のコンストラクタ使用では無理でした。
※ファイル読み込みに関しては
Propertiesを使うということは勉強になりました。
public static void main(String[] args) { new Property("data.properties"); ・・・ }
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
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; } }
>>513 ですが、ちょっとテンパッてたようです。
もう一度、整理してよくしらべてみます。
ご迷惑かけました
>>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
ダメな質問例の代表パターンだな
3.4ってそんなに重いのか?
結構古いバージョンから3.4にアップデートしたら
キー操作がかなりきびきび動くようになったと思ってたのに。
>>534 とりあえずワークスペースを別の場所に移動してみれ。
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); //数値に変換 // 中略 } } --------------------------------------
>>534 重い理由は判断の上か?
例えば512MBの実メモリでハングアップしかけるとかのメモリのトラブルだと、
上にあるeclipse.iniの設定変更で、かなり改善する。
512だと倍プッシュで1GBくらいのページングファイルしか取っていない場合も
あるけど、2GBとかに増やしておくことも必要。
瞬間的にとか1GBなんて越えることはざらだから。
>>536 Character.digit は digit(char ch, int radix) と digit(int codePoint, int radix)
しか無いから String を渡せない。
PenM1Gのノートで使ってるけど3.2も3.4も変わらんぞ重さは 起動は確かに3.4の方が長いけどそれ以外は同じ
>>508 Effective Java 17 章にだめって載っている。
定数のみのクラスを作って
import static パッケージ名.クラス名.変数名;
とするといいと思う。
ファイルxがローカルにある場合はそれを表示し、 無いときは何処からかコピーをしてきて表示するプログラムを作りたい この時、読み込み→例外発生→例外が発生したのでコピー→読み込みと ファイルxがあるか→無かったのでコピー→読み込みのどっちを使ってコードを書くのが普通なの?
その程度の事はコーダー個人のセンスの範疇だと思うが、後者の方がダサくはなりにくいかな。
>>540 どれほどシビアにファイルの生存チェックするかにもよる。
例えば file.exists() と new FileInputStream(file) の間で
ファイルが削除されちゃう可能性も考慮する必要があるなら後者は使えなくなるし。
>>540 条件次第なとこも。
全部丸投げで仕様もお任せなら前者の方が良いかな。
仕様も作って自分で制御したいなら後者かな。
544 :
デフォルトの名無しさん :2009/05/29(金) 09:56:38
WEBサイト製作する時に、 PHPとJAVAどちらを使ったらいいですか? また、どのようなサイトがどの言語に合っていますか?
ホームページの単なるリッチ版 → PHP バックエンドシステムと統合したり何階層にも分かれたり構成が大規模 → Java
546 :
540 :2009/05/29(金) 13:34:41
みんな、ありがとう
何かマズいこと言ったか?
>>544 何がしたいかによる。
>>545 がよくわからん事を書いているが、
PHPでもバックエンドといろいろやりとりしたり出来るし、
バックエンドをJavaとすることだって出来る。
PHPを選ぶ積極的な理由になるのは、
PHPなら共用サーバでDBも含めて非常に安く借りられる、ってこと。
(性能がそれで十分かどうかは別の話)
JavaだとTomcat等のアプリケーションサーバが必要になるが、PHPに比べるとかなり割高。
そんなに性能要らないのにって言っても、メモリが必要だから必然的に高くなるパターンが多い。
ブログサイト・会社のホームページ等のいわゆるホームページ系はPHPで十分な事が多いし、
PHP上で動作するWordpress等のブログエンジン、CMS等を利用した方が
管理の手間が断然減って良いはず。
物販等の場合もほとんどの場合PHPで十分
Javaを利用する場合は・・・・俺の場合、PHPが嫌いだから。
JSPも含めてHTML内にタグ書き込むのが嫌。
ウェブサイト作るのにJava自体が必要な事は少ないから、
何をやりたいのかをちゃんと考えてから選んだ方が良い。
可能かどうかの話なんか誰もしてねぇし。それだけならアセンブラだって可能。
アセンブラでがんばれよw
>>537 変数をchar型にしたら出来ました。 有難うございます
配列同士の比較は内容が同じであっても equals()でやってもfalseが返るのは何故でしょうか
そういう仕様だから。 必要なら Arrays.equals() とか deepEquals() を使う。
556 :
デフォルトの名無しさん :2009/05/29(金) 21:58:22
opentypeのフォント使って文字を描画したいんだけど、どうやってフォントを指定するの? GraphicsEnvironment.getAllFonts()しても、opentypeのフォントだけ取得できないし…。
>>554 >そういう仕様だから
誤解させるようなことを言うな
ちゃんと参照とかで説明してやれよ
>>553 比較しているのは参照アドレスだから。
内容(?)を比較してtrue返すのはStringクラスとラッパークラスだけ。
>>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
アセンブラでCGI対応って大変そうだ。
フレームにフリーラインの書けるパネル、描画をクリアするためのボタンをaddしたプログラムを作ったのですが、ボタンの上にマウスを置いた後に描画しようとするとパネルの0,0の位置にボタンが描画されてしまいます。 ボタンはフォーカスされた時点でイメージをバッファしてるのでしょうか? repaint()の前にバッファをクリアするようなプログラムが必要になるのでしょうか? 説明が下手で申し訳ないのですが解決方法を教えていただきたいです。
>>558 デマぬかすな。Date, Locale, File, URL, ... いくらでもあんだろ。
>>561 おまえアセンブラも CGI も触ったことないだろ。
>>564 お前馬鹿って言われてるだろ。
言われてないなら可哀相な目で見られていることに気が付いてないだけだ。
以上、かわいそうな奴からの反論でした。
オブジェクト型の初期値はNULLのハズなのに、BufferedWriteとかのクラスを使っていると IDEはNULLで初期化してくださいと文句を言ってくるのですか?
>>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
>>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();
}
}
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); } }
>>568 そうなのね、知りませんでした
ありがとう
相対パスか絶対パスかを判断する方法ってないですか?
File#isAbsolute()
>>573 ありがとうございます
java se6 api リファレンスのjava.io.fileを探しましたが、私の目は節穴だったようです
>>569 >>570 ありがとうございます。
根本から間違えていたみたいですね。
参考になります。
576 :
デフォルトの名無しさん :2009/05/30(土) 20:37:08
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));
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); } } }
>>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);
}
}
やさしいJava基本編の内容を理解して、ぐちゃぐちゃでも良ければ 動くものを書く程度までの実力はつきました。 あとわかるのは拡張forやlistなど 特別なJavaの機能やオブジェクト指向について学びたいのですがオススメの書籍はありませんか? 今はEffective Javaがいいのかな?っと思っています
core javaとか? まあやさしいjavaは忘れることだ
>>581 基本押さえたら次は実践だろー
何か興味のあるものは無いのか?
HTTPget でも自作してみるとか、そこからリンク辿って自動的にダウンロード
してみるとか、ミニゲーム作ってみるとか、科学技術計算に耽溺してみるとか。
>>582 Amazon.co.jp: コアJava2〈Vol.1〉基礎編 (サンソフトプレスシリーズ): ケイ・S. ホーストマン, ゲイリー コーネル, Cay S. Horstmann, Gary Cornell, 福龍興業: 本
これですね
立ち読みしてきます
>>583 実践って言うほどじゃないんですが、TwitterのBOTをTwitter4j使った遊んでいます
>>584 ばっちりじゃん。目標があるなら好きなように遊んでいれば問題ないと思ってる。
>>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);
と出てしまうのですがどうすればいいのでしょうか?
設計が悪い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);
参考元のソース見て納得いったわ。 BarGraph の継承元が Frame になってる。 こいつを bar_chart と同じく Applet に変更。
591 :
576 :2009/05/31(日) 02:05:59
>>590 やっと完成しました。
色々と答えていただきありがとうございましたm(_ _)m
ちょい解説。 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を使って受信しているのですがスレッドを例外の発生なしで強制終了したいときにはどうしたらいいしょうか?
>>593 読み込みで readObject() が wait してるんだろうから、どのみち例外は起こる。
というか、起こらなかったら不味くはないか?読み込めたと勘違いしそうだから。
ということで、例外は起こるもの(実際起こってるし)として処理すればいいだけ。
595 :
デフォルトの名無しさん :2009/05/31(日) 02:45:10
つまり、生成時に使ったInputStreamをクローズ→ObjectInputStreamが例外を投げる。 この場合、ObjectInputStreamはcloseしなくてもいいですか?
強制終了しなきゃならない事態なら、あとは終わるだけだろうし。 だったら、気にすることもない。 試しにクローズしてもいいだろうし。 終わらないなら、読み込み終わるまで放置していればいいし。
JavaファイルをJarにかためるときは、どういった単位で固めるのですか?
ソースツリーをそのまんま。 Eclipseとかでライブラリのjarに対応して設定すると、classとソースコードを連動 してくれる。 よく配布ライブラリにはxxxx-sources.jarってあるけど、そういうこと。
setメソッドでURLが正しいかどうか確認した後で、フィールにあるStringオブジェクトに値を入れたい public void setUrl(String url) throws MalformedURLException { URL checkUrl = new URL(url); this.url = url; } ちゃんとしたURLでないと、インスタンスが生成されず例外が発生するのでこの様に書きました しかし、それだけのためにオブジェクトを生成するのはかなり抵抗があります そこで、もうちょっとしっかりとした書き方を教えて欲しいのですが... 教えてエロい人!!
前スレで質問した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(); }
続き.. 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の中でさらにキー入力受け付けるにはどうすればいいでしょうか?
>599 >それだけのために URLの判定って、それだけでものごっつい処理だったりするから・・・ 自力でURL(RFC2396)を正規表現でチェックしたら・・・軽く死ねます。 厳密にチェックしたければ、 1. URISyntaxException をハンドリングしつつ URI インスタンスを生成する。 2. isAbsolute() であることを確認。 3. toURL()でURL生成。
>>600 そりゃイベント処理で無限ループさせてたら次のイベントは取れないわな・・・
イベント駆動ってことを考えて再設計しなされ。
具体的には、イベント処理関数内部でループすんな!
そうですか..変更します。
605 :
599 :2009/05/31(日) 16:27:54
>>602 ありがとうございます
URLクラスだけで完結しないのですねorz
きりが無いから、URLで作れるか否かで充分ではないか?
こんばんわ。 質問をさせていただきます。 下記のことをしたいと思っています。 @フレームは、GridBagLayoutを設定 Aフレーム上に3つのパネルをセットする Bパネル1はsetboundsを設定 Cパネル2、3は、GridBagLayoutを設定 自分でソースを組んでみたのですが、パネル1が表示されません。 パネル2、3は表示がされるのですが・・・ GridBagLayoutのフレーム上で、setboundsのパネルを 配置することができないなんてありませんよね?
エスパー召喚の呪文だな
よくわかんないけど、フレーム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);
ちなみに、その後に追加してみた別レイアウトなパネル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);
パネル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); 適当なパネル追加が笑える。
ついでに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)としなくても良い理由が知りたいのです。 教えて下さい。
Javaで別システム(C++で作成)と連携させたいのですが、 最近は何で連携するのが流行でしょうか。 昔はCORBAなんかで連携してましたが、最近の流行を知りたいです。 JavaのシステムからC++のシステムにデータをわたし、加工したものを 受け取りたいのです。 同期的、非同期のどちらも可能である方法が知りたいです。
>>613 インスタンスのメソッドの中から同じインスタンスのメソッドを呼び出してるだけ
だから。
内部的には、インスタンスメソッドにはそのインスタンスへの参照が暗黙的に
渡され、それを介してインスタンスメソッドにアクセスする。これがthis。
ただ、言語規定を漁ってみたけど記述がみつからん。_| ̄|○
>>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); } }
>>617 con_gbc.fill = GridBagConstraints.BOTH;
con_gbc.weightx = 1.0;
con_gbc.weighty = 1.0;
con_gbc.gridwidth = GridBagConstraints.REMAINDER;
を追加。
JavaでDirectXを扱う方法を教えてくださいまし。 OpenGLはあるようなんですけど。
623 :
デフォルトの名無しさん :2009/06/01(月) 12:04:17
jlistの入力補完?を止めたいんだけども、 リストに表示される文字列を入力していくと、自動で選択してくれる機能 お願いします。
>>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 の時のです 出来ればソース全文書いてください
>>625 参照の同一性と中身の同一性、好きな方で比較できると思えばいいんじゃね?
629 :
デフォルトの名無しさん :2009/06/01(月) 17:21:07
すいません java.awt.im.*をインポートして,入力された日本語を漢字へ変換したいのですが 使い方がまったく分かりません。 どうすればインプットメソッドを用いた漢字変換ができるのでしょうか 簡単にでいいのでどなたか教えてくれませんか?
これは酷い
ArrayListなどのコレクションは、何だか便利らしいという事はわかりました でも実際に実装する時には、どのようなタイミングで使えばいいのかわかりません 教えてエロい人!!
>>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;
}
というようにオーバーライドしてある。
オブジェクトの中身なんて実装者にしかワカランから、仕方ない。
equalsはサブクラスにオーバーライドされる前提だろ
>>631 必要になったら使う。
配列を置き換えてよいとは言わんが、適時積極的に使って良いもの。
むしろArrayListを使わずに何が作れるというのか
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のことを知っている)のがとても疑問です。 もっと一般的な情況を想定してリフレクションかなんかで処理しているのですかね?
>>638 DropTagetのコンストラクタの中に addDropTargetListener(dtl); とあるけど、これ?
いえ、dropTargetのハンドルそのものをプログラム中で使用しないのでaddDropTargetListenerとかは関係ないです。 ちなみに長くなるので省略してしまったのですが、DragSourceのインスタンスもDragGestureRecognizerのインスタンスもプログラム中で使用していません。(DragSourceのインスタンスはDragGestureRecognizerを生成するために一回だけ使いますが) ソース、ターゲット、ジェスチャーの各インスタンスはFrameを拡張したクラスの中で生成されたきりです。 置きっぱなしなのに、ちゃんと動いているのが不思議だなと。
もちろん、DropTargetのコンストラクタやDragGestureRecognizerの生成メソッド のパラメータにソースやターゲットとなるコンポーネントをのせてるところが、 ミソののでしょうが。
ミソののでしょうが。==>ミソなのでしょうが。 連投&字の間違い、すみません。
なぜこのプログラムは出力に「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"); } } }
Stringの==だけ本当にどうにかならないかな
Stringだけ特別扱いできんだろうなぁ。 ==で比較できない!って他のクラスとかでも言い出す奴が出だすし。
文字列は書き換えられないんだから、 参照型じゃなくて基本型でも良かったんじゃないかな。 Javascriptみたいに。
>>643 String#internについて調べよう
>>648 そこまでわかった上で言う人間ばかりだったらそれで良いのだろうけどな。
651 :
631 :2009/06/02(火) 19:22:56
toStringメソッドってどこのメソッドでもオーバーライドしているけど、 これはデバッグする時に使うって本当?
誰がそんなこと言ったんだよ…
clone()メソッドについて質問です。 java.lang.Objectのclone()はシャローコピーですが、docには 「通常、このメソッドにより返されるオブジェクトは、このオブジェクト (複製されている)から独立している必要があります。(後略)」とあります。 ということは、java.lang.Object以外のクラスのclone()は、ディープコピーになるようにオーバーライドするのが好ましいと考えていいんでしょうか?
いいよ
今Javaを勉強中なのですが、疑問におもったことがあります。 メソッドからはフィールドにthisなしでアクセスできるのに、 なぜコンストラクタからはthisがないとアクセスできないのでしょうか。 c++ではメソッド、コンストラクタ共にthisなしで フィールドにアクセスできたのですが・・。
>>657 なんでっていわれてもそういうもんだからしかたない
>>657 引数と区別するためにthisを付けてるのと勘違いしてないか?
>>659 その通りでした。
くだらない質問すみませんでした。
661 :
デフォルトの名無しさん :2009/06/02(火) 21:55:23
複数のBeanで構成されるDTOで Beanの追加と削除メソッドはあるんだけど 更新はBeanの変数を直接弄る これってありなんですか? DTOの概念だと更新メソッドを追加してDTO内でBeanの変数を弄らないと駄目だと思うんですが、、
>>578 このプログラムのdata_set[]の配列にmain関数から、もしくは引数で数値を渡すには
どうすればいいでしょうか?
664 :
617 :2009/06/02(火) 22:13:26
>>621 ご回答ありがとうございました。
教えていただいた方法で行うことができました。
返事がおくれてすみませんでした
>>665 適当にネットをさまよっていただけです
そこに、デバッグがなんちゃらって書いていたので
まー実際、デバッグに使っちゃうよな。
>>666 じゃあJTableのデフォルトレンダラはセルの内容表示にtoStringを使ってるから
JTableを使用する=デバッグしてる時ってこと?
今後におきましては、Object#toStringはデバッグ目的以外での使用をお控え下さい。
toStringなんてまともに展開してくれないだろ
>>653 toStringはオブジェクトの文字列表現を返すメソッドだから、
端的にオブジェクトの内容を示すようにオーバーライドしておくのは特別なことではない。
オブジェクトの内容が見えるからデバッグ「にも」使えるということであって、
デバッグ「にだけ」使うという意味に取ったのならそれはもったいない使い方。
672 :
665 :2009/06/02(火) 23:22:25
お前ら、ありがとう 今日のお前らはいつもより親切だな
何回か、GridBagLayoutについて質問をしているものです。 また、はまってしまいました。 パネルを1〜4まで作成し、それをGridBagLayoutのframeの上に配置 しているのですが、パネル4をframeに追加すると、 それまで出ていたパネル1とパネル2が表示されなくなってしまいます。 自分なりにプログラムを簡素化したりしてみたのですが、どうにも わかりません。 大変申し訳ないのですが、見ていただいてもよろしいでしょうか
何回か、GridBagLayoutについて質問をしているものです。 また、はまってしまいました。 パネルを1〜4まで作成し、それをGridBagLayoutのframeの上に配置 しているのですが、パネル4をframeに追加すると、 それまで出ていたパネル1とパネル2が表示されなくなってしまいます。 自分なりにプログラムを簡素化したりしてみたのですが、どうにも わかりません。 大変申し訳ないのですが、見ていただいてもよろしいでしょうか
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);
ソースが長くなるならうpろだ使えよ
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
そうですね、その手がありました。うpロダつかいます
1レス以上使うソースはうpろだ行きとテンプレに入れるべきだな 問題なのはテンプレ読まない一見の新参が多いことだが
680 :
673 :2009/06/02(火) 23:53:56
681 :
デフォルトの名無しさん :2009/06/02(火) 23:57:36
SQL*PLUSからは実行できるSQL文がJDBC経由で実行すると 内部エラーが発生します。 長いSQL文が原因かどうかわかりませんが SQL文を短くすると内部エラーがでません。 なにかアドバイスが頂きたいです。 ODBC経由では実行できてJDBC経由では実行できない 経験があるかたいらっしゃいましたら教えてください。 以上です。
683 :
デフォルトの名無しさん :2009/06/03(水) 00:05:23
ORA-00600: 内部エラー です。 「SQLException(クローズされた接続です。)」ってログは はいてます。
>>674 masterとかobjectとかdbとかのパッケージ関係(importとクラス変数)を削ってmainメソッドを追加して、
newしたItem_regのshowFrameを呼んだけど、全部のパネルが表示されたんだが?
あああ、いいい、かかか、さささ×3個の4つでいいんだよね?
>>683 よくわからんがconnectしてないんじゃ
リサイズしたらおかしくなるってことか! おかしくなるソースを示されるよりも、 理想的にはどういうレイアウトになってほしいのかを言ってくれたほうがいいかもしれん。
687 :
685さんへ :2009/06/03(水) 00:17:41
直前のSQL文までは実行できているので コネクションは貼れてます。
689 :
688さんへ :2009/06/03(水) 00:32:48
とにかくすっごい長いSQLぶんです。 UPはできません。すみません
>>689 ・そのSQLは更新系か参照系か
・問題が起きるSQLの直前にConnection#isClosed()でtrueが返ってきてたりしてないか
・そのSQLの実行はStatementによるものか、PreparedStatementによるものか
・実行対象のSQLの大体の文字列長はどれくらいになるのか
追加 ・使用している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です。
>>674 どういうふうにレイアウトされることを想定しているのか分からないので
とりあえずリサイズでいきなり消えたりしないようにするには
mainPanel1.setMinimumSize(new Dimension(400,450));
以下、2〜4のパネルにも設定。
GridBagLayoutのドキュメントをしっかり読むこと
>> この制約オブジェクトに加え、GridBagLayout は、コンポーネントのサイズを決定するために、
>> 各コンポーネントの最小サイズおよび推奨サイズを考慮します。
694 :
690さんへ :2009/06/03(水) 00:49:59
Connection#isClosed()試しましたが クローズはしてませんでした
>>694 元となるSQL文、またはPreparedStatementによるsetXXXのパラメータ値をファイルから読んだりはしていない?
ちなみにSQLExceptionが出るのが常に確認できるなら、せめてトレースくらいは貼ってほしい。
これは別に問題なく出せる情報でしょ?
>>693 > 以下、2〜4のパネルにも設定。
は各パネルの推奨サイズと同じサイズに最小サイズを設定っていう意味ね
>>655 独立というのは
Object c=o.clone();
のときo.equals(c)がfalseを返すという意味。
それ以上の言及はjavadocではされてないし仕様上cloneはシャローコピーだが実際ディープコピーで実装することもある。
が、それが良いか悪いかは別問題。
DBは一筋縄じゃいかないからなぁ。 VBAやってたころ、DAOからADOに切り替えたら結果セットを解放しないで 次のクエリを投げるパターンでコネクションが増えちゃって一時テーブルが 見えなくてエラーになったことはあった。というようなケースも考えられる。
まあ無いとは思うけど、 Connectionを複数持ってて、実はPreparedStatementを切ったConnection側から生成していたとか・・・
698の事例(ただ、これはSybaseでのケース) 一時テーブル作成。 更新クエリ。 参照クエリ。(結果セット戻る) 結果セット読みつつ一時テーブル参照クエリ。 ここで二本目のコネクションが内部的に張られていて、別セッションと見做されて 一時テーブルのオーナーでなくなっていた。 っーように結果セットの方式も関係しているから、聞くだけじゃわかんねー
俺がOracel+TomcatのConnectionPoolingではまったのは、 ConnectionPoolingではストアドが実行できないって事。 ストアド用のコネクションを別に張ったらOKだった。
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")); みたいに、コンストラクタの引数にコンストラクタを入れること、 あるいは、メソッドの引数として戻り値を持ったメソッドを入れることって 何か呼び方がありますか? 入れ子?ネスト?インライン? じゃないんですよね…。 ついでにメリット、デメリットは? ○インスタンスを作らないから速い? ×スタックを消費するから多用すべきではない? よろしくお願いします。
どうでもいいがFileInputStreamにもnewいる FileInputStreamのインスタンスも普通に作成される 差といえばFileInputStreamを受け取らないぶん 参照カウントが1低いくらいだろ
706 :
クサれ脳みそ :2009/06/03(水) 21:43:44
可変長配列ArrayList<>に配列array[n]をaddしたいのですが、当然add(array[])してもうまくいきません。 forループなどで一個ずつ要素を加える以外になにかスマートな方法がありましたら教えていただきたいです。
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
うちの環境だとここのろだにあげたファイルの最初の行が消えるのか 消えた行は//package master;なんでパッケージにするのが必要なら気をつけて 面倒だからこっちで試すときはコメントアウトした
713 :
674 :2009/06/03(水) 23:40:12
自分のソースに導入するんじゃなくうpしたソースをコンパイルして実行したらどうなる?
それが普通に表示されるなら上書きした
>>713 の手元のソースに原因がある
それさえも駄目なら表示関係の環境のせいかもしれないけどそんなことはあまり起こらなさそう
715 :
674 :2009/06/03(水) 23:52:58
>>714 なるほど、了解しました。
試してみます。
ちょっと今日はこれでPCを落とさないといけませんので、
明日試してみて、また報告します。
お付き合いいただいてすみません。
ありがとうございました。
あるlistが帰ってきて、その中から値をランダムに取得しようと思います。 listの大きさの範囲は0~無限です どうすればいのでしょうか?
>>716 大きさ無限のリストなんてありえないわけで
選択する時点でのリストが持っている要素数をList#size()で求めて
RandomクラスなりMath.random()なりを使って0以上要素数未満の整数の乱数値を1個作り
List#get(int)で要素を取得する
使用しているListの実装がInteger.MAX_VALUEより多くの要素を持つようなものなら
たぶんsize()ではなく正確な要素数を返す代替メソッドがあるはずなのでそれを利用し
乱数に関してもその要素数をカバーできるサイズのものを使用する
>>716 無限リストで疑似乱数でも取得するのかい?
0で除算 を防止する方法って無いですか? すべての割り算に、分母が0でないかどうかチェックするよう コーデイングするのは無理です。うっかり忘れてしまうことがあるんです。 特に、外人が書いたコードに多い。つか、外人は0除算の概念が無いのでは?と思うほど。 コンパイラ時に検出・・・とか、 ソースコードのバグ検出ソフトか何かで検出するとか・・・ 実行時に例外を発生させるとか・・・ ソースコードの品質を向上させる、何かうまい方法は無いでしょうか?
米国では Chuck Norris can divide by zero. だそうだからその関係かな。 アサーション使ったら?
計算内容定式化できるなら一箇所に纏めてそこだけtrycatchすりゃいいやん プログラムの構造そのものの問題だと思うよ
>>719 DBの設計を工夫するとか、いろいろやってみる。
0除算が発生するケースは、そんなに無いと思うけどなあ。
もし一本のプログラムで大量の0除算が想定されるなら
頭で全てのチェックを一括でかけてはじいたらいいかな。
コンパイラオプションでエラーを強化できるけど、
それやると自分のところでは動いても、他の環境では動かないなどの
問題が出てくる。
そのあたりをトータルで考えて対処するのがいいね。
値の範囲くらいチェック入れようよ
配列aの中身が{あ,い,い,う,あ,え,う,お}なら配列bが{あ,い,う,え,お}のように 配列内で重複しているものを整頓するようなプログラムを作りたいんですけどどうしてもうまくいきません どうすればいいか教えてくれませんか?
速さ気にしないならHashtableにキーとして格納して列挙するのが簡単
>>725 まずソートやって、forで先読みで重複分を読み飛ばすロジックを
組めばいい。javaの質問じゃないだろう。
単なるロジックの話だ。
どの言語に限らず最後はロジック力が問われるので頑張ってね。
listって最大何個の要素を追加できるんですか?
>>720-723 レスありがとうございます。
もちろん、自分のコーディングしたところは0除算のチェックくらいしてるんですが、
問題はチャックノリスの野郎たちが書くコードなんです。
せかく0除算チェックを入れたのに、いつのまにかオーバーライドで別のメソッドをこしらえて
あいかわらず平気で0除算しやがるんです。
javaインタプリタは0で除算すると Infinity という値を返すように実装されているようです。
つまり、javaインタプリタは0チェクしてるわけです。チェックしてるのに平気で嘘の答えを返すんです。
ここで何らかのExceptionを発生させるようなオプションなどがあれば
0除算のコードを特定できるはず。
・・・そんな機能って無いですか???
INFINITYが返るってことは少数使った演算か 整数だけならArithmetricExceptionがあるんだけどな
カバレッジテストとかやってる人いる?
俺はjUnitと併せて、Coberturaを愛用してる。
ttp://cobertura.sourceforge.net/ ユニットテストでのテスト漏れとか、
条件分岐でテストしきれていない箇所なんかが検出されてなかなか便利。
他に、これと同様以上の機能をもったツールって無いかな。
djunitじゃダメ?
その二つって両方ともJUnitみたいにレポート吐ける? 夜間バッチでAntからJUnitの自動試験を実行してXMLでログ吐いて、 そのログをjunitreportで可視化してるんだけど、 それができるんなら入れてみたいな。
>>733 djUnitの紹介ありがとう。
さっそく入れてみた。なかなかいいねぇ。
Eclipse上でカバレッジが完結できるのがいい。
動作速度も、coberturaより速い感じ。
ただ、UTF-8のソースコードからのレポートをエクスポートしたら
日本語のコメントが文字化けするみたい。
それ以外は問題なさげ。Coberturaと併用してみる。
>>734 coberturaはantタスクで動かせるから、バッチでレポート出力できるよ。
出力形式はXMLとHTML。
間違えて0で除算するくらいなら 間違えて0でない値で除算している可能性もあるに違いない
ちゃんと読んでなかったが 0除算チェックとかInfinityが嘘の答えとか 釣りに反応した俺がくやしい
すまん意味がわからない
馬鹿な俺に教えてください。 String test = null; while((test = br.readLine()) !=null){ System.out.println(test) } スコープの内側だと当然readLineで読んだ物が入って出力されるけど、 スコープの外側でtestに入れた物を参照したいが出来ない。 読み出す方法あります?
阿呆な質問してすまんかった
自己解決した
結局
>>739 だと読まれるたびに消えるから(ryってことですよね
それを言うならスコープでなく(while)ループの内側、外側じゃないかな。 本当に(変数の)スコープの外側で参照するようなコードを書いたら、 実行段階でなくコンパイル段階でエラーになる。
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をおこないながら、 ループで回してます。
すみません、ちょっとしたプロキシ(リクエストヘッダに動的にパラメータを付加するだけ)を作りたいと思っているのですが、参考になるサイトを教えていただけませんでしょうか。。。 下記のような機能にしたいです。 ・適当な空いてるポート(xxxx)をリスンする。 ・Httpリクエストのヘッダに、パラメータを付加する。 ・レスポンスは特になにもする必要はない。 要は、IE等任意のブラウザで、プロキシをlocalhost:xxxxに設定すれば常にリクエストヘッダ(クエリストリング等では×)に、パラメータが付加されてWebサーバに渡される、というのが目的です。 Fiddlerでカスタムルールを使う等すれば機能的には十分なのですが、作ってみたく、足がかり的なヒントをいただけたら幸いです。 よろしくお願いいたします。
>>744 Apache MINA使うのはどうだろう?
exampleに、proxy serverのコードがあった気がする。
漏れが知ってる限りだと、 rubyのWEBrickってライブラリを使えば 10行くらいでプロキシが作れる。 ってのはこのスレ的にNGなんだろうな。
thread = new Thread(this)って何してるの?
なんとか入門書を読んで理解できるくらいまでになりました。 まだ一人でコードは書けないですけど他人のコードは 苦労しつつも読めるようになりました。 一重にこの掲示板のご教授のたまものです。
>>747 Threadクラスのコンストラクタに自分を渡してnewしてる。
文法的なことを訊いているのか、意味合い的なことを訊いているのか
djUnitについて質問です。 テストソースを書く際にはDJUnitTestCaseを継承して書くと思うんですが、 要するにJUnit 4.x系の書き方はできないってことでしょうか? @BeforeClassや@AfterClass、@Beforeと@Afterも動いてくれないみたいですが・・・。
>>751 ぐぐると対応方法が結構な数出てくるわけだが。
>>754 docを見てgetできるものすべてgetしてみたのですが、
取得したいものが得られませんでした
なので取得したURLを開けば、取得したい本文を得ることができるので
そのURLから本文を得る方法を知りたいと思いました。
Perl Tips | Java で、サイトにアクセスして HTML を取得する方法
http://perltips.twinkle.cc/java/get_html.php で取得できるか試してみます
スクリプトでHTMLには書いてないと困っちゃいますけど・・・
>>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 飲み会でレスが見れんかった
わかった、ありがとう
public class Sym { public static void main(String[] args) { String text = ""; text = text + String.valueOf((char)(args[0].charAt(1) - 5)); } } Stringクラスは値の変更が出来ないと思っていたのですが、 textの内容を変更してるように感じるのですけど どう考えたらよいのでしょうか。
>>759 変わったのは text であって、String じゃないからねえ。
実態と参照
// 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));
>>761 textという同一の変数名で新しくオブジェクトを作って
前のは破棄したということでしょうか
String text = "foo"; text = "bar"; textは変わったけど。 "foo"はどうなった?
文字列定数はGCの対象になりますか?
Stringクラスのオブジェクトは内容の変更が出来なくて 変更したいならStringBufferを使いなさいと書籍などで見ました。 StringBufferだと参照はそのままで内容だけを変更できて、 Stringは変数名は同一で別参照にして新たにオブジェクトを 作れるのでしょうか、というのが疑問に思ったのです。 疑問といいますか、よくわかってないですね。
JVMはもともと文字列プールというものを持っていて、 いわゆる文字型リテラルが指定された段階でプールにオブジェクトを作成し、そこへのポインタを返す。 同一の文字列が既にプールに在る場合は、そこへのポインタを返す。
intern()だとどうなるんですか?javadocを見ると同じようですが・・・・
StringBufferじゃなくてStringBuilderにしとけ
文字列プールって八種テーブル? もしそうなら動的に作成された文字列も格納されるのかな。
>>771 されない。
明示的に String#intern() された奴か、コンパイル時の定数となる文字列だけ
実装次第じゃないか
intern()だけど、SUNの実装…というかOpenJDKだとどうなってんの? あふれちゃってOutOfMemoryとかにならないよね。
言語仕様にきっちり明記されてるのに実装次第とはこれいかに
たしかに明記されてるな。 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を使って得た一意なインスタンス。
Javaのソースを解析して、SJISの文字列を抜き出して、 できれば書き換えまで行うツールを作りたいのですが、 JavaってVBみたいに文字列を途中で改行して実装したりできますか? \"に気をつけるくらいで簡単に作れますかね? \uで文字コードで実装してるのは無視という仕様で問題ありません。 また、そのようなEclipseプラグインがあるなら、教えてください。
なにおぅ! nkfなんてクソ 時代はqkcだオラ
懐かしいなwwwww
ソースがテキストがshift-jisでosがja_JP.UTF-8環境だと、 コピー先のファイルの文字コードは何になるの? ただし、コピー先のファイルはjavaで新しくする
コピーしただけだと、文字コードは変わらない。 コピーじゃなくてテキストとして読んで、テキストとして書くなら、書いた通りに動く。
あんまりな回答なので補足。 テキストを読む時と書く時に、それぞれencode指定する。
>>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 {
を当てないとコンパイルできなかったりする。
ものすごく古い漢字コード変換プログラムであるnkfを、メンテナンスするプロジェクトです。
くだらない話ですが、Javaって何も返却しないときは 末尾のreturn文って書かないのが通例なの? サンプルコード打ち込んでいて、ちょっと気になった。
787 :
781 :2009/06/07(日) 17:06:53
>>782 文字コードに変化はないのか
ありがとう
でもqkcってばUTF-8以前にお亡くなりになっちゃったからなぁ。
>>786 書いても書かなくても問題は無いが、無駄な気がするから書いてない。だけだと思う。
好きずき。
790 :
デフォルトの名無しさん :2009/06/07(日) 17:25:18
Eclipseを使っているのですがjavaファイルだけ保存してあった場合 次に起動するときプロジェクトを作ってクラスに同じファイル名を打ち込んでって感じでいちいちやってたんですが javaファイルが10個超えてるときとか結構時間がかかってしまいます まとめて一気にプロジェクトに入れる方法とかってありますか?
何を言っているのか理解できないんだが、 とりあえずキミの行動は明らかにおかしい気がする
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();
>>792 joinの仕様をどう理解しているか分からないから誤解しているかどうかも分からない。
もしかして、
> msg1が終了したら、msg2の出力が再開されるのかと思っていた
ってことは、msg1.join()がmsg2を止めると思ってる?
msg1.join();
msg2.join();
は単にmainスレッドがまずmsg1の終了を待ち、次にmsg2の終了を待つということで、
msg1とmsg2は互いに止めあったりはしない。
>>792 うん、joinどころかスレッド自体を誤解しすぎていて、どう誤解しているのか理解できない。
スレッドで期待される動作は、並列に動くことだから。(コア数によっては並列でないこともある)
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);
}
なぜ?
>>795 > 指定された配列に連動する固定サイズのリストを返します。
サイズを変更するならサイズ可変のリストにコピー。
>>793 あ、そういうことか。
納得です。ありがとう。
>>791 すいませんずっと使ってるわりによくわかってなくて
javaファイルだけあって別のパソコンとかで起動させる場合って普通どうやるんですか?
VMを入れれば勝手に関連付けされると思うぞ
800 :
796 :2009/06/07(日) 18:59:31
>>795 コピーというのはArrayListやLinkedListなどでtestをラップするって意味ね。
でも、それをやるならプロトコル部分も込みで全体をsplitせずに、
URLに渡してファイル部分やパス部分を得てそれをクラックした方がいいんじゃないかとも思う。
URLのインスタンスを構築するときに正しいURLかどうかも分かるし。
>>798 うーーーーん;; それはもしかして import の仕方だろうか?
空プロジェクトを作ってから、それに対して、ファイルシステムから import する。
802 :
795 :2009/06/07(日) 19:01:30
それでintern()しまくるとアボーンしてJVMごと吹っ飛んじゃうってことでおk?
昔の Tomcat は intern() したセッショントークンに synchronized かけることで セッションのロックを実現しててコーヒー吹いた。
家でJAVAの環境を整えたのですが、複数のファイルを一度にコンパイルする処理がうまくいきません。 (「シンボルを見つけられませんでした」と出ます) 実行環境は、jdk1.6.0_13で javac main関数のあるファイル.java と実行しています。 大学のパソコンの環境でならこの命令で実行できます。
>>806 >>1 CLASSPATHに変なもの(おそらくquicktime)が設定されている。
QTJavaがあっても、カレントがちゃんと設定されていれば動くだろ
カレントわざわざ消してました… ありがとうございます
あるクラスSampleを設計している最中、引数無しのコンストラクタをオーバーロードして、 引数の異なるコンストラクタを作成することになりました。 すでに引数なしのコンストラクタの中には処理が記述してあり、 それをコピー&ペーストして新しいコンストラクタを作成するか、this()を使ってやるか、 どっちが良いのでしょうか?
811 :
デフォルトの名無しさん :2009/06/07(日) 21:21:50
Javaの本についての質問いいですか? 解きながら学ぶJavaよりもう少し上のレベルで、 実用的なテクニックを学べる本が欲しいんですが、 何か良いものありませんか?
>>810 経験的には、
引数なしのコンストラクタの中身を引数ありのコンストラクタに移動して
引数なしのコンストラクタから引数ありのコンストラクタを呼び出すことが多い。
>>810 「引数が異なる」とあるが、
経験上で言えば、大抵は引数の一番多いコンストラクタに処理を任せていると思う。
Hoge() { this(null, null, null); }
Hoge(Param param3) { this(null, null, param); }
Hoge(Param param1, Param param2, Param param3) { /* 入力値検査後、処理等 */ }
>>805 intern()の使い方から逸脱しすぎてるし、そりゃすごい離れ業だわ。
で、intern()したrefはどうやって消してんの?
javadoc読む限りじゃgc対象でもないじゃん。
>>812 エー 810は親クラスのコンストラクタの中身をコピーして作るとか言ってないか?
>>810 super(...) を使う。
>>810 this() を使うってどういう風に使うんですか?
>>811 実用的なテクニックなど無い。実用的って夜のオカズに最適とかか?
やりたい目的をイメージできてるか?出来ていないなら、まずはそこから。
オーバーロードとオーバーライドを区別していない人がいらっしゃいますね。
819 :
815 :2009/06/07(日) 21:44:46
ああ、そうか、すまんかった!!
820 :
デフォルトの名無しさん :2009/06/07(日) 21:56:05
>>817 返信ありがとうございます。
プログラミングってそういうものですか@@
「●●を作りたい!」とかの具体的な目標は特に持ってませんでした。
Javaで何ができるのかまだわかってないので、
一通り使いこなせるテクニックが学べる本があればな、と。
まずは目標を作ることから始めてみます。
>>811 Effective Java は読むべき本だと思います。
この本には実用的なテクニックとその背景にある考え方が説明されています。
822 :
デフォルトの名無しさん :2009/06/07(日) 22:18:28
>>821 返信ありがとうございます。
Amazonで見ましたがかなり評価高いですね。
Javaの初心者本を終えてから読んでみます。
あと目標を作ります。
次のステップに進めるように頑張ります。
皆さんアドバイスしてくださってありがとうございました。
オレも、明解JAVAと解きながら・・・の2冊は読破して 形は作れるようになったが、そこからの課題は・・・なんでしょう。 やっぱり、次の段階として、ゲームか電卓を作ることになるんでしょうか。
>>822 Effective Java は初心者本を読み終えた程度だと、かなり難しいよ。
ある程度のプログラムを組んで悩んだ経験がないと全部は理解しきれない。
あと、買うならEffective Javaの第2版の方ね。古い方はもう売っていないと思うけど、念のため。
実際には、Effective Java が難しいんじゃなくて まともなプログラムを作るのはそこらへんの一般人が考えているより ずっと難しいことだということ
>>822-823 俺はperlとかawkの替わりにテキストデータ処理する目的で使い始めたなぁ。
あと、ゲームのセーブデータの改造、趣味の物理計算、FTP自作してWEBの
簡単更新したりとかもやった(blogの無い時代)。
そういったごく身近な目的がいいよ。モチベーションが維持できる。これ重要。
続けられなければ意味は無いからね。
でも複雑なコントロールは使わないのでグラフィックばっかに知識が偏ったり、
目的のためだから都合のいいC#に浮気したりとか、という落とし穴もある。
今のところWEBアプリ作るようになって出戻ってるがw
>>826 オブジェクト指向理解してますか?
その様子だと一生理解できないんでしょうけど…
FTP自作できるなら困らないとは思いますがあなたにはjavaもc#もcの延長なんでしょうね。
何煽ってんだお前
オブジェクト指向って言いたいお年頃
PerlのOOPなめんな
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))); の部分を変えたらいいのはわかるのですが、どう変えたらいいのかさっぱりわからないんです。
>>830 Perl OO なめてなんかないけど、
中途半端なモジュール(クラスじゃないよw)作られるのが一番困る。
>>832 > int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
とりあえず rnd.nextDouble() を消したらどうなるか見てみよーか
Perlはなめられてもしょうがないだろ
835 :
デフォルトの名無しさん :2009/06/08(月) 01:59:21
プログラミング経験全くのゼロなんですが、javaを始める前にjavascriptを先にやった方がいいと聞いたのですがどうでしょうか?
結果が目に見えるので、動くうれしさが大きい からだと
javascriptプログラムじゃないけどそれも良ければどうぞ
>>832 g.drawImage(image[i],x,y,x+80,y+80,this);
もっと引数が多い版あります
いまだに
>>837 みたいな発言をする奴がいることに驚いた。
JavaScriptなめすぎ。
いやーなんでJavaScriptなんて紛らわしい名前なんだろ はやく名前かえりゃいいのに
何でJavaティーなんて飲み物あるんだよ 紛らわしいから改名すりゃいいのに
842 :
デフォルトの名無しさん :2009/06/08(月) 08:51:06
それでString#intern()について知ってる人はいないんですか。
そりゃjavascriptじゃなめられる
>>745 レスありがとうございます。
MINAはちょと時間がかかりそうだったのでJettyというのを利用することにし、
とりあえず、『何もしないプロキシ』は作れました。
が、新たに問題発生。
doFilterでブッ込めばいいかなと甘い考えでいたのですが、考えてみたら、
HttpServletRequestには、getHeaderはあっても、setHeaderがないのです。。。
楽にリクエストヘッダに付加する術はないでしょうか。
よろしくお願いいたします。
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側の設定や実行方法の問題であれば、誘導願います。
>>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
>>848 ecma-262とjsは違う。標準化された言語仕様とその実装だ。
>>842 既にこのスレでも山ほど出てるだろ
文字列プールなんて言葉まで出てきているのに、何が不満だ
852 :
>>835 :2009/06/08(月) 13:22:46
文字列プールにinternされた文字列(の参照)を消すにはどうやるんですか?
その辺の管理はプログラマの領分ではない
参照が切れたらGCの対象になるから放っとけ
jarからexeファイルを生成するツールで ヒープサイズの設定を行えるものはありますか?
>857 出来ないもんなのかと思ってexewrap調べた俺はなんなの? -a <vm-args> アプリケーション実行時の VM 引数を指定します。
文字列プールってのはclassファイルの中にあるんで消せないしgc対象でもないんじゃないんですか? String.intern()した文字列はどこに格納されてSUNやOPEN JDKの実装ではどうやって消してるんですか? このあたりを聞いてるのですが・・
もうお前このスレに来なくていいよ
>文字列プールってのはclassファイルの中にある ハァ?
>>859 1行目を100回音読しろ
頭おかしいから
誰かキチガイにJavaを使わせないようにするツールを作ってくれ。
GCとはゴールデンクロスのことですか?
任天堂のgamecubeだろ
バイナリ実行ファイルのリソーステーブルか何かと勘違いしてんじゃね
867 :
857 :2009/06/08(月) 19:47:10
>>858 exewrap -g -a -Xmx512m -i [icoファイル] [jarファイル]とやってもうまくいきません。
>>827 ぶはは、javaもc#もcの延長。は否定できないな。
でも、リスナとかawtってOOPの理解無しには使えないだろ?
古典のデザインパターン程度の基本は押さえざるを得ない。
ただ、OOPなんてものは手段であって、目的にならない。
目的のない勉強なんてクソ食らえだ。
>867 俺の環境だとうまく行くんだが。 Runtime.getRuntime().maxMemory()で確認すると確実
こういうガイキチもどうにかしたいものだ
871 :
デフォルトの名無しさん :2009/06/08(月) 21:56:46
リスナって言うのはイベントの意味でいってるんだろ? OO関係ないじゃんw
1スレで香ばしいのが大量に湧いたなw
873 :
デフォルトの名無しさん :2009/06/08(月) 22:07:00
>>855 ,856
消さないとintern()しまくったときメモリエラーでJVMが落ちませんか?
簡単な攻撃方法だと思うんですけど・・
それってListにnewしたオブジェクトを延々と詰め込んでいくのと本質的に何が違うんだよ 最終的にメモリが足んなくなって例外返すだけだろバーカ
JVMのクラックでもしたい人なのかな? 放置しろ放置。
876 :
デフォルトの名無しさん :2009/06/08(月) 22:18:10
言語仕様ちゃんと読んでないでしょ。 internはListのとは一味違いますよ?
じゃあ読んで自己満ぶってろ おわり
本当にうざいなw ちょっと埋めてやる。
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
再開
本当に妙なの沸いてるなあ。
886 :
デフォルトの名無しさん :2009/06/08(月) 22:29:05
この時期はしょうがないね
暑くなってきましたね〜。
入社して待機状態の新入社員の質問みたいだな そのうち抽象クラスやインターフェースが出てきそうだ
3日続けて同じ質問を繰り返す暇があるなら実行してみればいいのにな。
>>889 君いたなニートじゃないんでヒマがないんですよ・・・
>>890 時間が作れない連中は無能評価されているのはわかるか?
893 :
デフォルトの名無しさん :2009/06/08(月) 23:15:17
>>890 PCにつきっきりでないと何も出来ない無能君なのか?君は
暇がなさそうなのは分かるよ
誤字ってるからね
お願いだからNG処理してスルーしてくれ・・・。
>>891 ありがとうございます。
といっても言語仕様にのってないところだったんで S U N や O P E N JDK の実装ではどうなってるかなんですけど。
Sunに乗り込んで聞いてこいカス
わざとNGに載らないようにするなよ。 こんなクズに答えてる奴も死ねよ。
もうだめだこのスレ
末期だなw
レスすんな。
なぜこのプログラムは出力に「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"); } } }
全力でスルー
==は参照アドレスの比較だから。
907 :
デフォルトの名無しさん :2009/06/09(火) 00:06:07
equalsegnorecase を使う癖つけろ
いや、それはねーわ
使う頻度多いだろ
そうでもなくね。
大文字小文字混在してる中で同一比較って、何に使ってるの? 勝手に画面系だと創造してみる
javascriptの中にjsp記載しても動くのでしょうか?
大小文字比較は普通toLowercase()とかで整形しね 誤動作のもとだろ文字比較厳密にやらんと もしもっと良い方法有るなら教えて欲しいけど ところにより作法違うんだねこの辺
toLowercase()したあとの比較は厳密じゃないだろ。
大小混在比較の場合だけそうしてそうじゃない場合は普通にやんね よくバグらないな
916だけど 別に非難してるわけじゃないからね ただ最初にこの作法で覚えちゃったから驚いただけ
918 :
デフォルトの名無しさん :2009/06/09(火) 01:54:08
このスレの人は答えられない質問があるととたんに冷たくなるんですね。 自分は何の努力もしてないのに人を非難するだけじゃ、いつまでたっても友達は出来ませんよ。
いやそうでも無いよ
>>916 厳密な比較って言っただろ?
文字列の厳密な比較って言ったら大文字小文字無視はまずくね?
比較する場合って汚染された値の場合が多いんだがそうじゃなきゃ最初から大文字か小文字どっちかに統一して文字列持ってるかじゃないの?
921 :
デフォルトの名無しさん :2009/06/09(火) 02:24:16
うん でも混在そのものが厳密じゃないじゃん
922 :
デフォルトの名無しさん :2009/06/09(火) 02:25:27
でも比較他どうやってるの??
>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が今一良くわからん
MINAは面白そうだな。 サンプルが最初からあれこれ付いてるのがいい。 今はNIOのFileChannelとバッファをもっと簡単に使える 自分用APIをシコシコと作ってる。 入出力も、同じメソッドの引数を1つ変えるだけで ByteBuffer#allocate()とかdirectAllocate()とか ByteBuffer.MAP_MODEなんかを自由に使い分けられる。 できあがったら、ひっそりとgoogle codeあたりで apacheライセンスで流してみよう。。。
FileWriterクラスは効率が悪くて、 ラップしてBufferedWriterクラスを使えば効率が良くなって さらにラップしてPrintWriterクラスを使えばもっと効率が良くなって・・・ らしいのですが、ということは、 大抵の人は、PrintWriterクラスを使うと考えていいのでしょうか。
JTreeで、格ノードに個別のインデックス値を設定する方法ない? Win32APIのTreeViewではできたんだが、JTreeでどうやるのか さっぱり分からない
Win32なんて関係ないからjava初心者だって言えば良いよ nodeにname設定すれば表示されね
BufferedInputStreamにFileInputStream詰め込んでバッファサイズ調整するべ普通
>>929 name設定とは?ググッても一つもヒットしない・・・
やりたい事は、ノートが選択されたら、その各ノードごとの
処理をするという単純なことなんだけど
今までやってたWin32APIだと、各ノードごとに数値を設定して
swich分で処理するとい単純な処理で出来たけれど
JTreeだとどうしていいやら・・・
getUserObjectでテキスト値取得して判別する処理でやったら
同じテキスト値があったので駄目でした、同じテキスト値でも
格ノードで別の処理をしたいので
過去スレで既出かもしれませんが教えてください。 ...i586.exe ...i586-p.exe ...i586-p-s.exe など、配布ファイル名が複数ありますがどういう意味なんでしょうか?
nodeのメソッド見た??
JDK1.6.0_14だと、Coberturaが動かないな。
プログラムも始めてなんじゃないのか
「格ノード」って書いてあるから、 Java言語以前に日本語もままならないのかも。
>>931 Name って java.awt.Component じゃないの?
TreeXxxListener もあるけど。
JTreeにname値はないわな TreeViewと勘違いしてる
>>933 それらしきものはないですね
>>937 java.awt.Component?
それをどう応用したら良いか分からんのですが
>>938 TreeViewにはあったんですけどね
ノードのコンストラクタで変数String指定してやるとそれがTree上で表示されるけど それじゃダメなの???
JTreeとノードや他のクラスとの関係が今一分かって無いんじゃないのかな 少しチュートリアル読んでみたら?
>>940 はい、その事は
>>931 で書きました
Stringで指定したテキストを取得して判別していたのです最初は
でも、同じテキストのノードがあって駄目だったんですよ
同じテキストでも、違うノードなら違う処理をさせたいので
で、それぞれのノードに個別の数値を設定できたら良いなと思ったんですが
その方法が分からなくて
JTreeは使ったこと無いけど、 各ノードに個別のインデックス値を設定する必要があって それを実現する方法がJTreeに無いなら、 JTreeを継承して新たなクラスを作ればいいのでは?
>>941 チュートリアルは読んでみたんですけどね
ちょっとここ1週間行き詰っているので、何かヒントもらえませんかね
>>943 個別のインデックス値を返すメソッドの作り方が思いつきません・・・
945 :
デフォルトの名無しさん :2009/06/09(火) 15:50:16
同じStringってのが昨日の話しじゃないけど==で同一と認識されるものなのか .equals()で同一と認識されるものなのかと言う話はあるけど 後者なら俺は普通に同じテキスト表示されてるよ
945はDefaultTreeNode拡張してfield増やして使ってるけどね そういえばNodeは何を拡張した??
ごめん今見たらDefaultMutableTreeNodeだな
>>929 君、いつも一言多いんだよね。友達少ないでしょ?w
>>946 DefaultMutableTreeNodeです
ああ、さっぱり分からない
1週間悩んでとうとうここで相談することにしたんですけど
なんとかなりませんか
950 :
デフォルトの名無しさん :2009/06/09(火) 16:01:21
いや実際そうでしょ初心者に対する場合とベテランとでは接し方変えるよ 普通はね
コンストラクタは super(String)で作って有るんだよね
953 :
デフォルトの名無しさん :2009/06/09(火) 16:06:13
問題解決できないなら書き込まんで良いよ ((DefaultTreeModel)jTree1.getModel()).reload(); addした後でこれやった?
>>953 やってみましたが、解決の手段にはならないようですが・・・
だとするとNodeを変にオーバーライドしなきゃそうはならんから その辺だね
初心者独特のミスだな
>>955-956 うーん?何か話がおかしな方向へいってませんか?
えーと、やりたい事はシンプルで
JTreeのノードが選択されたときに、その選択されたノードごとの
処理を行いたいのです
最初に行った方法は、(String)node.getUserObject()で
ノードに設定されたテキストを取り出して、そのテキストごとに
処理させるという方法でした
しかし、この方法だと、テキストが同じノードがあった場合
同じ処理に飛ばされてしまいます
同じテキストでも、違うノードなら、違う処理がしたいのです
ノードが選択されたとき、それが同じテキストであっても
別のノードだと判別する簡単な方法はありますか?
958 :
デフォルトの名無しさん :2009/06/09(火) 16:30:33
それ2つのノードが==になっちゃうノードの生成して無い?
参照アドレス比較すりゃいいだろ…
960 :
デフォルトの名無しさん :2009/06/09(火) 16:38:46
まずノードの選択が上手く出来てるかどうかも怪しいな TreePath selected = jTree1.getAnchorSelectionPath(); ChartTreeNode node = (ChartTreeNode)selected.getLastPathComponent(); return node; 例だけど こういうのでちゃんとセレクトされてるかどうか 普通の人では起こらない現象だからどこか変な箇所が有ると思うよ
そして文字列プールの話に戻るのであった。 つかNodeの違いを調べたいのに わざわざ表示されてる文字列を取得するとはコレイカニ。
確かに
初心者は思いもよらぬところで間違うから 難しいな
質問スレなのだから、質問者にもう少し優しくても良いのでは。 少なくとも人格攻撃は不要だと思います。
人格じゃなく技術技量に対してだから良いと思う
昨日あたりから妙なのが沸いてるんで。 2〜3日すれば平常に戻ります。たぶん。
だな
968 :
964 :2009/06/09(火) 17:40:18
すみません。人格攻撃は言い過ぎました。
全然OK気にして無い
970 :
デフォルトの名無しさん :2009/06/09(火) 17:58:45
>>950 ゴズリンなんか神だけどどう接するの?
というか、どうやってその人が神か分かるんだ?
みなさんは今どんなアプリケーションをjavaで作ってるんですか?
972 :
デフォルトの名無しさん :2009/06/09(火) 18:04:39
書き出しで分かったでしょ今回は 今は新型のクローラプログラム作ってる
コレクションには、ArrayListクラスやHashMapクラスなどが あるのですけど、配列のような感じがすます。 これらをコレクションというように呼ぶのはどういう感触なんでしょうか。 コレクションというと収集というイメージなんですけど。 何故コレクションと呼ぶのか、イメージが涌きません。
>コレクションというと収集というイメージなんですけど。 まさにコレじゃん。
そうなんか俺そういうとこ疎いが 集合って意味合いなのかい?
データ収集をする色んなクラスをまとめたものなんですか それとも 便利で有用なクラスを収集してまとめたものなんですか。
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 ちょっと今から見て考えてみます
何か良いやこの初心者誰か何とかしてやって Nodeコピーして作成して無いかって事な そもそもデバッグして自分で発見できる範囲のことだろこれ
selectに問題が有りそうなのは見当付くが 初歩的なコードミスっぽいよな
でも内容的にそう大したコードじゃなさそうだから一回出してみ
>参照しているアドレスで比較しても、同じテキストなら >同じ処理がされしまうわけで・・・ これが既に意味わかんない
javaのプログラミング環境なんですが、 Java SE Development Kit (JDK)をDLして 保存したはずなんですがインストール方法 がいまいちわかりません。 jdk-6u2-windows-i586-p.exeファイル名もないのですが。
とりあえず次を立ててくるから一時シャラップ。
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode( "A" ); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( "A" ); 質問者は上の2文を実行した時 node1==node2 になるのは分かってる?
990 :
988 :2009/06/09(火) 19:22:37
ごめん間違えた。 node1!=node2 ね。
次スレ乙
>>985 インストール用のファイルが無いなら再ダウンロード。
まぁ、JDK 無くとも JRE 有れば Eclipse は動くから。
>>984 ノードの参照アドレス比較しろよって言ってるのに、頑なにテキストの比較しようとしてるよな。
そういう持ちネタなのかと思えてきた。
993 :
977 :2009/06/09(火) 19:29:19
あれ、わかんなくなってきた。 node1.toString().equals(node2.toString())は等しいけど、 node1.equals(node2)は等しくはないよね?
Node node1 = new Node("A"); node1 = node2; にしないとtrueにならんね 簡略でごめん
996 :
デフォルトの名無しさん :2009/06/09(火) 19:40:02
node2 = node1; だ 更にごめん
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
Stringクラスのequalsメソッドは信じられるってことですか
つまり 俺が疑ってるのはNodeを生成してaddする際に Node node2 = node1; にして無いかって事だな 俺らからするとありえんけどな
どっちにしてもコード出してもらった方が早いな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。