[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/02 08:12 / Filesize : 246 KB / Number-of Response : 963
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2008/03/01(土) 18:16:51 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド112【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1202467704/

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

次スレは>>980あたりで。

82 名前:60 mailto:sage [2008/03/03(月) 00:35:41 ]
sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/awt/event/MouseEvent.html#getPoint()

MyPointオブジェクトがドラッグされます。
その瞬間にMouseEvent eが発行されます。
これはどこから発生させればいいですか?

一応、
MyPanel < JPanel has MyPoint
という設計を考えています。MyPointはx,yという座標を持っています。

もしMyPointをリスナ登録させた場合、e.getPoint()は・・

あぁ
www.javadrive.jp/applet/event/index3.html
ですか。

これって、
e.getPoint().xというのは、e.getX()と等価ではないですか?
そのコンポーネント上で、「マウスがクリックされた」座標を取得出来るだけですよね?
もし、MyPointでイベントを取得して、かつ、そのイベントのMyPanelでの相対位置を知ることが出来ればいいと思うのですが。

83 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:02:33 ]
何が言いたいのかよくわからんが、

private Point prePoint;
public void mouseDragged(MouseEvent me){
Point nowPoint = me.getPoint();
this.setX(this.getX() + (nowPoint.x - pre.x));
this.setY(this.getY() + (nowPoint.y - pre.y));
pre = me.getPoint();
}

こんな雰囲気でいけると思うんだが

84 名前:60 mailto:sage [2008/03/03(月) 01:09:47 ]
>>83

MyPoint extends JPanel implemens MouseMotionListener, MouseListener

という設定でですか?
private Point prePoint
というのはなんですか?
どこにも使われてないのですが。

おそらく、
MyPointのサイズ内で
マウスポインタの相対位置の変化を
点の移動距離としようという発想でしょうが、
問題提起として、
もし、マウスを思いっきり早く動かした場合、
つまりコンピュータがMouseEventを発行するより先に
MyPointの領域からはみ出た場合はどうするのでしょう?

85 名前:正志 [2008/03/03(月) 01:10:47 ]
さきほど取ったdataのpositionですが、
文字列を整数に出来ない、
int sss3=Integer.valueOf(posx);
なんで


86 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:11:23 ]
>>82
イベントがどのコンポーネントで発生したか e.getComponent() で知ることができる
それでなんとかなるだろ

87 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:14:45 ]
>>84
>MyPointの領域からはみ出た場合はどうするのでしょう?

ドラッグ中は、ボタンを押した場所のコンポーネントにマウスイベントが送られ続ける
ボタン離すまでずっと
はみ出ても問題なし
ただし座標はマイナスとかになるから、そのへんさえ考慮してあればおk

88 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:15:19 ]
>>60
prePoint は pre のミスだ。空気嫁。

>MyPointの領域からはみ出た場合はどうするのでしょう?
mouseExited() つかえ

89 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:29:18 ]
>>85
Integer.parseInt するまえに、posXを表示させて確認しろ
"data" とか空白とか混じってるんだろ、どうせ

90 名前:デフォルトの名無しさん [2008/03/03(月) 01:31:53 ]
>>80
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/221.java
こんな感じじゃダメなの?



91 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:47:49 ]
>>85
>>88じゃないけど補足。
空白入ってたらtrimしてやればよし

92 名前:60 mailto:sage [2008/03/03(月) 09:25:11 ]
>>90
これは簡単な実装ですね。
おれがやりたいのは、PointもJPanelから継承させて
リスナをつける。
Pointの方でイベントを制御したいというものです。
外からやればそれは簡単でしょうが、
mousePointのところでものすごい手間がかかります。
例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます。

それとこれは直接には関係ありませんが、
おれの主義で、コレクションは使わない事にしてます。
プリミティブ型と参照型の変換があんまりうまく行かないので非常に手間です。

もしArrayList<int>とかけるようになった暁には使おうかと思います。

93 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:37:37 ]
>>92
>例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます

自分で計算するのは無駄で、Swingに同じ計算をやらせるのは無駄でないと?

94 名前:60 mailto:sage [2008/03/03(月) 09:39:06 ]
いや、自分で計算しないでしょ。
いちいちそのポインタがどのPointに含まれてるのか特定
するのが工学的に考えてすごく無駄。
自分で計算する部分なんかあるわけがないと思いますが。
プログラミングなんだから。

95 名前:デフォルトの名無しさん [2008/03/03(月) 10:44:55 ]
JAVAでヒャードキュメントを書く方法を教えてください。
String s = <<END_OF_DATA;
あいうえお
かきくけこ
END_OF_DATA

96 名前:60 mailto:sage [2008/03/03(月) 10:45:59 ]
自分でっていうのは、自前で計算して点を特定してっていう意味か。
swingも内部でオブジェクトの特定に計算してるわけね。
でも、MyPointの挙動をMyPanelが請け負うのはどうなの?
もし他のコンポーネントに対してもdraggedイベントを発動させたい時に
場合わけが必要になる。
それって例えばdraggedイベントが10種類あるとした場合に、
めちゃくちゃな事になるから
MyPointにイベントを処理してもらう方がいいと思った。

それに、点の位置をpublicで外から変更出来るっていうのも不自然。

97 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:10:08 ]
>>95
ない

98 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:41:10 ]
>>96
そのへんはどっちでもいいと思う
たぶん好みの問題だし

1万個の点の判定を高速化したいって趣旨だったら、R-TreeやQuad treeを作るといいんじゃないかな
en.wikipedia.org/wiki/R-tree
en.wikipedia.org/wiki/Quadtree

99 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:41:54 ]
>>93
無知と非常識に基づく信念の持ち主の相手なんかしなくていいよ。無駄だから。

100 名前:60 mailto:sage [2008/03/03(月) 13:34:16 ]
>>98
例えば、
paintComponent(Graphics g)
を使う時に、委譲を使ったりしますよね。
それと同様に、
MyPointクラスでも
MyPoint#public void moveByMouseMove(MouseEvent e)
とかいうのを作って、
MyPanel#public void mouseDragged(MouseEvent e)
(MyPoint)p.moveByMouseMove(e);

とするのはどうでしょうか?
最悪、MyPanel上でコンポーネントを計算で拾うにしても
実装の部分はMyPointクラスで書いた方がいいと思うのですが。



101 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:37:26 ]
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/222.java
マウスの処理をMyPoint側でやるコード書いてみた。
点を1万個にすると生成に時間が掛かるけどその後は特に問題なく動いた。

102 名前:デフォルトの名無しさん [2008/03/03(月) 13:42:03 ]
>>97
作ってください。作ってくれたら

103 名前:60 mailto:sage [2008/03/03(月) 13:46:16 ]
>>101
実行してみました。
素晴らしいです。まさにおれが考えていた仕様そのものです。
setOpaqueというのは知りませんでした。
おれはsetVisibleで出来るかと思ってましたが、
どう違うのですか?

104 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:50:45 ]
>>100
ドローツールを作るときとかは、そんな感じで作るよ。
各図形にイベントを送って、それによってマウス制御のStateを変えていく。
そうすると、図形の選択・移動や変形なんかが簡単にできる。

ただ、クラスは分けたほうがいいと思う。モデルが太りすぎるから。

105 名前:60 mailto:sage [2008/03/03(月) 13:50:51 ]
JFrame#setLocationRelativeTo
terai.xrea.jp/Swing/CenterFrame.html
も知りませんでした。勉強になります。

差し支えがなければ、
生成に時間がかかるのは当然として、
その後、円滑に動く理由を説明してもらえませんか?

106 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:51:39 ]
>>103
JPanelはデフォルトで不透明 (opaque=true) だから、点は四角くないので透明な部分もあるので、設定を変えてるだけでしょ
setVisibleとは全然別

107 名前:60 mailto:sage [2008/03/03(月) 13:59:26 ]
>>106
setVisibleっていうのは
addするかしないかくらいの差があるという事ですか?
つまり
setVisible(false)というのは完全に無効なコンポーネントになると?
Visiblityというのは見える、見えない=不透明か透明か
という事だと思っていました。

なるほど、デフォルトでは灰色のようですね
今setOpaqueをコメントアウトしたら四角いバックグラウンドが出てきました。

だからMyPointでsetBackgraound(Color.BLACK)
しても大丈夫ですが、これはきっと遅いでしょうね。



108 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:12:23 ]
>>107
そう
setVisible(false) は、まったく何も表示されなくなるし、マウス入力もキーボード入力も受けなくなる
存在してないのとほとんど同じ

109 名前:60 mailto:sage [2008/03/03(月) 14:13:14 ]
>>108
Oh I see, Thanks

110 名前:a [2008/03/03(月) 15:18:59 ]
www.harukitchen.com/rpg_programming/index2.htm
ここのサイトにある
プログラムはオープンソースにしておきます。以下のファイルを全てDLして、
メインとなるMapEdit.javaをjavac ファイル名でコンパイルしたのですが、

nandemo-up1.hp.infoseek.co.jp/cgi-bin/nandemo/up0667.jpg
nandemo-up1.hp.infoseek.co.jp/cgi-bin/nandemo/up0668.jpg

このようなエラーが…。
オブジェクトが見つかりません で検索してみたのですが、
クラスがないということだけしか…でもクラスの定義はされてるし…サッパリです…。
どうすればいいのでしょう?何か足りないファイルでもあるのでしょうか…?



111 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:10:14 ]
>>110
>でもクラスの定義はされてるし…

定義されてるか?
OffScreenというクラスはどこにあるんだ?
AccelとかBattleManageは?

112 名前:a [2008/03/03(月) 16:21:45 ]
MapCanvas.javaに OffScreen m_pix_off_screen;
Chara.javaに Accel m_accel;
とあるんですが、これは違いますかね…?^^;

113 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:23:37 ]
>>112
Javaの基礎から勉強し直した方がいいよ

114 名前:a [2008/03/03(月) 16:28:16 ]
JAVAの基礎すら知らないので、
とりあえず起動させる手順教えて下さい。

115 名前:60 [2008/03/03(月) 17:29:22 ]
java3Dを使いたいですなぁー

116 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:47:22 ]
>>114
ここはプログラムを作る人のための板なんで、
自分で作らず拾って動かすだけの人はお呼びでない
>>115
じゃあ使ってみれば
ひとりごとはブログにでもどうぞ

117 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:31:23 ]
こんな質問恥ずかしいんだが初心者歓迎って書いてるから大丈夫だよね

JComboBoxに対してsetSelectedItemメソッドを実行するとJComboBoxに登録した
アクションリスナーが反応しちゃってどうも意図した動作が得られない
JComboBoxの項目が選ばれたときのみリスナーが反応するには
どこでどう判断させればいいのかな?
恐らくイベントを受け取るactionPerformedメソッドで
それがユーザーアクションによって起こったものかどうか判断できるのだろうか…
いくらヤフっても出てこない。どなたかご教授お願いします

118 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:44:56 ]
>>117
一番安直なのは、setSelectedItemする間だけリスナを外す
もしくはフラグを立ててイベントを無視する
ユーザ操作によるものかどうかは判定できないんじゃないかなぁ

119 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:52:42 ]
>>118
リスナを外す方法は、ちょっと不粋かなぁ?と思ったんだけど
それしか方法がないなら仕方ないね。即レスありがとう

120 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:24:44 ]
shift_jis、jis等の文字コードを指定して
全角文字列を一文字ずつ漢字コード取得していくのは
どのようにすればいいでしょうか?



121 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:29:01 ]
>>120
byte[] b = "あ".getBytes("Shift_JIS");

122 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:38:02 ]
>>122
invokerもどきを自分で作るのがそんなに大変とは思えないけど・・・
リクエストURLからクラス名を切り出して
Class.forName(〜).newInstance()でサーブレットをインスタンス化して
service呼ぶだけじゃないのかなぁ基本的には

125 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:40:54 ]
>>123
MyForm も setAlignmentX(1) にしないといけないのでは

126 名前:123 [2008/03/03(月) 22:49:40 ]
>>125
なるほど。
いけました。そういうもんなんですね。

127 名前:a mailto:sage [2008/03/03(月) 22:53:07 ]
>>116
お呼びでないじゃなくて質問者が来るんだよ。バカか。
かってに決めてんなよお前の意味わからんルールを。質問相談スレッドだろが。

128 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:58:19 ]
>とりあえず起動させる手順教えて下さい。
いやこれ質問じゃないし

129 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:04:16 ]
>>127
pc11.2ch.net/tech/
ここ見てみろ、ちゃんと書いてあるだろう
「この板はプログラムを作る人のための板です」って

130 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:04:21 ]
まあ3月だもんな
しゃーない



131 名前:正志 [2008/03/04(火) 03:02:19 ]
>>91 Thanks,
>>88 Shut-up man, fuck off you bitch, ウゼエ どうせ〜だろ はやめなさい

132 名前:デフォルトの名無しさん [2008/03/04(火) 03:32:21 ]
ところでsplitで x または aで区切るのはどうしたら?

133 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 03:59:29 ]
"123a456x789a0".split("x|a")

134 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 14:36:03 ]
Nim of game の書き方教えてくれるとこありますか?

135 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 14:36:34 ]
Game of Nimでした。

136 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:08:09 ]
すみません、質問させてください。

Look&Feelのフォント設定で、
System.setProperty("swing.plaf.metal.controlFont", "Dialog-Plain-12");
を指定しておくとフォントがDialog-Plainの12ポイントになりますよね。
WindowsのLook&Feelを適用したときにもこのように一括で指定するキーはありますか?

これらのキー名がAPIドキュメントにさっぱり見つからず困っております・・・


138 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:21:47 ]
>>138
ありがとうございました


140 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 17:36:21 ]
カオスってるな



141 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 17:38:22 ]
>>141
転載ミス。errorPage=error.jspと読み替えてください。

143 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:56:35 ]
> 一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、
> といったルールは存在しますか?
ない。

146 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:48:27 ]
4桁の16進数を
数値型に変換ってどうすればいいですか?
0xの16進数で出力したいのですが

147 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:57:00 ]
>>146
よくわからんので、どういう入力に対してどういう出力が欲しいのか、例をあげてくれ

148 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:59:59 ]
>>146
エスパーレスすると
int i = 0xABCD;
System.out.println("0x" + Integer.toString(i, 16));

149 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:03:56 ]
>>147
失礼しました
>>148の方の例で言うと
StringでABCDとわかっていて
intで0xABCDと変換したいのですが

150 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:05:58 ]
>>149
String s = "ABCD";
int i = Integer.parseInt(s, 16);



151 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:07:07 ]
>>150
ありがとうございます
引数に指定するだけなんですね

152 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:47:26 ]
お世話になります。

swingいじりしているのですが、根本がわかっていません。
JFrameのインスタンスを作ると、そいつは、自動的に別のスレッドで動いているのでしょうか?
関数main()は、最終行まで処理されて、その後ろはないのですが、
JFrameでつくったウィンドウやその上のコンポーネントは動作を続けています。

スレッドでなければ何なのか理解できません。
エスパーしていただけませんか。

153 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:04:25 ]
分かりません。教えてください。初心者です。エスパーしてください。

154 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:15:34 ]
>>152
クラスは作成したとき一回だけ初期化用のメソッドを通る。

155 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:12:20 ]
OSのシステムフォントを得る方法はありますか?

156 名前:デフォルトの名無しさん [2008/03/05(水) 01:28:07 ]
Javaの質問とちょっとずれる気もしますが・・・

DBとのコネクションを確立する為に
Connection con = null;
con = DriverManager.getConnection(URL,USER,PASS)

などと書きますよね。
この時、conはインスタンスと呼んで良いのですか?
Connectionはインターフェースなのでインスタンスを生成することはできないはず。
インスタンスでないとしたら何なのでしょうか?
ご教授下さい。


157 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:30:59 ]
>>152
ThreadGroup#listでどんなスレッドが動作しているか見てみるといい。
思った以上にいろいろなスレッドが動いているのが分かる。

158 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:32:57 ]
>>156
conはConnectionインタフェースを実装するクラスのインスタンスへの参照

159 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:35:38 ]
一応、正確を期すなら「conで参照しているインスタンス」みたいな言い方になる。
変数それ自体はインスタンスではない。


160 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:18:58 ]
>>152
そう、SwingはEDTという別スレッドで動いている
そして、ここ以外では動かしてはダメ、というのがルール



161 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 04:15:31 ]
>>152
名前をわざわざ変えなければ、mainメソッドはmainという名前のスレッドで動作している。
Swing関係の機能を使うとさらに別のいくつかのスレッドが生成される。
その中には>>160の言うEDTというGUI関係のイベント処理を一手に担うスレッドもある。
この新たに生成されたスレッド群によってウインドウやその上のコンポーネントが動作する。
mainメソッドが最後まで処理されるとmainという名前のスレッドは終了して無くなるが、
他のスレッドが終了するまでプログラム全体としては終了しない。

162 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:23:40 ]
EDT自体はAWTにもあってSystem Queueっていう名前でマルチスレッドになってる。
Swingのイベント周りはシングルスレッドで動いててSwingコンポーネント生成を含めてSwingコードはEDTで動かさないといけない。
昔、Swing関連のスレッドにはバグがあるからSwingコンポーネントの生成もEDTで行うようにと作法が密かに変わってSwingのチュートリアルだけが変更されてまともなアナウンスはされてない。

163 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:10:15 ]
>>152 の書き方だと
>JFrameのインスタンスを作ると、そいつは自動的に別のスレッドで動いているのでしょうか?
と訊いているのだから、コンストラクタの呼び出しのことで、それ自身はmainのスレッドで動いているでいいんじゃない?
全てのコンストラクタの呼び出しが終わらなければmain()には戻らないと…
コンポーネントのイベント処理はまた別の話で。
もちろんSUNの推奨は >>162 の云うようにコンポーネントの作成もEDTで行うなのだろうが…

164 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:34:10 ]
ボタンを作って、そのボタンを押すとthreadがnullになるように作っています。
run()メソッドの中に書かれている処理にかかる時間が短い場合(1ms以下)だと正常に止まってくれます。
しかし、処理にかかる時間が長い場合(100msくらい)だと何回もボタンを押さないと止まってくれません。
どうしたらいいですか?

run()メソッドの中
while(thread != null) {
処理
thread.sleep(100);
}

165 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:40:35 ]
>>164
時間のかかる処理の途中で if(thread==null) break; とかしてみる。

166 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:49:12 ]
コンストラクタってコンストラクタ自身がスレッド作ってその上で動いてなかったっけ?

167 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:35:10 ]
えっ

168 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:57:48 ]
>>168
カレントスレッドがどれかも表示しないと意味なくない?

170 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 14:01:32 ]
>166
スレッドの生成コストってフルGC並の糞思い処理だぜw



171 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 14:03:00 ]
eclipse Europe 3
と日本語化をつかってるのですが
バージョンアップするには何をダウンロードしてどうしたらいいですか?

172 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 15:48:54 ]
>>171
Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】
pc11.2ch.net/test/read.cgi/tech/1200918324/l50

こっちで聞け


173 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:54:03 ]
いやjavaのスレッドじゃなくてVM内部で別のスレッド走らせてるんじゃなかったけ?
言語違ったかなぁ・・・。

174 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:01:43 ]
>>173
そんなわけのわからんことはしないよ
そんな奇妙なことをする言語があるなら興味深い
コンストラクタじゃなくてファイナライザか?

175 名前:デフォルトの名無しさん [2008/03/05(水) 19:50:02 ]
質問です。

GI プログラム中から
他のGUI プログラムを呼び出したときに
必ず呼び出したプログラムのウィンドウ(Frame)にフォーカスをあわせる方法
ってありますか?

呼び出すプログラム側でエンターキーで他のプログラムを呼び出すのですが、
エンターキーを連打したときなどに、どっちのプログラムもキーの受付をしてくれなくなります。

マウスでクリックしてやれば、アクティブになってキー操作を受け付けてくれるのですが。

176 名前:デフォルトの名無しさん [2008/03/05(水) 19:51:14 ]
>GI プログラム中から
GUI プログラム中から
のミスです

あと、
> 必ず呼び出したプログラム
呼び出された新しいプログラム という意味です。

177 名前:デフォルトの名無しさん [2008/03/05(水) 21:18:28 ]
詳しい方へ質問です。

『作成したプログラムを保存するフォルダを作る。コマンドプロンプトを起動したらそのフォルダがディレクトリになるように設定する(Cドライブのルートに「My Java」フォルダを作成し、ここをディレクトリにする)』
という作業をしたいのですが、「コマンドプロンプトのプロパティ」→「ショートカット」で「作業フォルダ」に“C:¥My Java”と入力すると、
「“C:¥My Java”フォルダは無効です。フォルダがあるか、またはパスが正しいか確認して下さい。」と出てしまいます。
他にフォルダを作った覚えもないのに、何度やっても同じ結果になってしまうのですが、どうしてなんでしょう?

あ〜もう!自分で書いてて意味分からない‥


178 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:32:09 ]
>>175
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Window.html#toFront()

>>177
"C:\My Java"
と入れてみ。
C:\は全角で入力する必要があるし、
フォルダ名にスペースを含む場合は前後を"で囲む必要がある。

179 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:32:44 ]
C:\は全角じゃない半角だった

180 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:44:13 ]
>>177
質問の内容がJavaではない気がする・・・。
Javaのプログラム上からファイル出力をする為のディレクトリを生成して
Javaからコマンドプロンプトを起動してカレントディレクトリを設定するって事ですか?



181 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:56:07 ]
>>181
いきなり2ちゃんかよ。
まずは本なり入門サイトに行けよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef