★★Java質問・相談スレッド143★★
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/01/25(火) 03:07:32JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド142★★
http://hibari.2ch.net/test/read.cgi/tech/1290103530/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0951デフォルトの名無しさん
2011/03/21(月) 15:54:31.94データベースのどの側面が欲しいかによると思う。
・機能なのか (SELECTでのカラム入れ替え、JOIN、ORDER BYなど)
・性能なのか (複雑なクエリに対する性能劣化が小さいこと)
・インターフェイスなのか (SQL文)
とりあえず、SqlJetでin memoryにどうでしょか。
0952デフォルトの名無しさん
2011/03/21(月) 17:19:23.65これのHTML表示部の文字コード指定方法分かる方いますか?
HTMLファイル冒頭のcharset指定はどうも無視されるようなので…
0953デフォルトの名無しさん
2011/03/21(月) 21:06:55.34下記のコードでは2バイトとなってしまいます。
修正が必要、またはそもそも間違っているのかご指摘お願いいたします。
int in = 130
Integer.toHexString(in);
byte[] by = hex.getBytes("SJIS");
0954デフォルトの名無しさん
2011/03/21(月) 21:07:51.71コードが誤っていましたので修正です。
int in = 130
String hex = Integer.toHexString(in);
byte[] by = hex.getBytes("SJIS");
0955デフォルトの名無しさん
2011/03/21(月) 21:16:36.48Integer#toHexString(int) は10進数の130を16進数の文字列に変換するので
Integer.toHexString(130) は "82" になる。
1バイトだけなら byte[] by = { (byte)130 }; でいいんじゃね?
複数バイトなら>>420-422あたりにある。
0956デフォルトの名無しさん
2011/03/21(月) 21:23:37.790957デフォルトの名無しさん
2011/03/21(月) 21:31:19.790958デフォルトの名無しさん
2011/03/21(月) 21:35:49.330959デフォルトの名無しさん
2011/03/21(月) 21:55:48.12char
0960デフォルトの名無しさん
2011/03/21(月) 22:11:11.94ありがとうございます!
キャストすると0〜255の範囲で扱えるとは知りませんでした。
ただし、キャストだと文字コード指定できませんので、
>>420のgetBytesを使う方法になりそうです。
ただ、getByteに必要なStringとして130を渡す必要があるため、
Integer.toHexStringを使ってStringを生成していますが
正しいのかよくわかっていないため調べてみます。
0961デフォルトの名無しさん
2011/03/21(月) 23:27:01.75現在、Androidアプリを作成中なのですが、JDK1.5のいくつかのソースコードを改変して
アプリに組み込もうと思っております。
javaのライセンスは確かGPLだったと思うので、作成したアプリの
ソースコードを公開してしまえば、問題なかったでしょうか?
よろしくお願いします。
0962デフォルトの名無しさん
2011/03/21(月) 23:32:14.95OpenJDKの方
0963デフォルトの名無しさん
2011/03/21(月) 23:57:16.43JAVAのライセンスは結構ややこしいですね。。。
ライセンスのことをもう一度調べてみようと思います。
ありがとう御座いました。
0964デフォルトの名無しさん
2011/03/22(火) 02:05:09.11Object型の変数.toString()ではClassCastExceptionになりました。
0965デフォルトの名無しさん
2011/03/22(火) 03:16:18.530966デフォルトの名無しさん
2011/03/22(火) 09:34:09.300967デフォルトの名無しさん
2011/03/22(火) 09:44:04.90GPLで配布されてるOpenJDKは今のところ1.6と1.7だけだったような
0968デフォルトの名無しさん
2011/03/22(火) 10:42:18.71「キャストだと文字コードが指定できない」とか、表現からすると、やりたいこととやってることに勘違いが重なっているように見えるんだが。
「int値"130"を要素1個のバイト配列にする」のに文字コードなんて関係ないだろ。
「SJISコード'130'の入ったint変数をバイト配列にしなさい」とかいうおバカな課題でも出されたのか。
0969デフォルトの名無しさん
2011/03/22(火) 14:04:37.66書き込み前のファイル末尾〜書き込み開始位置までは0で埋められるのでしょうか?
それとも、書き込み前のファイル末尾から書き込まれるのでしょうか?
0970デフォルトの名無しさん
2011/03/22(火) 15:09:34.80> それとも、書き込み前のファイル末尾から書き込まれるのでしょうか?
少なくともRandomAccessFile#write(int)、RandomAccessFile#write(byte[])の
API仕様の記述に反する振る舞いだから基本的にないと思っていい。
> 書き込み前のファイル末尾〜書き込み開始位置までは0で埋められるのでしょうか?
API仕様には直接的な記述はなかったはず。
RandomAccessFile#setLength(long) には
> length により返されたファイルの現在の長さが newLength 引数よりも小さい場合、
> ファイルは拡張されます。この場合、ファイルの拡張部分の内容は定義されていません。
って書いてあるから、これに準じた振る舞いをするんじゃないかと。
ちなみに、Windowsで元々大きかったファイルを再拡張した場合に、
元々の内容がそのまんま残ってたりする事もある。
0971デフォルトの名無しさん
2011/03/22(火) 16:09:52.490972デフォルトの名無しさん
2011/03/22(火) 16:28:18.48繋がってhttp://java.com/ja/に転送される
0973デフォルトの名無しさん
2011/03/22(火) 16:56:16.23グローバルIPが弾かれていました。
頭が1.から始まるとアクセス出来ないそうです。
失礼しました。
0974デフォルトの名無しさん
2011/03/22(火) 16:59:09.12そういう事じゃない?
0976デフォルトの名無しさん
2011/03/22(火) 20:19:23.78一種のクラナドやん
0977デフォルトの名無しさん
2011/03/22(火) 20:36:28.38Flashのようなプラグイン式に比べてユーザーの負担や嫌悪感が非常に大きい
0978デフォルトの名無しさん
2011/03/22(火) 21:32:26.64以下のような、クラス内でpaintメソッドを定義したJFrameを継承したクラスXXXのインスタンスを、mainメソッドから生成してmeeenメソッド中の処理を行うようにしたいです。
class XXX extends JFrame{
Image offi;
Graphics offg;
public XXX(){
offi = createImage(640, 480);
offg = offi.getGraphics();
meeen();
}
public void paint(Graphics g){
offg.setColor(new Color(0,0,0));//[[[[この行]]]]
offg.drawString("うるおいミルク ぷー",100,100);
g.drawImage(offi,0,0,this);
}
public void meeen(){処理;}
}
実行してみると、上の[[[[この行]]]]を含む行にNullPointerExceptionが発生する時があります(しない時もあります)。
例外が発生した時はXXXのコンストラクタ内の特定の処理が終了する前にpaintメソッドが呼び出されてしまったということなのでしょうか?
どなたか解説お願いします!
0979デフォルトの名無しさん
2011/03/22(火) 23:12:01.370980デフォルトの名無しさん
2011/03/23(水) 02:34:24.84ここ見てるPG/SEの帰宅時間に関係があったりして
0981デフォルトの名無しさん
2011/03/23(水) 03:49:18.33SVN 以外での配布やめたの?
http://tomcat.apache.org/taglibs/standard/
0982デフォルトの名無しさん
2011/03/23(水) 08:50:37.11以下のようにあるから、恐らく開発中。
> not yet JCP approved
0983デフォルトの名無しさん
2011/03/23(水) 08:52:58.24初心者にしては珍しく具体的な情報が多くて良い質問だなぁ。
main()とEDTは別プロセスだから、mainの実行中にswingのオブジェクトツリーに追加されるような操作(setVisible(true)とか)すると、以降非同期にEDTからpaint等が呼ばれる可能性があるような。
JFrameってコンストラクタでsuper()しなくていいんだっけ?
0984デフォルトの名無しさん
2011/03/23(水) 08:59:39.60暗黙的にそれが呼ばれます。
0985デフォルトの名無しさん
2011/03/23(水) 09:04:55.04>JFrameってコンストラクタでsuper()しなくていいんだっけ?
自分が初心者のくせになに言ってんだw
0986デフォルトの名無しさん
2011/03/23(水) 09:49:22.52相手にするな
0987デフォルトの名無しさん
2011/03/23(水) 10:01:09.160988デフォルトの名無しさん
2011/03/23(水) 13:30:12.60現在はダブルバッファリングの実装を必要としない方法に書き換えました。
質問の状態ではsetVisible(true)をXXXのコンストラクタ内に記述していたのですがこれがいけなかったのでしょうか。
ということはつまり、JFrameのインスタンスを生成する際にはコンストラクタ内の処理とpaintメソッド内の処理のどちらが先に行われるかはわからないということでしょうか?
また、
>JFrameってコンストラクタでsuper()しなくていいんだっけ?
についてできれば詳しく教えていただきたいです。
0989デフォルトの名無しさん
2011/03/23(水) 15:11:35.050990デフォルトの名無しさん
2011/03/23(水) 15:32:22.96コンストラクタの処理とpaintの処理については、StringBuilderのようなフィールドにそれぞれの呼び出しで別の値を追加するようにすればわかるんじゃないかな?
で、Javaはコンストラクタの先頭で明示的にsuperを指定しないと引数なしの superが自動的に呼び出される。
0991デフォルトの名無しさん
2011/03/23(水) 16:14:20.21サーバー側で複数ファイルをzipなどで圧縮して1ファイルにし
ブラウザにダウンロードさせ、それを解凍してもらうしかないでしょうか?
0992デフォルトの名無しさん
2011/03/23(水) 16:58:12.40オフスクリーン用 Graphics は paint 内で作るとよい。
if (offg == null) offg = offi.getGraphics();
0993デフォルトの名無しさん
2011/03/23(水) 17:08:39.65んなことせんでも Swing は最初からダブルバッファ機構あるから
自前でやる必要まったくない
なにもしなくてもおけ
paintComponent(Graphics g)
これオーバライドして、適切なタイミングで repaint 呼び出すだけでよい
ちなみに repaint は、ちゃんと再描画の範囲を指定してやると無駄な処理が少なくなっていい
0994デフォルトの名無しさん
2011/03/23(水) 20:16:20.23JFrame のサブクラスでなにかを描画するプログラムを
書くよりは、まず JComponent のサブラクス作って、そこに描画
のプログラム書いて、
そのパネルを main メソッドの中で JFrame#setContentPane とかして、
表示させるのがいい
コードが整理されて見やすいし、アプレットとかにも転用できる
0995デフォルトの名無しさん
2011/03/23(水) 20:30:15.370996デフォルトの名無しさん
2011/03/23(水) 22:11:39.11オライリーのSwingHacksとかでも、描画関連の処理はpaintComponentでやれって書いてたな
SwingHacksは、ちょっと古いけどSwingの描画まわりはかなり詳しく解説されてた
Swingを本気でやるならオススメだ
>>995
Swing自体、複雑だしわかりにくいからな
その辺りを解消するために、Swing Application Frameworkとか開発されてたけど、
今、どうなってるか知ってる人いる?
0997デフォルトの名無しさん
2011/03/23(水) 22:38:12.51SWTみたく別スレッドからアクセスしてきたから
即例外エラー出さないからねえ
しかし、それでも、コンポーネントの組み替えとか
必要なところだけ SwingUtilities.invokeLater(doRun)
やればいいだけだろう、そんなに難しい話じゃない
0998デフォルトの名無しさん
2011/03/24(木) 04:51:30.650999983
2011/03/24(木) 07:54:24.69> スーパークラスにデフォルトコンストラクタが定義されていれば
>暗黙的にそれが呼ばれます。
そうだっけ。
最近そういうの全然意識してなかったうえに、swing使ってた頃はJFrameは引数付けて呼んでたもんで、確認せずに適当に書いた。
984以降指摘してくれた各位と質問者にお礼とお詫びする。
ありがとう。混乱させてすまなかった。
ついでに埋め。
1000デフォルトの名無しさん
2011/03/24(木) 10:07:02.5110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。