08/03/03 16:21:45
MapCanvas.javaに OffScreen m_pix_off_screen;
Chara.javaに Accel m_accel;
とあるんですが、これは違いますかね…?^^;
113:デフォルトの名無しさん
08/03/03 16:23:37
>>112
Javaの基礎から勉強し直した方がいいよ
114:a
08/03/03 16:28:16
JAVAの基礎すら知らないので、
とりあえず起動させる手順教えて下さい。
115:60
08/03/03 17:29:22
java3Dを使いたいですなぁー
116:デフォルトの名無しさん
08/03/03 17:47:22
>>114
ここはプログラムを作る人のための板なんで、
自分で作らず拾って動かすだけの人はお呼びでない
>>115
じゃあ使ってみれば
ひとりごとはブログにでもどうぞ
117:デフォルトの名無しさん
08/03/03 20:31:23
こんな質問恥ずかしいんだが初心者歓迎って書いてるから大丈夫だよね
JComboBoxに対してsetSelectedItemメソッドを実行するとJComboBoxに登録した
アクションリスナーが反応しちゃってどうも意図した動作が得られない
JComboBoxの項目が選ばれたときのみリスナーが反応するには
どこでどう判断させればいいのかな?
恐らくイベントを受け取るactionPerformedメソッドで
それがユーザーアクションによって起こったものかどうか判断できるのだろうか…
いくらヤフっても出てこない。どなたかご教授お願いします
118:デフォルトの名無しさん
08/03/03 20:44:56
>>117
一番安直なのは、setSelectedItemする間だけリスナを外す
もしくはフラグを立ててイベントを無視する
ユーザ操作によるものかどうかは判定できないんじゃないかなぁ
119:デフォルトの名無しさん
08/03/03 20:52:42
>>118
リスナを外す方法は、ちょっと不粋かなぁ?と思ったんだけど
それしか方法がないなら仕方ないね。即レスありがとう
120:デフォルトの名無しさん
08/03/03 22:24:44
shift_jis、jis等の文字コードを指定して
全角文字列を一文字ずつ漢字コード取得していくのは
どのようにすればいいでしょうか?
121:デフォルトの名無しさん
08/03/03 22:29:01
>>120
byte[] b = "あ".getBytes("Shift_JIS");
122:デフォルトの名無しさん
08/03/03 22:30:00
サーブレットの数が沢山あり、
a.b.servlet1.java
a.b.servlet2.java
...
a.b.servlet100.java
web.xmlに1個ずつ<servlet>a.b.servlet1</servlet>と定義するのは大変なので、InvokerServletを利用したいのですが、
アクセスするURLにパッケージ名を含めないという要求もあります。invokerでパッケージを指定する方法ないですか?
/context/xxx/servlet1 -> a.b.servlet1.java
/context/xxx/servlet2 -> a.b.servlet2.java
...
/context/xxx/servlet100 -> a.b.servlet100.java
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/xxx/*</url-pattern>
<class-pattern>a.b.*</class-pattern>
</servlet-mapping>
みたいなことが出来たら嬉しいのですが。
InvokerServletのサンプルにも上記のような物がなく、代わりになるような物も見つからず。。。
123:デフォルトの名無しさん
08/03/03 22:37:01
質問です。
import java.awt.*;
import javax.swing.*;
public class GUI extends JFrame {
public static void main(String[] args){new GUI();}
public GUI(){
Container c = getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
c.add(new MyForm("オラオラオラ", "オラ"));
c.add(new MyForm("無駄無駄無駄", "無駄"));
JButton b = new JButton("そして時は動き出す");
b.setAlignmentX(JButton.RIGHT_ALIGNMENT);
c.add(b);
pack();
setVisible(true);
}
class MyForm extends JPanel{
public MyForm(String label, String value){
setLayout(new FlowLayout(FlowLayout.RIGHT));
add(new JLabel(label));
JTextField tf = new JTextField(10);
tf.setText(value);
add(tf);
}
}
}
最後のボタンを右詰にしたいんですけど、右詰にならないのは何故でしょう。
124:デフォルトの名無しさん
08/03/03 22:38:02
>>122
invokerもどきを自分で作るのがそんなに大変とは思えないけど・・・
リクエストURLからクラス名を切り出して
Class.forName(~).newInstance()でサーブレットをインスタンス化して
service呼ぶだけじゃないのかなぁ基本的には
125:デフォルトの名無しさん
08/03/03 22:40:54
>>123
MyForm も setAlignmentX(1) にしないといけないのでは
126:123
08/03/03 22:49:40
>>125
なるほど。
いけました。そういうもんなんですね。
127:a
08/03/03 22:53:07
>>116
お呼びでないじゃなくて質問者が来るんだよ。バカか。
かってに決めてんなよお前の意味わからんルールを。質問相談スレッドだろが。
128:デフォルトの名無しさん
08/03/03 22:58:19
>とりあえず起動させる手順教えて下さい。
いやこれ質問じゃないし
129:デフォルトの名無しさん
08/03/03 23:04:16
>>127
URLリンク(pc11.2ch.net)
ここ見てみろ、ちゃんと書いてあるだろう
「この板はプログラムを作る人のための板です」って
130:デフォルトの名無しさん
08/03/03 23:04:21
まあ3月だもんな
しゃーない
131:正志
08/03/04 03:02:19
>>91 Thanks,
>>88 Shut-up man, fuck off you bitch, ウゼエ どうせ~だろ はやめなさい
132:デフォルトの名無しさん
08/03/04 03:32:21
ところでsplitで x または aで区切るのはどうしたら?
133:デフォルトの名無しさん
08/03/04 03:59:29
"123a456x789a0".split("x|a")
134:デフォルトの名無しさん
08/03/04 14:36:03
Nim of game の書き方教えてくれるとこありますか?
135:デフォルトの名無しさん
08/03/04 14:36:34
Game of Nimでした。
136:デフォルトの名無しさん
08/03/04 16:07:34
MouseEventはabstractでーバーライドできないって出てくるのですが、
何か間違っているのでしょうか?いちおう解説本の通りに打ったつもりなんですが・・
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="MouseEvents" width=300 height=300></applet>
*/
public class MouseEvents extends Applet implements MouseListener{
public void init(){
addMouseListener(this);
}
public void mouseClicked(MouseEvent me){
setBackground(Color.blue);
repaint();
}
}
137:デフォルトの名無しさん
08/03/04 16:08:09
すみません、質問させてください。
Look&Feelのフォント設定で、
System.setProperty("swing.plaf.metal.controlFont", "Dialog-Plain-12");
を指定しておくとフォントがDialog-Plainの12ポイントになりますよね。
WindowsのLook&Feelを適用したときにもこのように一括で指定するキーはありますか?
これらのキー名がAPIドキュメントにさっぱり見つからず困っております・・・
138:デフォルトの名無しさん
08/03/04 16:10:42
>>136
MouseListenerのメソッドはmouseClickedだけじゃなくて全部実装する必要がある
中身からっぽでもいいので
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
139:デフォルトの名無しさん
08/03/04 16:21:47
>>138
ありがとうございました
140:デフォルトの名無しさん
08/03/04 17:36:21
カオスってるな
141:デフォルトの名無しさん
08/03/04 17:36:39
WindowsXP+tomcat5.0.28にて
hello.jsp --------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=Windows-31J"%>
<%@ page errorPage="DefaultException.jsp" %>
error.jsp -------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=Windows-31J"%>
<%@ page isErrorPage="true" %>
----------------------------------------------------------------------
hello.jspの中で例外が発生するとerror.jspが呼ばれますが、error.jspの内容が文字化けしてブラウザに表示されます。
でも、error.jspを直接ブラウザから呼ぶと文字化けが起きません。
JSPの例外処理機構で呼ばれた時だけ文字化けしているように見えます。解決方法ありますか?
142:デフォルトの名無しさん
08/03/04 17:38:22
>>141
転載ミス。errorPage=error.jspと読み替えてください。
143:デフォルトの名無しさん
08/03/04 20:15:09
>>141
文字化けの原因は別のところにありました。
web.xmlで下記の設定を入れていると、こちらが優先されるらしく文字化けが発生します。
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
error-pageの設定をコメントアウトすると文字化けしなくなります。tomcatのバグ?
144:デフォルトの名無しさん
08/03/04 21:50:31
public static void main(args[])
について、教えてください。
このメソッドについて、
一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、
といったルールは存在しますか?
public class Test1 というクラスと
class Test2 というクラスとの両方に、
public static void main(args[])を記述してみて、
Test1のmain()から、Test2のmain()を読んでみたのですが、特に問題なく動きました。
145:デフォルトの名無しさん
08/03/04 21:56:35
> 一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、
> といったルールは存在しますか?
ない。
146:デフォルトの名無しさん
08/03/04 22:48:27
4桁の16進数を
数値型に変換ってどうすればいいですか?
0xの16進数で出力したいのですが
147:デフォルトの名無しさん
08/03/04 22:57:00
>>146
よくわからんので、どういう入力に対してどういう出力が欲しいのか、例をあげてくれ
148:デフォルトの名無しさん
08/03/04 22:59:59
>>146
エスパーレスすると
int i = 0xABCD;
System.out.println("0x" + Integer.toString(i, 16));
149:デフォルトの名無しさん
08/03/04 23:03:56
>>147
失礼しました
>>148の方の例で言うと
StringでABCDとわかっていて
intで0xABCDと変換したいのですが
150:デフォルトの名無しさん
08/03/04 23:05:58
>>149
String s = "ABCD";
int i = Integer.parseInt(s, 16);
151:デフォルトの名無しさん
08/03/04 23:07:07
>>150
ありがとうございます
引数に指定するだけなんですね
152:デフォルトの名無しさん
08/03/04 23:47:26
お世話になります。
swingいじりしているのですが、根本がわかっていません。
JFrameのインスタンスを作ると、そいつは、自動的に別のスレッドで動いているのでしょうか?
関数main()は、最終行まで処理されて、その後ろはないのですが、
JFrameでつくったウィンドウやその上のコンポーネントは動作を続けています。
スレッドでなければ何なのか理解できません。
エスパーしていただけませんか。
153:デフォルトの名無しさん
08/03/05 00:04:25
分かりません。教えてください。初心者です。エスパーしてください。
154:デフォルトの名無しさん
08/03/05 00:15:34
>>152
クラスは作成したとき一回だけ初期化用のメソッドを通る。
155:デフォルトの名無しさん
08/03/05 01:12:20
OSのシステムフォントを得る方法はありますか?
156:デフォルトの名無しさん
08/03/05 01:28:07
Javaの質問とちょっとずれる気もしますが・・・
DBとのコネクションを確立する為に
Connection con = null;
con = DriverManager.getConnection(URL,USER,PASS)
などと書きますよね。
この時、conはインスタンスと呼んで良いのですか?
Connectionはインターフェースなのでインスタンスを生成することはできないはず。
インスタンスでないとしたら何なのでしょうか?
ご教授下さい。
157:デフォルトの名無しさん
08/03/05 01:30:59
>>152
ThreadGroup#listでどんなスレッドが動作しているか見てみるといい。
思った以上にいろいろなスレッドが動いているのが分かる。
158:デフォルトの名無しさん
08/03/05 01:32:57
>>156
conはConnectionインタフェースを実装するクラスのインスタンスへの参照
159:デフォルトの名無しさん
08/03/05 01:35:38
一応、正確を期すなら「conで参照しているインスタンス」みたいな言い方になる。
変数それ自体はインスタンスではない。
160:デフォルトの名無しさん
08/03/05 03:18:58
>>152
そう、SwingはEDTという別スレッドで動いている
そして、ここ以外では動かしてはダメ、というのがルール
161:デフォルトの名無しさん
08/03/05 04:15:31
>>152
名前をわざわざ変えなければ、mainメソッドはmainという名前のスレッドで動作している。
Swing関係の機能を使うとさらに別のいくつかのスレッドが生成される。
その中には>>160の言うEDTというGUI関係のイベント処理を一手に担うスレッドもある。
この新たに生成されたスレッド群によってウインドウやその上のコンポーネントが動作する。
mainメソッドが最後まで処理されるとmainという名前のスレッドは終了して無くなるが、
他のスレッドが終了するまでプログラム全体としては終了しない。
162:デフォルトの名無しさん
08/03/05 11:23:40
EDT自体はAWTにもあってSystem Queueっていう名前でマルチスレッドになってる。
Swingのイベント周りはシングルスレッドで動いててSwingコンポーネント生成を含めてSwingコードはEDTで動かさないといけない。
昔、Swing関連のスレッドにはバグがあるからSwingコンポーネントの生成もEDTで行うようにと作法が密かに変わってSwingのチュートリアルだけが変更されてまともなアナウンスはされてない。
163:デフォルトの名無しさん
08/03/05 12:10:15
>>152 の書き方だと
>JFrameのインスタンスを作ると、そいつは自動的に別のスレッドで動いているのでしょうか?
と訊いているのだから、コンストラクタの呼び出しのことで、それ自身はmainのスレッドで動いているでいいんじゃない?
全てのコンストラクタの呼び出しが終わらなければmain()には戻らないと…
コンポーネントのイベント処理はまた別の話で。
もちろんSUNの推奨は >>162 の云うようにコンポーネントの作成もEDTで行うなのだろうが…
164:デフォルトの名無しさん
08/03/05 12:34:10
ボタンを作って、そのボタンを押すとthreadがnullになるように作っています。
run()メソッドの中に書かれている処理にかかる時間が短い場合(1ms以下)だと正常に止まってくれます。
しかし、処理にかかる時間が長い場合(100msくらい)だと何回もボタンを押さないと止まってくれません。
どうしたらいいですか?
run()メソッドの中
while(thread != null) {
処理
thread.sleep(100);
}
165:デフォルトの名無しさん
08/03/05 12:40:35
>>164
時間のかかる処理の途中で if(thread==null) break; とかしてみる。
166:デフォルトの名無しさん
08/03/05 12:49:12
コンストラクタってコンストラクタ自身がスレッド作ってその上で動いてなかったっけ?
167:デフォルトの名無しさん
08/03/05 13:35:10
えっ
168:デフォルトの名無しさん
08/03/05 13:50:35
>>166
試しちまったじゃねぇかよ。
public class ConstractaThreadName{
ConstractaThreadName(){
DisplayThreadsName();
}
public static void main(String[] argv){
ConstractaThreadName ctn = new ConstractaThreadName();
System.out.println();
DisplayThreadsName();
}
private static void DisplayThreadsName(){
int i, n;
System.out.println("Display Threads Name");
Thread[] tarry = new Thread[Thread.activeCount()];
n = Thread.enumerate(tarry);
for(i = 0; i < n; i++)
System.out.println(tarry[i].getName());
}
}
169:デフォルトの名無しさん
08/03/05 13:57:48
>>168
カレントスレッドがどれかも表示しないと意味なくない?
170:デフォルトの名無しさん
08/03/05 14:01:32
>166
スレッドの生成コストってフルGC並の糞思い処理だぜw
171:デフォルトの名無しさん
08/03/05 14:03:00
eclipse Europe 3
と日本語化をつかってるのですが
バージョンアップするには何をダウンロードしてどうしたらいいですか?
172:デフォルトの名無しさん
08/03/05 15:48:54
>>171
Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】
スレリンク(tech板)l50
こっちで聞け
173:デフォルトの名無しさん
08/03/05 16:54:03
いやjavaのスレッドじゃなくてVM内部で別のスレッド走らせてるんじゃなかったけ?
言語違ったかなぁ・・・。
174:デフォルトの名無しさん
08/03/05 17:01:43
>>173
そんなわけのわからんことはしないよ
そんな奇妙なことをする言語があるなら興味深い
コンストラクタじゃなくてファイナライザか?
175:デフォルトの名無しさん
08/03/05 19:50:02
質問です。
GI プログラム中から
他のGUI プログラムを呼び出したときに
必ず呼び出したプログラムのウィンドウ(Frame)にフォーカスをあわせる方法
ってありますか?
呼び出すプログラム側でエンターキーで他のプログラムを呼び出すのですが、
エンターキーを連打したときなどに、どっちのプログラムもキーの受付をしてくれなくなります。
マウスでクリックしてやれば、アクティブになってキー操作を受け付けてくれるのですが。
176:デフォルトの名無しさん
08/03/05 19:51:14
>GI プログラム中から
GUI プログラム中から
のミスです
あと、
> 必ず呼び出したプログラム
呼び出された新しいプログラム という意味です。
177:デフォルトの名無しさん
08/03/05 21:18:28
詳しい方へ質問です。
『作成したプログラムを保存するフォルダを作る。コマンドプロンプトを起動したらそのフォルダがディレクトリになるように設定する(Cドライブのルートに「My Java」フォルダを作成し、ここをディレクトリにする)』
という作業をしたいのですが、「コマンドプロンプトのプロパティ」→「ショートカット」で「作業フォルダ」に“C:¥My Java”と入力すると、
「“C:¥My Java”フォルダは無効です。フォルダがあるか、またはパスが正しいか確認して下さい。」と出てしまいます。
他にフォルダを作った覚えもないのに、何度やっても同じ結果になってしまうのですが、どうしてなんでしょう?
あ~もう!自分で書いてて意味分からない‥
178:デフォルトの名無しさん
08/03/05 21:32:09
>>175
URLリンク(java.sun.com)()
>>177
"C:\My Java"
と入れてみ。
C:\は全角で入力する必要があるし、
フォルダ名にスペースを含む場合は前後を"で囲む必要がある。
179:デフォルトの名無しさん
08/03/05 21:32:44
C:\は全角じゃない半角だった
180:デフォルトの名無しさん
08/03/05 21:44:13
>>177
質問の内容がJavaではない気がする・・・。
Javaのプログラム上からファイル出力をする為のディレクトリを生成して
Javaからコマンドプロンプトを起動してカレントディレクトリを設定するって事ですか?
181:デフォルトの名無しさん
08/03/05 21:52:13
int a, b;
System.ou.t.println(a + b);
このaとbを外部からの入力で処理したいのですが、
PHPなんかのWebプログラミングでは、フォームから値を渡しますが、
Javaの場合どうやったらいいんでしょう?
GUI画面を作ればいいのかな?とは思うのですが、やったことがなくてイメージわかないし、
Servlet+JSPなんかの場合、PHPと同じようなことができるんでしょうが、
まだ環境構築どころかJavaでのWebプログラミングのやり方もわからないので、
とりあえずコマンドプロンプトから入力してくださいみたいな感じで、
aとbを順に打ち込んで計算するようなものを作ってみたいと思っています。
どのへんのクラスを使えばいいのでしょうか?
182:デフォルトの名無しさん
08/03/05 21:56:07
>>181
いきなり2ちゃんかよ。
まずは本なり入門サイトに行けよ
183:175
08/03/05 22:21:26
>>178
最前面には来るんですけど、キー入力が受付ないんですよね。
クリックしてアクティブにしてやると受け付けるんですが
184:デフォルトの名無しさん
08/03/05 22:24:54
>>181
System.in から1行読めばいいんじゃないかね。
185:デフォルトの名無しさん
08/03/05 22:26:53
// >>181
public static void main(String[] args) throws IOException {
// 標準入力ストリームから行単位で読み込めるようにBufferedReaderクラスのインスタンスを生成
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print(a: );
// 標準入力から1行読み込みint型に変換
int a = Integer.parseInt(br.readLine());
System.out.print(b: );
int b = Integer.parseInt(br.readLine());
System.out.println(a + b);
}
186:185
08/03/05 22:34:02
訂正
System.out.print(a: ); // ×
System.out.print("a: "); // ○
System.out.print(b: ); // ×
System.out.print("b: "); // ○
あと
import java.io.*;
も忘れないように。
187:デフォルトの名無しさん
08/03/05 22:38:28
>>155
たぶん見た目ネイティブにしたいんだろうが、
JavaでOSのシステム標準フォント設定を得る方法など聞いたことがない。
188:デフォルトの名無しさん
08/03/05 22:58:51
システムカラーなら取れるんだけどね
189:デフォルトの名無しさん
08/03/05 23:37:52
>>181
「Java Scanner」でググって見なよ
190:デフォルトの名無しさん
08/03/06 06:58:02
c言語に比べてjabaを初心者が先に学ぶメリットって何かありますか?
良かったら説明して下さい!
191:デフォルトの名無しさん
08/03/06 08:16:53
まずは英語を勉強する方が良いと思うぞw
192:デフォルトの名無しさん
08/03/06 08:33:55
JAVAのテキストが一通り終わったのですが、
次は何をすればいいでしょうか?
193:デフォルトの名無しさん
08/03/06 08:44:29
ソフト会社にバイトに行って、いかに自分がダメダメかを思い知るw
194:デフォルトの名無しさん
08/03/06 09:45:48
Javaを「メモリ管理不要、C++」として見てしまいますが、
すべてのパッケージを勉強する必要がありますか?
195:デフォルトの名無しさん
08/03/06 10:05:04
> すべてのパッケージを勉強する必要がありますか?
必要なら。
196:デフォルトの名無しさん
08/03/06 10:18:27
com.sun.*とSwingの非公開クラスはいらんだろう。
197:デフォルトの名無しさん
08/03/06 10:28:31
>194
不要。
java.lang.*
java.util.*
は大雑把にでもいいから確認して、後は必要に応じて調べれば十分
198:デフォルトの名無しさん
08/03/06 10:32:50
>>196
非公開クラス?
URLリンク(java.sun.com)
ここで見てて涙目になりました;;
覚える事が多すぎます・・・
199:デフォルトの名無しさん
08/03/06 11:30:56
>>198
それは1つ前のバージョンのだな
最新はこっちだ
URLリンク(java.sun.com)
必要になったときに必要なものを調べて来られれば、全部覚える必要はない
200:デフォルトの名無しさん
08/03/06 11:31:56
>>198
java.ioはI/O系、java.sqlならJDBCまわりってレベルで十分。
あとは、必要に応じて調べるだけ。
201:デフォルトの名無しさん
08/03/06 12:52:12
Scannerでの質問なのですが
import java.util.Scanner;
public class TestPorb
{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
String gen = input.next();
int pt2 = input.nextInt();
int pt1 = input.nextInt();
//input.nextLine();
String name = input.nextLine();
int numOfGame = input.nextInt();
String pos = input.next();
}
}
name をとるときに inputMissmatchというエラーが出ます
コメントを解除するとちゃんと動くのですが、
理由が分かる人がいれば教えてください。
202:デフォルトの名無しさん
08/03/06 13:01:47
>>201
nextLine は InputMismatchException を投げません。
入力次第なので、後は何とも。
203:201
08/03/06 13:11:36
>>202
入力は、
aaa
12
23
asd asd
で試したところ、
InputMismatchException:
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at TestPorb.main(TestPorb.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
を投げてきて、次の入力に進めません
長くてすみません。
204:デフォルトの名無しさん
08/03/06 13:41:01
>>203
で、それは何処で止まってるのでしょうか、と。
// 一行ごとに直前の変数を出力して、
// 入力と解析後の対応部分を確かめつつ。
205:デフォルトの名無しさん
08/03/06 13:46:14
nextIntが23の後の改行も食ってるとか?
206:201
08/03/06 13:55:08
>>204
入力は一行づつで、
最後の asd asd を入力した時点でのエラーです。
その前に入力したデータは全て正常に入っています。
どうも入力した "asd asd" を nextLine() で Stringに入れることができていないようなんです。
String name = input.nextLine(); の実行前に一度 input.nextLine(); を実行することでエラーを回避できるので、
Bufferに何か残っているのかな、と予想しているのですが実際のところよく分かりません。
207:201
08/03/06 13:57:50
>>205
だとすれば、
無駄にinput.nextLine()を走らせて回避するしか方法はないのでしょうか・・
208:デフォルトの名無しさん
08/03/06 14:57:03
>>205
まあ、nextLine が、"23" の直後から改行までを、改行抜きで食ってるだけ。
よって、"23<改行>" なら、戻り値の列長はゼロ。
>>207
そうそう。無駄に nextLine を走らせてください。そういう仕様です。
細かく調整したいなら sikip というものもあります。
209:201
08/03/06 22:17:42
>>208
そうですか、分かりました
skipの方も試してみます
ありがとうございました
210:デフォルトの名無しさん
08/03/06 22:21:33
今、自分のPCに
Java SE 6 Update 3 がインストールされており、
ブラウザでアプレットなどが起動できるのですが、
Update 4 や Update 5 をインストールすると
Update 3 で起動できていたアプレットが起動しなくなり、
ブラウザを閉じようとすると、固まってしまう状態になります。
ランタイムをアンインストールして Update 3 に戻すと正常に動作するようになるのですが、
Update 4 以上のバージョンで何か問題があるのでしょうか?
コントロールパネルのJavaの設定で、
インターネット一時ファイルなどを削除してみても、
アプレットは動作しませんでした
211:デフォルトの名無しさん
08/03/06 22:40:16
リグレッションバグ踏んだとか
212:デフォルトの名無しさん
08/03/07 00:14:08
アプレットが元々バグってて、古いバージョンではたまたま動作してただけとか
213:デフォルトの名無しさん
08/03/07 08:29:09
お世話になります。
SwingでGUIのプログラム作ってみているのですが、
イベント動作(?)を設定できずに悩んでいます。
お力添えください。
(awtの?)ActionListener,ActionEvent,ActionPerformed()で、
イベント動作を記述したいです。
JPanel A
├JPane B
|├JButton 1 (implements ActionListener)
|└JButton 2 (implements ActionListener)
└JTabbedPane
├JTextArea 1
└JTextArea 2
例えば、JFrame以下に、上記の構造のコンテナの階層があって、
各コンテナは、直上のコンテナでインスタンス化される。
以上としたときに、
ボタンのActionPerformed()にて、
テキストエリアの内容を保存したり、とにかくテキストエリアにアクセスしたいのですが、
その手段がわかりません。
( 続く)
214:213
08/03/07 08:29:32
(続き)
すべての変数をJPanel A 直上でインスタンス化して、
上記の構造をつくり、
JButtonは、内部クラスにすれば、動作の設定はできるのですが、
コンテナの数が多くなってきたときに、内容を読むのが辛い気がします。
また広域な変数を作ることでも可能なのでしょうが、あまり使いたくないです。
どのようにすればよいでしょうか。
最終的には、JMenuBar以下のメニューからのアクセスをしたい、
且つ、JMenuBar以下の構造は、クラスとして、
外部クラスか内部クラスとして宣言したいです。
また、JTabbedPaneは、メニューなどから、増加させたり、削除させたりしたいのですが、
「各コンテナは、直上のコンテナでインスタンス化される。」
のルールにのっとった記述ができなく、簡単化のため、上記の例を出しました。
よろしく御願いします。
215:デフォルトの名無しさん
08/03/07 10:36:36
>>213
ボタンとテキストエリアで行うことを仕様とし、その実装をクラスにする。
そのインスタンスをパネルAで生成し、パネルBとタブの生成時に渡す。
216:デフォルトの名無しさん
08/03/07 12:10:01
数値a, b(long、doubleも含む)のどちらが大きいか比較し、
a<bなら負、a>bなら正、a==bなら0を返すような標準APIってありますか?
自分で作れというのが最もなのですが、割と頻繁に使う状況に遭遇するので、
標準でそのようなAPIは無いのか疑問になって質問しました。
Mathにはなかったようなのですが。
217:デフォルトの名無しさん
08/03/07 12:18:40
>>216
new BigDecimal(a).compareTo(new BigDecimal(b)) とか?
無限大やらNaNやらの場合は知らん。
218:デフォルトの名無しさん
08/03/07 12:27:43
>216
数値といっても型が違えば単純には比較でないだろ、常考
比較する為の一般に通用する仕様がないわけだから安直に標準APIじゃ提供しようがない
219:デフォルトの名無しさん
08/03/07 12:33:59
それくらい自分で作れ。
220:デフォルトの名無しさん
08/03/07 13:07:15
>>217
ありがとうございます。
取りあえずこれでいけそうですね。
>>218
説明不足でした。型はプリミティブ型でよいです。
System.out.print()のように引数タイプに全てのプリミティブ型を
用意しているクラスメソッドがあったので、数値比較についてもあるのかなと思ってました。
221:デフォルトの名無しさん
08/03/07 13:21:14
同じ型どうしなら a-b でいいのだけど、それじゃダメってことだよね。
222:デフォルトの名無しさん
08/03/07 13:39:09
>>216
×最も
○尤も
(a==b)? 0: (a<b)? -1: 1;
223:デフォルトの名無しさん
08/03/07 13:39:31
>220
だからdouble と int をどうやって比較するのかと(ry
224:デフォルトの名無しさん
08/03/07 13:40:42
パネルにコンポーネントをadd()してからそのコンポーネントをadd()の反対にすることはできますか?
225:デフォルトの名無しさん
08/03/07 13:45:31
ん?remove(Component)のこと?
226:デフォルトの名無しさん
08/03/07 13:59:21
>>223
値範囲で 217 に負けるけど、Double.compare(double, double) でも良いと思うのですが
変換で何か重要な問題があったっけ……
227:216
08/03/07 14:03:57
本当に説明不足でした。
ぐだぐだですみません。
返す型は int。
型はプリミティブ型。
>>221
(int)(long型 - long型)すると、差がInteger.MAX_VALUEより大きい場合に
問題が起きそうなのでその方法はとりませんでした。
>>222さんのように三項演算子で書く方法が一番スマートそうですね。
どうもでした。
228:216
08/03/07 14:08:05
>>226
読む前に投稿していました。
まさにこんな感じのを求めてました。
ありがとうございます。
229:デフォルトの名無しさん
08/03/07 14:10:20
>>226
int i = 0;
double d = 0.0;
230:226
08/03/07 14:13:42
>>229
日本語での解説をお願いします。
231:デフォルトの名無しさん
08/03/07 14:14:32
(゜д゜) はぁ?
232:デフォルトの名無しさん
08/03/07 14:22:24
javadocよく嫁
233:デフォルトの名無しさん
08/03/07 14:23:29
言い忘れた
byte型の昇格じゃなきゃ特に演算時に気を付けることはない。
234:デフォルトの名無しさん
08/03/07 14:27:46
嘘八百を並べた悪徳スレ
235:デフォルトの名無しさん
08/03/07 14:43:59
>>216
>>226でもいいけど、long が 64ビットなのに対して double の仮数部は 53ビットしかない。
だから例えば
System.out.println(Double.compare(0x20000000000000L, 0x20000000000001L)); //=> 0
System.out.println(0x20000000000000L == (double)0x20000000000001L); //=> true
逆に言うと、あらかじめ精度が必要ない事が判っていれば
Double#compare(double, double) で構わない。
236:226
08/03/07 14:55:25
>>235
なるほど。これはお勧め出来なかったですね、申し訳ない。
Long.MAX_VALUE と (double) Long.MAX_VALUE
==> 9223372036854775807
==> 9.223372036854776E18
// int と double についての方も、こういうことなのでしょうか?
237:デフォルトの名無しさん
08/03/07 14:58:14
>>236
int と float だと、float の方が精度低いので問題起きる可能性がある。
238:デフォルトの名無しさん
08/03/07 16:36:10
(・д・)
239:デフォルトの名無しさん
08/03/07 16:54:44
MVCモデルについて質問です。
現在、MVCを使ってマインスイーパを作ろうというプロジェクトを行っています。
Mでは、m*nのテーブルを裏返したり、フラグを変更させる動作を持たせる事にします。
ここで問題なのですが、
この配列をVに描写してもらう時に、渡すのは数字の入った2次元配列です。
これを例えば1なら1と表示させるというようにすればいいように思えますが、
Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。
つまり、Mで、1という数字を100という風に書こうが31という謎の値で書こうが関係ない設計にしなければならないと思います。
この場合、私の考える中で唯一これを満たす方法は、
Mに描画のメソッドを実装して、Vで委譲させる方法ですが、
MVCの原則として、Mは描画や出入力を行ってはいけない事になっています。
そもそも、View側でもm*nで待っていてくれている保証はないわけですが、
MとVの独立性を保つためにはどのように設計すればよいのでしょか?
240:デフォルトの名無しさん
08/03/07 17:07:46
>>239
>Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。
いやいやいや。
ビューはモデルの仕様を知っている。
でなければ、何を描くのかすらわからんではないか。
ツリーモデルをマインスイーパービューに渡してどうしろというんだ。
ツリービューはツリーモデルを描く。
マインスイーパービューはマインスイーパーモデルを描く。
interface MinesweeperModel {
int getWidth();
int getHeight();
boolean isFlagSet(int x, int y);
boolean isOpen(int x, int y);
boolean hasMine(int x, int y);
void addChangeListener(ChangeListener l);
void removeChangeListener(ChangeListener l);
}
こんなのでいいかと。
これをどう実装するか(二次元配列?)は、モデルの実装の詳細であって、ビューはそれを知る必要はない。
これをどう表示するか(JTable?)は、ビューの実装の詳細であって、モデルはそれを知る必要はない。
ただし両者とも、そのインタフェイス (MinesweeperModel) の仕様は知っている。
241:デフォルトの名無しさん
08/03/07 17:13:31
MVCってjava関係ないじゃん。
ゲーム作ってるならこっちの方が適切。
スレリンク(gamedev板)l50
ゲームにおけるデータ構造・クラス設計・パターン
242:デフォルトの名無しさん
08/03/07 17:15:00
クリックされたら配列に入力され、その後配列と対応する場所に四角を書きたいんですが
うまくいきませんorz
どこがだめなんでしょうか?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="proto" width=200 height=200></applet>
*/
public class proto extends Applet implements MouseListener{
Point p;
boolean bl[][] = new boolean[20][20];
public void mouseClicked(MouseEvent me) {
p = me.getPoint();
bl[p.x/10][p.y/10] = true;
repaint();
}
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void paint(Graphics g){
for(int x=0;x<20;x++){
for(int y=0;y<20;y++){
if(bl[x][y] == true){
g.fillRect(x*10,y*10,10,10);
}}}}}
243:デフォルトの名無しさん
08/03/07 17:18:48
>>242
addMouseListener
244:239
08/03/07 17:22:15
>>240
プログラムが出来たら、うpするので
その時に評価してもらおうと思います。
いろいろ考えると難しくて。実装じゃなくて、設計が。
設計やさんは優秀じゃなきゃ出来ませんね。
設計が腐ってるとすべてが終わる。
設計がしっかりしてれば
実装なんか中卒だろうが高卒だろうが
理系だろうが文系だろうが
関係なしに出来るのではないかと思えてきましたが、
実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?
245:242
08/03/07 17:26:33
うわ・・恥
>>423どうもありがとうございました
246:デフォルトの名無しさん
08/03/07 17:32:36
実装をなめんなよ
247:デフォルトの名無しさん
08/03/07 17:38:34
>実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?
そういう話題はマ板向き
248:デフォルトの名無しさん
08/03/07 17:51:19
設計する人が優秀とは限らないが、優秀でない人が設計すると火事になる
249:239
08/03/07 18:02:27
今、ぼくは
「クラスが独立であるとは、クラスが単独でテスト可能である事と同値である」
という持論に基づいてプログラムしています。
これが正しいかどうかは置いといて、
テストが不可能、例えば乱数に寄ってしまっている設計はいけない設計ですか?
例えばマインスイーパなら、爆弾を仕掛けると思いますが、
爆弾を仕掛けるのを乱数に頼って、イニシャライザに組み込んでしまうと、
動作ごとにどこに爆弾が仕掛けられたか分からず、
「ここを押せばこういう状態に遷移する」
といったテストが行えません。
今作ってるプログラムはまさにこうなのですが、
これは失敗した設計ですか?
250:デフォルトの名無しさん
08/03/07 18:06:26
>>240の書いているようなモデルインターフェースを作っていれば、そんなものいくらでも実装で変更できると思うんだけど。
251:デフォルトの名無しさん
08/03/07 18:13:59
>>249
乱数を元にしないNonRandomMinesweeperModelを使ってテストすればいいだけだ
252:デフォルトの名無しさん
08/03/07 18:17:45
乱数に限定した話なら乱数シードを外から渡すようにすれば良いだけの話。
再現性が保てない設計は失敗と言っていい。
253:239
08/03/07 18:20:36
>>252
再現性が保てない設計は失敗なんですか。
確かにぼくもこれではテストが出来ないではないかと
すごく不安になってました。
乱数シードを外から渡してみます。
もしぼくが設計者だったら大火事でしたね。
254:239
08/03/07 18:22:40
コーディングの段階からjavadocに基準した
コメントを書いておくべきですか?
みなさんはどうなされていますか?
255:デフォルトの名無しさん
08/03/07 18:22:41
>>249
イニシャライザが何か初期化してても、とりあえずそれを無視して、
テスト用の盤面に書き換えてからテストすればいいんじゃないか
256:デフォルトの名無しさん
08/03/07 18:35:59
>>254
場合による。
ライブラリとかみたいにドキュメントはきっちりしてた方がいい場合もあるし
アプリケーションで要求変更がばしばしくる案件なんかではドキュメント書いても
次の日には書き換えなきゃいけなくなったりで割に合わない場合もある。
257:239
08/03/07 18:36:36
>>255
それが可能な設計ではないという事です。
でも、これは具体的な話ですが、
initBoard(int i, int j, int[][] bombBoard)
とかいう風にします。
今は
initBoard(int i, int j, int bombNum)
としています。これは爆弾の数から内部で爆弾が配置されたボードを弾いて、それを使って
Boardをinitializeしようという設計だからです。
でもこれは爆弾ボードの生成で乱数を使ってしまうので、再現性がありません。
しかし、上記のメソッド定義だと、ユーザが好き勝手なテーブルを引数にしてしまいます。
これはユーザに使い勝手がいいとは言えない気がします。
例えばもし縦横の配列数が違った場合は、Exceptionを出して処理を終了させればいいのでしょうか?
258:デフォルトの名無しさん
08/03/07 18:43:02
>>257
>initBoard(int i, int j, int[][] bombBoard)
>とかいう風にします。
>今は
>initBoard(int i, int j, int bombNum)
>としています。
それ両方あればいいじゃん
ユーザは使い勝手の良い方を選んで使えばいい
259:デフォルトの名無しさん
08/03/07 18:44:47
initBoard(int width, int height, int bombNum, long seed) で良いじゃん。
260:239
08/03/07 18:45:50
>>258
なるほど、オーバーロードがありましたか。
その発想は気づきませんでした。
確かにJavaAPIにある多くのライブラリには複数イニシャライザが設定されてるものがありますね。
でも書き直しですね。このままだとDRYに反する。
261:239
08/03/07 18:54:11
>>259
seedを引数にするという発想は正常ですか?
自由な配列を入れさせてもし大きさが違っていたら
Exceptionを発行して弾くというのは
少し感覚的におかしい気がします。
「型が違う」「クラスが違う」という弾き方は正常かと思いますが、
配列の大きさが違う、という事で弾かれるのは、
外から見てる人が、引数に対してすでに設定したBoardの大きさを意識して
入れなくてはいけない事になります。
これは使い勝手がいいとは言えないし、
おそらく正しい設計に基づいているであろう
GUIのライブラリがそういうものがあったかどうか考えても
なかったように思えます。
(もしあったら教えてください)
262:239
08/03/07 18:55:17
あ、でもそれじゃseedがどういう時にどんな配列が出来るか
は予想がつかないのでテストケースが書けないですね・・・
263:デフォルトの名無しさん
08/03/07 18:58:04
>260
DRYだろオーバーロードは基本的に。
void a(int i) と void a(int i, int j)
があったとすれば、前者の実装は
a(i, 0)
のように記述するだろ?
264:デフォルトの名無しさん
08/03/07 19:01:00
>>261
乱数のシードを渡すくらいなら Random オブジェクトを渡した方がいいと思う
そうすれば SecureRandom を使うこともできるし (セキュアな盤面が必要な状況なんかないだろうけど)、
テスト目的に Random を継承してランダムでない値を返すようにしたオブジェクトを渡すこともできるし
265:デフォルトの名無しさん
08/03/07 19:10:59
>>235
言語仕様的には strictfp が付いてなければ IEEE754 に従っている保証はない
ちなみに、IEEEの倍精度は精度は53桁だけど仮数部は52ビットだった気が
266:デフォルトの名無しさん
08/03/07 19:14:07
優秀でない人が実装すると設計が無駄になる
267:デフォルトの名無しさん
08/03/07 19:19:17
>>264
Random を継承してランダムでない値を返すくらいなら、
単に、数値を返すメソッドを持ったインタフェースを渡した方がいいと思う
268:デフォルトの名無しさん
08/03/07 19:22:29
>>254
コメントはテストケースにしっかり書いた方が良いよ
269:デフォルトの名無しさん
08/03/07 19:27:09
>>262
どういうシードを渡した時にどういう配列が出来るかは、どういう乱数が発生するかと等価だから
乱数生成ルーチンのテストにしかならん。除外可能。でなければ乱数生成を自前でやる必要が
出て本末転倒な事になる。異なるシードを与えたときに異なる配列になることが確認できれば十分
(もちろんその整合性も)。
というかホワイトボックステストがしたいのかブラックボックステストがしたいのかはっきりせれ。
270:デフォルトの名無しさん
08/03/07 19:29:13
つうか、そこまでするんだったら、
interface InitBoard {
int width();
int height();
boolean bomb(int x, int y)
}
などというインタフェースを渡せばいいやん
271:デフォルトの名無しさん
08/03/07 19:41:35
>>265
>>235の例だけでいえば定数式だから strictfp ついてなくても
0 だったり true だったりは言語仕様で保証されてる。
272:239
08/03/07 19:41:41
>>270
インターフェイスを使うメリットが分かりません。
インターフェイスは、そこに書いてあるメソッドに実装を強要するだけであり
なぜこの場面で使わないといけないのかが分かりません。
273:デフォルトの名無しさん
08/03/07 19:42:49
「エンジニアリング設計の基準を実際に満足することのできる唯一のソフトウェアドキュメントはソースコードだけだ」
と Jack Reeves 様が言っております。
ソフトウェアで巷で言われている「設計」などというものは
他の工学では単に設計の骨組みに過ぎないのです、たぷん
274:デフォルトの名無しさん
08/03/07 19:44:13
上にもいろいろ書いてあるだろ?
インターフェイス使えば同じ機能でも別の実装が可能になるんだって。
もう少し自分でいろいろ試行錯誤するべきだと思うよ。
275:デフォルトの名無しさん
08/03/07 19:46:44
マインスイーパーのマス程度にポリモーフィズムはいらんだろw
必要になったとすればもうそれは別のゲームになってるから設計からやり直したほうがいい。
276:デフォルトの名無しさん
08/03/07 19:57:15
javaじゃなくて設計の話になってるな。
277:デフォルトの名無しさん
08/03/07 20:04:12
>>272
インターフェースを使わないメリットが分かりません。
そこに書いてあるメソッドを呼び出せれば Board の実装が可能なのに
なぜこの場面で使うといけないかが分かりません。
278:デフォルトの名無しさん
08/03/07 20:14:08
JavaのClass.getDeclaredClasses()の使い方について質問させてください。
あるクラスで宣言されているクラス名を獲得しようとしているのですが、思うように動いてくれない状況です。
以下のようなテストコードを作ったのですが、
public class Hello {
public String message=new String("Hello");
public static void main(String[] args){
Hello hello=new Hello();
Class helloClass=hello.getClass();
Class[] classes=helloClass.getDeclaredClasses();
System.out.println("Num of Classes "+classes.length);
for(Class cls:classes){
System.out.println(cls.getName());
}
}
}
自分の想定では
Num of Classes 1
java.lang.String
という表示が出ることを期待していたのですが、実際の出力は
Num of Classes 0
となってしまい、クラス名の配列を獲得できません。
ドキュメントを読んだりネットを検索しても理由が分からず、お知恵を拝借したい次第です。
ちなみに、JDKは1.6.0_04を利用しています。
279:デフォルトの名無しさん
08/03/07 20:22:54
>>278
getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
メンバーとして宣言されたクラスおよびインターフェイスを得る。
よーするに、
public class Hello {
public static class Foo{}
public static void main(String[] args){
System.out.println(Hello.class.getDeclaredClasses().length); //->1
System.out.println(Hello.class.getDeclaredClasses()[0]); //->class Hello$Foo
}
}
280:278
08/03/07 20:31:08
>>279
>getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
>メンバーとして宣言されたクラスおよびインターフェイスを得る。
さっそくのご回答ありがとうございます。
理解しました。なるほど、そういうことだったのか…
私がやりたかったのは前者だったのですが、
あるクラスのメンバとして宣言されている(has a関係の)クラス名を取得する方法という方法は
あるのでしょうか?
281:デフォルトの名無しさん
08/03/07 21:22:44
突然ですがすみません。
最近VistaのBasicにJava6update5をインストールしてから、
Yahooオークションの詳細な残り時間が表示されなくなるばかりか
ブラウザが固まってしまいます。
私だけでしょうか。
URLリンク(help.yahoo.co.jp)
このヘルプ通り設定してもダメでした。
282:デフォルトの名無しさん
08/03/07 21:29:20
あなただけです
283:デフォルトの名無しさん
08/03/07 21:37:06
内部クラスについて教えてください。
public class Class2 {
public static void main(String args[]){
new Class2().sub2();
}
int a = 100;
public void sub2() {
new Class3().printPrintln();
new Class4().printPrintln(this);
}
class Class3 {
void printPrintln() {
int a = 1000;
System.out.println(a);
//System.out.println(this.a);
}
}
}
class Class4 {
public void printPrintln(Class2 variableClass2) {
System.out.println(variableClass2.a);
}
}
のコメントアウトされている行で、Class2のaを取り扱いたいのですが、
不可能でしょうか?thisのような何かは存在しませんか?
284:デフォルトの名無しさん
08/03/07 21:39:08
存在します
285:デフォルトの名無しさん
08/03/07 21:54:29
>>280
> あるクラスのメンバとして宣言されている(has a関係の)クラス名を取
> 得する方法という方法はあるのでしょうか?
java.lang.ClassのAPIリファレンスを眺めて、それでもわかりませんか?
286:デフォルトの名無しさん
08/03/07 21:58:48
>>281
うちでも出た。IE7 + Java6u5。Javaコンソールに
java.lang.ClassFormatError: Incompatible magic value 1011373133 in class file default
って出て、リロードすると固まる。
Operaだとちゃんと表示されるんだよね。IE用Java Plug-inの問題かも。
つうか、ヤフオクのアプレットのclassファイル、古くない?version 45.3 ってjava1.1かよ…
287:278
08/03/07 22:00:51
>>285
すいません。分からないです。
当初はgetDeclaredClasses()じゃなくてgetClasses()使ってたんですが、
それでうまく行かなかったのでgetDeclaredClasses()を使って、やはりダメで…という状況です。
288:デフォルトの名無しさん
08/03/07 22:04:12
>>286
そうですか。
さきほどアンインストールしたら直りました。
失礼しました。
289:デフォルトの名無しさん
08/03/07 22:11:39
Javaプログラムのデプロイとアップデートについて質問させてください。
ローカルの*.classファイルが新しいものかどうかをチェックするには
どのような方法があるでしょうか?
ファイルのタイムスタンプでよいかと思ったのですが、ユーザがタイムスタンプを
書き換えるようなアーカイバを利用していた場合に対処できません。
.classファイルに外から見てわかるような内部バージョン番号をつけることはできるのでしょうか?
290:デフォルトの名無しさん
08/03/07 22:17:40
JAR にしてマニフェストに書く。
291:デフォルトの名無しさん
08/03/07 22:21:39
>>287
getFields?
292:278
08/03/07 22:37:12
>>291
そうか、その手があったか!
import java.lang.reflect.Field;
public class Hello {
public String message=new String("Hello");
public static void main(String[] args){
Hello hello=new Hello();
Class helloClass=hello.getClass();
Field[] fields=helloClass.getFields();
System.out.println("Num of Classes "+fields.length);
for(Field fld:fields){
System.out.println(fld.getType().getName());
}
}
}
で、実行
Num of Classes 1
java.lang.String
必要な結果が得られました。ありがとうございました。
293:デフォルトの名無しさん
08/03/07 22:53:16
>>290
おお、Jarでまとめるのもひとつの手ですね。タイムスタンプ署名もつけられるようですし。
ただその場合、アップデート時にはJarごと更新する必要がありますよね?
あまり大きなJarだと問題が出そうです。
更新されているclassファイルのみ更新する方法がないものでしょうか・・・
294:デフォルトの名無しさん
08/03/07 23:36:29
問題が出るような大きなJarって何Gくらいなの?
295:デフォルトの名無しさん
08/03/08 00:18:32
3メガぐらいで十分大きいんじゃん
296:デフォルトの名無しさん
08/03/08 01:40:41
>>295
GBクラスではないです。大きくても100MBいかないぐらいまででしょうか。
でもクライアント数が多いとまるごとアップデートは現実的ではないと思いまして。
297:デフォルトの名無しさん
08/03/08 01:44:05
クラスファイル等のリソースを設計、実装、運用などに合わせて分類し、それを元にjarを分ける
298:デフォルトの名無しさん
08/03/08 02:52:26
Javaこそ、このあたりの自動更新機構/ツールが備わっていてもよさそうなものだが
299:デフォルトの名無しさん
08/03/08 03:05:43
つ Java Web Start
300:デフォルトの名無しさん
08/03/08 08:12:22
Propertiesを継承して俺俺Propertiesを作っています
getProperty(key)をオーバライドして取得した値がnullの時
exceptionを投げたいのですがPropertiesにthrowsが無いからダメと怒られます
こんな時どうすればいいですか?
301:デフォルトの名無しさん
08/03/08 08:14:14
RuntimeException を投げる
302:デフォルトの名無しさん
08/03/08 08:18:37
RuntimeException又はそれを継承したExceptionを投げる
303:デフォルトの名無しさん
08/03/08 08:31:43
nullチェックした方で任意の例外投げる
304:デフォルトの名無しさん
08/03/08 08:35:56
>>301-303
ありがとうございます。
なるほど、UserExceptionを継承したのを投げてたのですが
RuntimeExceptionを継承したのを投げたらいけました。
305:デフォルトの名無しさん
08/03/08 11:00:19
>304
それはあまりよくない設計
PropertiesをラップしたMyPropertiesを作る方がいい
継承はほどほどにな
306:デフォルトの名無しさん
08/03/08 11:11:26
>>305
それは考えたのですが
カバーするメソッドが多くなるので
どうかなと思ってやめました
307:デフォルトの名無しさん
08/03/08 11:13:35
>306
そんなに多いか?
利用側に関してはgetProperty くらいでしょう使うのは。
初期化とかは内部で閉じるから、余計なパラメータ等を設定されるのも防止できるぜ。
不要なものまで公開しない方がいい。
308:デフォルトの名無しさん
08/03/08 11:33:46
>>306
ふむ…確かに多いが、eclipse なら、delegate対象を選択して、
メニュー:Source > Generate Delegate Methods...
で、必要なメソッドを選んで一発終了ですがな。
309:デフォルトの名無しさん
08/03/08 12:28:26
重い以前に回線が切れるのは何でですかね?
ダウンロードした瞬間切れるんですが・・・。
310:デフォルトの名無しさん
08/03/08 14:22:39
>>308
それっぽいのがあるなーと思ってはいたのですが
使い方解らず・・・
そっちに変更します
ありがとうございました
311:デフォルトの名無しさん
08/03/08 15:44:39
今までC#をやってきて、似てると噂を聞いたことのある
Javaに手をつけてみようかと思い、とりあえず
Java SE 6とEclipseをインストールしてみました。
あと何か入れておいたほうが良いものとかあります?
312:デフォルトの名無しさん
08/03/08 15:50:42
>311
C#でGUIとかやっていたならば、NetBeans6を使ってSwingをいじった方が感覚的に近いかも知れん
後はWebアプリを作りたいのか、GUIアプリを作りたいのか、ちょっとしたCUIアプリなのかで入れるものは変わる
CUIならEclipseで十分。
313:311
08/03/08 15:56:31
Webアプリを作ってみたいですね。
Webアプリを作るには何がいるんかな
314:デフォルトの名無しさん
08/03/08 16:04:37
「Webアプリ」つっても >>311 と >>312 で抱いているイメージが違いそうだな
315:デフォルトの名無しさん
08/03/08 17:25:50
java で作ったプログラムを配布したいんですけど、
.jar の状態で配布するのが普通なんですかね?
画像を大量にあつかうプログラムなので
-Xmx500m -Xms500m とか指定させて動かすのが普通なんですけど、
こういう場合ってバッチファイル起動させるようにする形でいいんでしょうか
アドバイスお願いします。
316:デフォルトの名無しさん
08/03/08 17:41:32
バッチとかシェルスクリプトとかネイティブな実行形式でラップするとか
まあ、実行時引数渡すだけならバッチかスクリプト
317:デフォルトの名無しさん
08/03/08 18:02:41
マニフェストに記述できないの?
いや、よくしらんけど
318:315
08/03/08 19:02:55
>>317
マニフェストファイルに実行時引数やメモリオプションなどを記述できるんですか?
よく知らないもので、、
319:デフォルトの名無しさん
08/03/08 19:29:59
URLリンク(www.ibm.com)
320:デフォルトの名無しさん
08/03/08 22:04:37
すみません質問です。
log4jを使ったjarを作っているのですが、
どうにもクラスパスを認識してくれないようです。
java -classpath /usr/share/java/log4j.jar -jar hoge.jar
でorg/apache/log4j/Loggerがないと怒られます。
開発PCはWindows(Eclipse)、実行(プレ本番)PCはFedora8です。
Windows側では正常に動作します。
321:デフォルトの名無しさん
08/03/08 22:06:09
スレッドを止める方法(破棄する)ってどうしたらいいですか?
「ボタンAを押すと画像を動かし始め(スレッドを開始)、ボタンBを押した時に画像を止め(スレッドを止める)、
またAを押すと画像は動き始める」っていうものなんですが・・・
Interrupt()を使ってもとまらないしsleep()を使うとボタンが押せなくなるんです…
322:デフォルトの名無しさん
08/03/08 22:16:04
>>281
私もUpdate4にした頃からアプレットが固まるようになったけど、
別スレで、
コントロールパネル > Java の
Javaコントロールパネル から
基本 > ネットワーク設定 の ネットワークプロキシ設定を
直接接続 に変更しろ
ってあったのをみて
試したら動作するようになったよ
323:デフォルトの名無しさん
08/03/08 22:16:31
>>320
-jarオプションを付けると、オプション-classpathや環境変数CLASSPATHは無視され、
MANIFESTファイルのClass-Path属性に記述されたもののみが有効になる。
ちゃんとMANIFESTファイル書け。
324:デフォルトの名無しさん
08/03/08 22:40:57
>>321
sleep を使うとボタンを押せなくなるようなスレッドを止めたいのなら、
アプリケーションを終了させると止まるヨ
325:デフォルトの名無しさん
08/03/08 23:01:24
>>323 MANIFESTって外部のJarも書けるのは初めて知りました。
おかげで無事動作しました。サンクスです。これで家に帰れます orz
326:283
08/03/08 23:43:32
お世話になります。
283なのです。
>284
ありがとうございます。
あるということで、、今日一日探してみたのですが、見つけられませんでした。
私の持っている本には見つからず、Webページでは、記述のある場所を見つけられませんでした。
Webページで参考になる場所を教えてもらえませんか。
327:デフォルトの名無しさん
08/03/09 00:03:06
>>326
URLリンク(java.sun.com)
要は、クラス名.this と書く。
328:デフォルトの名無しさん
08/03/09 00:04:55
>>326
仕様にズバリ載ってるだろうが・・・
329:デフォルトの名無しさん
08/03/09 00:06:07
あ、thisの話じゃなかった。
330:283=326
08/03/09 15:36:43
>327
ありがとうございます
確認できました。
教科書とか、入門レベルの本には載ってないのですね…。
>328
仕様書読んだことありませんでした。
参考書に沿って勉強していて気になっていた感じでした。
>329
=327ですよね?
いえ、thisの話が知りたかったのです。
Class2のaを見たいのではなくて、
最終的には、Class2 のインスタンスそのものを見たかったので、Class2.thisですね。
これが最も知りたかったことです。
ありがとうございます。
331:デフォルトの名無しさん
08/03/09 17:52:45
java.lang.*;
はimportしなくても初めからされているのはなぜですか?
importするときはどんなときですか?
String s="うんこ"
みたいなふうなようなことを自作するにはどうやりますか?
おねがいします。
332:デフォルトの名無しさん
08/03/09 17:56:21
>はimportしなくても初めからされているのはなぜですか?
その方がべんりだから
>importするときはどんなときですか?
java.lang以外のとき
>みたいなふうなようなことを自作するにはどうやりますか?
できません
333:デフォルトの名無しさん
08/03/09 17:59:50
>>332
ありがとうございました。
最終結論としてjava.langをimportするときはありえないという理解で
よろしいでしょうか?
334:デフォルトの名無しさん
08/03/09 18:43:12
書いてもいいけど無駄ではある。
どのクラスを使っているか明示するために*なしで1個1個のjava.lang以下の
クラスをインポート宣言する流儀はありえる。
335:デフォルトの名無しさん
08/03/09 18:45:31
インスタンス化するときの、
フィールドを定数で初期化する方法として、
1
クラスの記述のときに、フィールド宣言と同時に初期化の値を記述してしまう方法と、
2
コンストラクタで実行させる、
方法をとれるみたいですが、
1の方法はとらない方がいい、といった考え方はありますか?
(1の後に2が実行されるようで、1を2で上書きできることは確認してみました。)
どのコンストラクタでも同じことをしたいならば、便利だと思ったのですが、
初期化はコンストラクタでやるべきかなとも、思いました。
こういった考え方をいろいろ教えているサイトってありませんか?
336:デフォルトの名無しさん
08/03/09 18:57:18
テストについて質問です。
例えば
Class A{
A(){
methodA();
}
public methodA(){};
}
のようなクラスをテストするとします。
methodAをテストする前にインスタンスが作られますが、
そこではテストしていないmethodAが発動します。
この問題はどうすれば解決しますか?
337:デフォルトの名無しさん
08/03/09 19:11:58
java sound apiがダウンロードするばしょが見つかりません
日本語マニュアルつきでおねがいします。
338:デフォルトの名無しさん
08/03/09 19:44:26
>>336
Javaでおk
339:デフォルトの名無しさん
08/03/09 19:48:32
>335
ケースバイケース
可読性を考えるとフィールドの宣言と同時に初期化する方がいいかもしれない
また、初期化忘れも気づきやすい
コンストラクタはあくまでインスタンスの初期化の最後のプロセスと考えるといいかもしれない。
他にも(非staticな)イニシャライザで初期化する方法もある
private int num;
{
num = 10;
}
のような感じ
これはほとんど使わないけど
340:デフォルトの名無しさん
08/03/09 19:49:21
>336
methodAがpublicである事がバグの一種
341:デフォルトの名無しさん
08/03/09 20:05:25
URLリンク(java.sun.com)
を圧縮形式でダウンロードできるホームページをおしえてください
342:デフォルトの名無しさん
08/03/09 20:12:15
>>331
おまえには
import *;
が似合ってる
343:デフォルトの名無しさん
08/03/09 20:29:18
>>340
privateでもいいですけど。
では解決策があるんですか?
344:デフォルトの名無しさん
08/03/09 21:06:23
java soundってコアに入ってから関連ドキュメントもJDKに含まれなかったか?
345:デフォルトの名無しさん
08/03/09 21:20:41
>>342
Javaのパッケージを理解してから出直してこい
346:デフォルトの名無しさん
08/03/09 22:00:07
URLリンク(72.5.124.55)
のホームページと同じ、avasdkがダウンロードできるところに
あるダウンロードできるドキュメントのページが、vistaのIEで開くと空白になって
何もみえないんですけど。
解決方法おしえてください。
347:デフォルトの名無しさん
08/03/09 22:06:58
>>341
URLリンク(java.sun.com)
[J2SE 5.0 ドキュメント] -> [ダウンロード] (一式全部有るけど)
>>343
何のためにテストを行うのか。
インスタンスを生成した後、一度も呼ばれていないメソッドを呼ぶテスト?
何が起きても起こり得ない状況をテストするの?
それらはテストをする価値があるの?
348:342
08/03/09 22:27:13
>345
いいですけどって何様?
コンストラクタで呼ばれるメソッドは原則としてコンストラクタの一部
言い換えれば初期化処理の一部であって、インスタンスの生成が完了する前に実行される特殊なメソッド
これをprivate以外にするとオーバーライド時など予期せぬ問題を生じる可能性がある
で、テストする内容はインスタンスの生成で何か問題あるのか?
そのメソッドが単体でテストしなければならないほどのロジックを含むというならば、別クラスに抽出するべきだろう
349:デフォルトの名無しさん
08/03/09 22:39:06
import *;
import *;
import *;
・・・プ
350:デフォルトの名無しさん
08/03/09 23:49:26
>>348
オーバーライドされて困るからprivateにするってどんだけー
それなら普通finalメソッドにするもんじゃないのか?
import *;といい少しjavaの復習をしたほうがいいかと。
351:デフォルトの名無しさん
08/03/09 23:54:33
swingのJTabbedPaneについて教えてください。
JTabbedPaneのインスタンスに、addTabすると、
タブが追加されます。タブのインデックス(題名がついているところ)に、
MouseListenerを設置して、クリックを検出したいのですが、
できません。
どなたか、私に助言くださいませんか。
352:デフォルトの名無しさん
08/03/10 00:26:04
>>351
タブ選択は ChangeListener で検出します。
マウスの位置はどうなんだろう…
353:デフォルトの名無しさん
08/03/10 01:25:51
>>350
いや、コンストラクタから呼ばれるメソッドはprivateにするのは常識だと思うぞ
finalでもいいがコンストラクタに関してもう少し勉強した方がいいのはお前かと
354:デフォルトの名無しさん
08/03/10 01:52:08
>>351
JTabbedPaneにMouseListenerをaddして、
そのリスナのmouseClickedメソッドでJTabbedPane#indexAtLocation(int,int)に、
MouseEventのx,y座標を渡せば、
タブ部分をクリックした時は選択したタブに合わせて0以上の値が、
タブ部分以外の場合は-1が返ることで区別ができると思う。
355:デフォルトの名無しさん
08/03/10 01:56:37
350の言うことなんざどうでもいいよ
バカはバカを呼ぶっていうしな
それよりimport *;についてkwsk
356:デフォルトの名無しさん
08/03/10 09:23:12
オートボクシングを自分でつくることはできますか?
357:デフォルトの名無しさん
08/03/10 09:26:53
eclipseで自動で色々なメソッドのjunitテストを作って
勝手に作られたテストメソッドを削除したり増やしたりしても
もんだいありませんか?
358:デフォルトの名無しさん
08/03/10 10:02:04
勝手に作って勝手に削除しても何の問題もないだろ
359:デフォルトの名無しさん
08/03/10 10:07:18
>>356
無理。コンパイラの自動補完機能です。
360:デフォルトの名無しさん
08/03/10 10:16:59
>>356
つられて見るが、何をボクシングしたいんだ?
361:デフォルトの名無しさん
08/03/10 11:20:01
javaで2進数を表すにはどうしたらいいですか?
362:デフォルトの名無しさん
08/03/10 11:22:24
表すの意味をはっきり
363:デフォルトの名無しさん
08/03/10 11:23:16
無理っす。
int binNum = Integer.parseInt("10110001",2);
これで我慢だー
364:デフォルトの名無しさん
08/03/10 11:28:05
binNum
ビンナム
ジョンイルみたいなノリでワロス
365:デフォルトの名無しさん
08/03/10 15:00:51
>>361
2進数表記の整数リテラルを所望ってことならJavaには無い
8、10、16進数表記しかない
366:デフォルトの名無しさん
08/03/10 16:52:14
Javaの格言という本を買ってきました。
読んだ事ある人いますか?
367:デフォルトの名無しさん
08/03/10 17:10:03
それを尋ねることの意味が分からん。
せっかく買ってきたのなら読んで自分で評価、判断すればいい。
368:デフォルトの名無しさん
08/03/10 17:42:04
Javaで音声認識やってる人居る?
Java SAPIってのが一応用意されてるみたいんなんだけど、
これって日本語対応してますか?
369:デフォルトの名無しさん
08/03/10 18:50:57
質問です。
他言語(例えばC++)等で作成したプログラムを、Javaのソース内で呼び出して利用する事は可能ですか?
370:デフォルトの名無しさん
08/03/10 18:56:05
>>369
JNIでぐぐるといいよ
371:デフォルトの名無しさん
08/03/10 19:14:36
>>369
可能だけど呼び出しのオーバヘッドがあるから速度的な恩恵は少ないよ
今はネイティブのCと比べても遜色がないくらいJavaVMのパフォーマンスはいい
372:デフォルトの名無しさん
08/03/10 19:26:02
なんで唐突に速度的な理由が前提になってんだ。
373:デフォルトの名無しさん
08/03/10 19:46:01
実はRuntime#execやProcessBuilder#startで済む問題だったというオチ
374:デフォルトの名無しさん
08/03/10 21:18:59
import *;
についての解説マダー(AA略
375:デフォルトの名無しさん
08/03/10 23:17:25
>>374
import *;
public class Sample{
public static void main(String[] args) {
}
}
これコンパイルしてみれば分かるだろ
376:デフォルトの名無しさん
08/03/10 23:20:28
>>374
お前バカだな
阿部さんのケツをインポートするんだよ
そうするとお前もイイ男になるぞ
377:デフォルトの名無しさん
08/03/11 00:41:17
HDDの容量を取得したいのですがどうすればよいのでしょうか?
JAVAのAPIを探してみたのですが,わからなかったです.
378:デフォルトの名無しさん
08/03/11 00:46:44
>>377
URLリンク(java.sun.com)()
379:デフォルトの名無しさん
08/03/11 07:40:54
>375
先生!コンパイルに失敗します><
結局342は何が言いたかったのか分かりません><
380:デフォルトの名無しさん
08/03/11 09:20:41
>>379
>>376
381:デフォルトの名無しさん
08/03/11 09:43:03
ケツにインサートならまだわかるがケツをインポートはわからん
382:デフォルトの名無しさん
08/03/11 11:42:50
import *;
で全部インポートできると思っていたんだろ、多分
可哀想な人なんだよ、多分
383:デフォルトの名無しさん
08/03/11 12:46:51
>>379
C言語とかを勉強するとコンパイル時にエラーが出てくれるありがたみがよく分かるから一度勉強してみるのもいいかも。
384:デフォルトの名無しさん
08/03/11 13:32:27
>>383も可哀想な人でおk?
>>342
>>345
>>348
>>349
>>355
>>374
>>375
>>379
>>382
385:デフォルトの名無しさん
08/03/11 17:33:10
からかわれてるとも知らずかわいい子。ウフッ。
386:デフォルトの名無しさん
08/03/11 17:59:24
jmockのコードでみたんですが
context.checking(new Expectations() {{
ごにょごにょ
}});
↑の2重波括弧ってどういう意味ですか?
387:デフォルトの名無しさん
08/03/11 18:03:38
>>386
インスタンスイニシャライザ
388:386
08/03/11 18:20:03
>>387
ありがとうございます。ぐぐってみます。
389:デフォルトの名無しさん
08/03/11 19:01:16
コンストラクタ書けないからね
でも書き方は悪いわ
context.checking(new Expectations() {
{
// 初期化処理
}
});
とでも書けば解りやすいのに
390:デフォルトの名無しさん
08/03/11 19:18:25
結構良く見かける書き方だけどなー
391:デフォルトの名無しさん
08/03/11 20:59:23
staticイニシャライザはよく見るけどインスタンスイニシャライザって内部クラスでしか見ないんだけど。
392:デフォルトの名無しさん
08/03/11 21:30:57
Vector.insertElementAt
は、Vectorの要素数が多いほど遅くなるのでしょうか?
実験してみたところ
要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...
Vectorの初期化のときに、 new Vector(1000000,1000000) などやっても少しぐらいしか改善しません。
insertElementAtで挿入する番号は先頭から終端までほぼ平均的に選ばれるようなプログラムです。
この
insert にかかる時間を増加させない方法はないでしょうか?
393:デフォルトの名無しさん
08/03/11 21:42:52
Vector(とArrayList)は中に配列持ってるだけだから、
途中に挿入すると後ろの要素を全部1つずつずらす必要がある。
これはコンストラクタで大きなキャパを指定しても同じこと。
LinkedListなら要素を数珠繋ぎで持っているため、途中に挿入する場合も
数珠繋ぎの付け替えだけで出来る。しかし、挿入のたびに挿入位置を毎回
先頭からたどる必要がある。一応試してみたらどうだろうか。
Vectorは古いっちゃ古いし。
番号が疎なら整数をキーにしたMapを使うほうがいいかもしれない。
394:デフォルトの名無しさん
08/03/11 21:44:32
>>392
> 要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...
insert する要素以降を全部一個ずらしてくから
要素数が増えるほど時間がかかるのは当然。
LinkedList#listIterator(int) 使って要素追加してくとか、
ArrayList#addAll(int, Collection) で一気に追加するとか、
いっその事 Map<Integer, E> してみるとか。
395:デフォルトの名無しさん
08/03/11 21:55:52
そもそも1,000,000レコードをオンメモリで扱うのもどうかと思うが・・・
396:デフォルトの名無しさん
08/03/11 23:41:15
>>395
1レコード1KBでも1GBじゃん。32bitのメモリ空間埋めるのに、
1万円でおつりが出る時代なんだから、気にしないと言うのも
それはそれでアリかとw
397:デフォルトの名無しさん
08/03/11 23:57:28
容量の問題じゃなく速度の話だとw
398:デフォルトの名無しさん
08/03/12 00:50:48
それもそうだが、大量データの処理は専用のソフトウェアに任せろという意味だろ
Oracleのオンメモリストレージ使って100万件オンメモリとかならばOKな時代だがJavaのヒープでそれをやるってのはアホ
399:デフォルトの名無しさん
08/03/12 01:02:31
ヒープ領域使い果たしてJVMがクラッシュしたら速度とか言ってる場合じゃないしなw
5万ぐらいなら余裕だが100万レコードともなるとまず逝きますw
400:デフォルトの名無しさん
08/03/12 08:36:07
>>384
C言語は、javaに比べれば投げっぱなし感が強いんじゃない?
401:デフォルトの名無しさん
08/03/12 12:23:09
>>400
Rubyとかを勉強すると~なら分かるんだけどな。
なんでC言語を持ち出すのかが全く分からない。
402:デフォルトの名無しさん
08/03/12 12:28:36
それ以前に投げっぱなしという表現が意味不明
403:デフォルトの名無しさん
08/03/12 12:40:23
Rubyは麻薬だな。
でも遅すぎて死ぬ。
404:デフォルトの名無しさん
08/03/12 15:36:21
ここってJava3Dの話もしていい?
405:デフォルトの名無しさん
08/03/12 17:18:46
スレタイが初質だから初質っぽいことならいいんだろうけどJava3D使ってる人居るの?
俺はJOGL派なんだけど。
406:404
08/03/12 18:16:38
今ちょうど両方つまみぐいしてる所で、Java3Dメインにしようかと検討中。
JOGLの頂点配列並な性能はあるし上位なAPIあるから楽かなと。
質問は質問文まとめてる内に自己解決した、ごめん。
407:デフォルトの名無しさん
08/03/13 01:35:19
|:: \おい、ゴルァ 出て来い!! ドッカン ゴガギーン
:||::  ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン ☆
:||:: ___ ======) ))_____ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:|| | | | ̄.ミ∧_∧ | | ──┐||:: ∧_∧ < おらっ!>>1出てこい!!
:|| |ぁゎゎ. | |_..( ) | | .___ │||:: (´Д` ) \___________
:|| |Д`); | |_「 ⌒ ̄ ,|.. |_... ..||||:: / 「 \
:|| |⊂ノ; | |_| ,/  ̄ .  ̄ ̄ ̄ │||:: | | /\ \
:||:  ̄ ̄ ̄  ̄| .| :||│ ;, │||; へ//| | | . |
:||:: :; ; ,, :| :.| ||│ (\/,.へ \| | (r )
:||:: :; 冫、. . | .i .|:||◎ニニニニ\/ \ |  ̄
:||.:,,''; ` .. . :: . | ∧. |:||│::::/ │||::.:. .Y ./
:||:;;;: : | | | |.||│ 冫、 ;;;,,│||:;;;. | .|
:||:;;;: / / / /::||│ ` .,;;;,,.│||:;;;. | .|
:||;::: # ..: ./ / ./ ./ ||│|三三三|. │||;;:..:: | .|
:||;::: #. ..: :::::: (_) .(_).ミ||│ │||;;;k、,,,|,(_)
 ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三
408:デフォルトの名無しさん
08/03/13 10:12:53
Derbyを組み込みモードで使ってるんだけど、
動作中にJavaの外からDBのテーブルの状態を調べる方法ってないの?
409:デフォルトの名無しさん
08/03/13 13:11:37
VC++でDirectXつかって高度なお絵かきができますが、
Javaでも出来ますか?
たとえばコサックスみたいなやたら人がでてくる戦国シミュレーションゲーム作れます?
410:デフォルトの名無しさん
08/03/13 13:30:38
>409
やろうと思えば出来るんじゃね?
DirectXのパフォーマンスと比べれば程遠いモノが出来るが。
411:デフォルトの名無しさん
08/03/13 13:41:38
JMonkeyEngineってのがある
412:デフォルトの名無しさん
08/03/13 14:42:43
クラスの停止について質問です。
今ゲームを作っていて、オープニング画面とゲーム画面の2つをつくりました。
まずオープニングをJFrameに表示、その後キーボード入力でオープニング画面を消してから
ゲーム画面を表示するという構想で進めてます。
そこでオープニング画面のクラスを停止させたいのですが、やり方がわかりませんでした。
そもそも一度実行したクラスを停止させること自体無理なのでしょうか?
413:デフォルトの名無しさん
08/03/13 14:44:28
クラスを停止?何言ってるんだ
414:デフォルトの名無しさん
08/03/13 14:47:12
クラスの停止とか、色々と勘違いしていると思うが・・・
後で再描画するならばsetVisible(false)で非表示にする
二度と表示しないならばdispose() で破棄する
415:デフォルトの名無しさん
08/03/13 14:51:44
JPanelを2つ作って、片方を表示させた後、同じ場所にもう一方のJPanelをすり替えて表示させたいです。
今表示しているJPanelを消す=JPanelを継承しているクラスを停止させるという表現しかできませんでした。
416:デフォルトの名無しさん
08/03/13 14:53:14
JFrame の GUI に今あるアプレットが使えると思ってはめ込んでみたんだけど
どうもドロップダウンしたメニューがアプレットの後ろに描画されてしまう様子。
アプレットは JRootPane を使っているはずだがこれが原因?
417:デフォルトの名無しさん
08/03/13 14:53:42
>>414
ありがとうございます。
さっそくやってみます。
418:デフォルトの名無しさん
08/03/13 14:57:46
それをJPanelの交換により行うってのはどうなんだろう。
JPanelを継承した、例えばExJPanelに画面の状態を表すオブジェクトを保持させてればいいんじゃね?
public final class ExJPanel extends JPanel {
private Mode mode = new StartMode();
public void paint(Graphics g) {
mode.paint(g);
mode = mode.nextMode();
}
}
public interface Mode {
void paint(Graphics g);
Mode nextMode();
}
みたいな
419:デフォルトの名無しさん
08/03/13 15:16:03
>>412
CardLayout使えば?
420:デフォルトの名無しさん
08/03/13 15:24:18
>>418
JPanelの継承やってみます。ありがとうございます。
>>419
cardLayoutも調べているうちに見つけたのですが、脳みそが足らないばかりに
うまくいきませんでした。教えて下さったのにすいません。
421:デフォルトの名無しさん
08/03/13 15:29:18
まあ、Swingは最初は覚えること多いから仕方ない.
ゲームのオープニング画面みたいな起動画面であれば、すぐに表示するべきだから、別JPanelでいいと思う。
画面を出している間に、ゲーム用のコンポーネントを裏側で作るってのは正しいしね。
俺は乗せ換えでいいと思うよ。
1.JFrameにメインのコンポーネントを乗せる。
2.メインコンポーネントに、タイトル画面コンポーネントを設定して描画
3. スタートボタンなどが押されたらメインフレームからタイトルコンポーネントを抜いて差し替える
422:デフォルトの名無しさん
08/03/13 15:48:44
SplashScreen とは違うことをやりたいの?
423:デフォルトの名無しさん
08/03/13 15:49:48
ゲームのオープニング画面はスプラッシュスクリーンとは別物だろ
424:デフォルトの名無しさん
08/03/13 15:57:55
JPanel p = (JPanel)getContentPane();
JPanel p1, p2;
p.add(p1);
……
p.setVisible(false);
p.remove(p1);
p.add(p2);
p.setVisible(true);
俺なんか、全部交換。
425:デフォルトの名無しさん
08/03/13 16:11:55
>>412ですが無事完成しました。
みなさんアドバイス本当にありがとうございました。
426:416
08/03/13 16:16:16
JApplet の内容を JPanel に分離してそっちを JFrame と共有するようにしたら
メニューが裏に廻らなくなった。マジかよ。
427:デフォルトの名無しさん
08/03/13 16:37:00
>>426
JApplet自身は重量コンポーネントだからじゃない?
428:デフォルトの名無しさん
08/03/13 17:06:37
>422
Splashにボタンとかつけられたっけ?
自前でWindowを使って作るならばできるだろうけど
429:デフォルトの名無しさん
08/03/13 22:45:03
あるクラスに含まれるクラスを再帰的に抽出する方法ってあるでしょうか?
擬似コードを書くと、
Target hoge=new Target();
Class[] classes;
classes=hoge.getClass().***.getAllClasses();
みたいな感じのことができるといいなあと思っているのですが。
430:デフォルトの名無しさん
08/03/13 23:09:23
含まれるの意味が解らん
依存クラス数なら適当なMetrics測定ツール使えばいい
431:429
08/03/13 23:42:26
>>430
別の言い方をすると、あるクラスがimportしているクラスを
再帰的に取得したいといことです。
(あるクラスがimportしているクラス、そのクラスの
import対象のクラスがそれぞれimportしているクラス…というように、
依存関係のクラスオブジェクトをすべて取得する)
いっそclassファイルをバイト列のイメージにして文字列から解析した方が早いでしょうか?
432:デフォルトの名無しさん
08/03/13 23:43:42
importはincludeじゃないぞ……
433:デフォルトの名無しさん
08/03/13 23:54:37
>>431
importと依存は関係ないぞ。
java.lang.Classにはそういう情報を得る手段はないから、バイトコード
を解析するしかないんじゃないかねー。
434:デフォルトの名無しさん
08/03/13 23:54:50
MyClassLoaderで何とかならないかね
435:デフォルトの名無しさん
08/03/14 00:52:46
ダイナミックプロキシを使ってインスタンス化したオブジェクトのクラス名になる $1 とか $2 とか、
この番号に何か名前って付いてますか?
436:デフォルトの名無しさん
08/03/14 01:08:15
>431
で、解析して何がしたいんだ?
437:デフォルトの名無しさん
08/03/14 08:33:31
アノテーションの引数にオブジェクトを指定できないのは何でですか?
@Foo(new Bar()) とかしたいんですけど。
438:デフォルトの名無しさん
08/03/14 09:05:14
そういう仕様だから
439:デフォルトの名無しさん
08/03/14 14:10:18
fileクラスのrenameToで成功してもgetNameで名前が変わってないんですがどうしてでしょうか
440:デフォルトの名無しさん
08/03/14 14:15:02
>>439
細かいけど、Fileな
javadocよく読めば分かると思うけど、Fileはimmutableだから
441:デフォルトの名無しさん
08/03/14 14:15:16
>>439
java.io.File はファイルそのものを表現してるんじゃなくてファイル名を表現してるから、
renameTo でファイルそのものの名前が変わっても影響を受けない。
442:デフォルトの名無しさん
08/03/14 14:26:29
>>440
>>441
ありがとうございます。もっと調べてみます。
443:デフォルトの名無しさん
08/03/14 21:29:04
>>410
>>411
そうか。マルチプラットフォームではああいうゲームは無理か。
ところで、JavaのアプリとCのアプリで共有メモリーってさすがに無理だよね。
データをプロセス間で共有する場合、どういうことするんですか?
444:デフォルトの名無しさん
08/03/14 21:35:10
つDB
445:デフォルトの名無しさん
08/03/14 21:59:31
つパイプ
446:デフォルトの名無しさん
08/03/14 22:01:16
つソケット
447:デフォルトの名無しさん
08/03/14 22:06:56
>>443
ファイルを介してファイルマッピングという形でなら、たぶんできるんじゃない?
使い物になるかどうかは微妙かもしれないけど
448:デフォルトの名無しさん
08/03/14 22:18:48
>>443
URLリンク(lab.moyo.biz)
449:デフォルトの名無しさん
08/03/15 09:11:19
プロトコルハンドラって何に使うものなんですか?
よろしくお願いします。
450:デフォルトの名無しさん
08/03/15 09:39:52
URLリンク(www.google.co.jp)
451:デフォルトの名無しさん
08/03/15 09:51:11
JFileChooserで、
・ディレクトリ選択
・でも、普通のファイルも見れる
ようにしたいんですけどどうすればいいですかね?
ディレクトリ選択するようにすると、普通のファイルは見えなくなるし、
普通のファイル見えるようにするとディレクトリ選択できなくなるんですけど
452:デフォルトの名無しさん
08/03/15 09:59:35
ディレクトリ選択でファイルを見せる意味が分からん
453:デフォルトの名無しさん
08/03/15 10:03:46
ファイルが見えるとなんのディレクトリかよくわかるじゃん
454:デフォルトの名無しさん
08/03/15 10:07:05
試して無いけど、approveSelectionメソッドをオーバーライドすればいけるんじゃね?
setFileSelectionModeでFILES_AND_DIRECTORIESを指定してさ。
455:デフォルトの名無しさん
08/03/15 10:13:37
此処で良いのか疑問ですが質問です。
OS:WindowsXP IE6/Firefox/2.0.0.12
Sun Java Standerd Edition 6
バージョン6 アップデート5 (ビルド1.6.0_06-b13)
先日アップデートした処、Javaの起動で「Javaコンソール」を表示しないと実行されません。
コンソールを非表示でJavaの実行は無理なのでしょうか?
どうか教えて下さい。
456:デフォルトの名無しさん
08/03/15 10:15:05
うん、できた。
public class JDirectoryChooser extends JFileChooser {
@Override public void approveSelection() {
if (getSelectedFile().isFile()) return;
super.approveSelection();
}
public static void main(String[] args) {
JFileChooser c = new JDirectoryChooser();
c.showOpenDialog(null);
}
}
457:デフォルトの名無しさん
08/03/15 10:57:35
u5ってu4のセキュリティフィックスだよね。
そろそろ入れようと思ってたけどなんか色々問題あるみたいだね。
458:451
08/03/15 11:39:37
>>456
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
を一行追加してみても、だめでした。
さらに
public boolean accept(File f){return true;}
を追加してみてもだめでした。
459:デフォルトの名無しさん
08/03/15 11:44:41
ちゃんと>>456の書き込み読んでる?
460:デフォルトの名無しさん
08/03/15 13:37:06
内部クラスの中に内部クラスを作ったりって普通にしますか?
経験も積んでないのですが少し気持ちが悪い気がして質問しました。
461:デフォルトの名無しさん
08/03/15 13:59:26
全くしない訳ではないが普通しない
462:デフォルトの名無しさん
08/03/15 14:00:19
forの中にforを書いたりって普通にしますか?
のようなものかと
2段くらいはすることもあるけど、頻繁には使わない
3段以上は滅多にやらない
人にもよるかも
463:デフォルトの名無しさん
08/03/15 14:05:29
必要があれば使うみたいな
x,y,z,tなんて4次元だしw
464:デフォルトの名無しさん
08/03/15 14:17:38
そうでしたか。やはり熟練者の方の意見は勉強になります。
ありがとうございました。
465:デフォルトの名無しさん
08/03/15 15:32:42
import java.io.*;
class hoge{
public static void main(String args[]){
if(args.length <= 0){
System.out.println("specify the file name correctly");
System.exit(1);
}
try{
int i;
for(i = 0; i < args.length; i++){
BufferedReader br = new BufferedReader(new FileReader(args[i]));
String str;
while((str = br.readLine()) != null){
System.out.println(str);
}
}
br.close();
}
catch(IOException e){
System.out.println("input/output error");
}
}
}
コマンドライン引数からファイルを受け取って表示するプログラムですが、
br.close()の行で "シンボルを解決できない" というエラーが出ます。なぜエラーが出るのかわかりません。
br.close()を削除すれば実行できるのですが・・・。
466:デフォルトの名無しさん
08/03/15 15:38:49
>>465
br.close(); の前の閉じ括弧 '}' が一個多い。
それで br がスコープから外れて「シンボルを解決できない」といわれてる。
467:デフォルトの名無しさん
08/03/15 15:39:21
スコープを勉強しろ
468:デフォルトの名無しさん
08/03/15 15:51:21
{}の組み合わせは力ずくでは良くないがな
469:デフォルトの名無しさん
08/03/15 15:54:06
メモ帳でもつかって無い限りこんな間違いしないと思うんだけどな
470:465
08/03/15 16:20:48
>465の質問者ですが
br.close()の 前の閉じ括弧を’ } ' を取り除いても エラーが出ます。
その閉じ括弧はfor文の閉じ括弧になっています。
閉じ括弧を除いた場合のエラーは
hoge.java:13: 'try' への 'catch' または 'finally' がありません。
hoge.java:27: 'catch' への 'try' がありません。
hoge.java:32: '}' がありません。
です。
471:デフォルトの名無しさん
08/03/15 16:22:21
日本語も読めねーのかよw
472:デフォルトの名無しさん
08/03/15 16:47:25
>>470
br.close(); の前の閉じ括弧を一つ取り除いた後、
br.close(); の後に一つ閉じ括弧つけろ。
473:デフォルトの名無しさん
08/03/15 17:43:23
環境 Windows xp, jdk 1.5
ポリシファイルで全部のファイルの読み込みを可能にしました。
swingアプレットを作ったのですが、
プロンプトからだと画像やボタンが表示できました。
しかしブラウザから起動するとボタン等は表示できますが
画像が表示できません。(読み込めていない様子)
どうしたらできるのでしょうか?
一応、ソースの怪しい所を貼り付けておきます。
import......
/*
<applet code="TimerTest2.class" width=500 height=250>
</applet>
*/
___javaソースの一部___
public class Test2 extends JApplet implements ActionListener{
フィールドなので省略
public void init(){
icon0 = new ImageIcon("07.gif");
___起動させるhtmlファイル___
<html>
<head></head>
<body>
<p>
<APPLET code="Test2.class"width=500 height=250></APPLET>
</body>
</html>
_______________
htmlファイルは短いので全て載せました。
474:デフォルトの名無しさん
08/03/15 17:48:22
>>473
HTMLに画像を読み込むコードが無いから。
475:デフォルトの名無しさん
08/03/15 17:54:21
>>473
Javaコンソールからエラーの内容確認
476:デフォルトの名無しさん
08/03/15 17:59:06
自宅サーバ板のTomcatでwww鯖ってスレに質問したんですが、
なんか過疎ってるのでこちらに再掲します。
Debian etchでTomcat5.5使おうとしてるんですけど、
SEVERE: 設定記述子 test.xml を配備中のエラーです
org.apache.commons.logging.LogConfigurationException:
java.security.AccessControlException: access denied
(java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read)
(Caused by java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read))
こんなエラーが出ます。
サンプルアプリは動いていて、自分で作ったやつがエラーになります。
パーミッションはサンプルと同じでrootのみに与えています。
そもそも、logging.propertiesというファイルはサンプルアプリになかったのですが、
classesに777でlogging.propertiesを作っても同じエラーが出ます。
どなたか解決策を教えてもらえないでしょうか?
477:デフォルトの名無しさん
08/03/15 18:12:29
>>473
たぶんこうだ
new ImageIcon(getClass().getResource("07.gif"))
478:デフォルトの名無しさん
08/03/15 18:34:02
>>476
その上位ディレクトリに x パーミッション付いてるのかよ。
# su tomcatuser -c "cd /usr/share/tomcat5.5-webapps/test/WEB-INF/classes"