1 :
デフォルトの名無しさん :
01/10/20 18:11 「Java相談室」および「ネタ心者歓迎!今更ながらにJavaを学ぼう!」を
統一する為のスレッド
過去スレへのリンクは
>>2-10 くらいに。
2 :
デフォルトの名無しさん :01/10/20 18:11
3 :
デフォルトの名無しさん :01/10/20 18:13
ジャヴァヴォック
Swingのフォーカスの設定なんですけど ↓のプログラムで、デフォルトでフォーカスがあたっているのを button1に変更するにはどうすればいいんですか? import javax.swing.*; public class TestFrame extends JFrame { private JButton button1 = new JButton("Button1"); private JButton button2 = new JButton("Button2"); public TestFrame() { JPanel panel = new JPanel(); panel.add(button1); panel.add(button2); getContentPane().add(panel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { JFrame frame = new TestFrame(); frame.pack(); frame.setVisible(true); } }
>>5 ×button1に変更するには
〇button2に変更するには
>>5 可視化した後に、フォーカスあてればいいだけじゃん。
何のメソッド使うのかは、自分で探せ。
8 :
デフォルトの名無しさん :01/10/20 22:42
>>5 7の説明が余りにアレなので補足すると
もしかしたらsetVisible()で可視化する前に
(上のソースだとコンストラクタの中とかで)
ボタンにフォーカスをあてようとしてないかな?
それだと上手く行かないので、setVisible()を行った後でrequestFocus()を行えば
上手く行くYO!
■質問■ JAppletで作ったアプレットが動きません。 前にここの相談室でで質問したらGoogleで検索して自分で調べてから出直してこいといわれました。 調べてもわかりません。ソースを載せるので原因究明をしてください。 お願いします。 App1.javaのソース import javax.swing.JApplet; import java.awt.Graphics; import java.applet.Applet; public class App1 extends JApplet { public void paint(Graphics g){ g.drawString("Hello World",50,50); } } Appi.htmlのソース <HTML> <BODY> <APPLET CODE="App1.class" WIDTH="200" HEIGHT="100"> </BODY> </HTML> そしてApp1.htmlを実行すると、 load: class App1 not found とでて動きません。 JAppletをAppletにするとちゃんとうごきます。 あとJBuilderのアプレットビューアではちゃんと動いてくれます.
11 :
デフォルトの名無しさん :01/10/21 01:32
>>10 ブラウザをネスケ6.1にする。
それで動かなければあきらめる。
>>10 JRE1.3をインストロール。
vmselect を使って IE が JRE1.3 の VM を使うように設定。
ついでに >deltree /y %system%java して MS 製の VM を削除。
13 :
デフォルトの名無しさん :01/10/21 02:20
ふつーブラウザ=IEだろ
>>14 ここ数年IE使ったことないな
Netscapeから最近Mozillaに移行した。
だからってどうでもいいけどな。
>>17 全くだめです。
10番さんのおっしゃったことが良くわかりません。
JRE1.3はインストールしてありますが。
20 :
デフォルトの名無しさん :01/10/21 03:06
…って俺10じゃないし
>>18 できましたぁ
ありがとうございます。
vmselectとはなにかのコマンドかと思ってしまいました。
しかし、JAppletを使ってアプレットを作って
Webページ上で公開した場合に
多くの人がみられないということが起こってしまうのでしょうか?
23 :
デフォルトの名無しさん :01/10/21 03:27
僕はJAVAでプログラミングをはじめたプログラミング初心者なのです。 とりあえず超入門みたいな本はマスターしたとは思うのですが、 これから何をやればいいのかわからなくなってきました。 とりあえず本を立ち読みしてはいるのですが、ますますわからなくなってしまいます。 どうしたものでしょうか?
そういうときはクラスを作るのがベストだよ。 本に書いてある機能をクラスにして貯めとくのがいいよ。 それとなにか作る目的があって設計書もあって という状況じゃないとやる気もおこらんよ。
25 :
デフォルトの名無しさん :01/10/21 04:15
26 :
デフォルトの名無しさん :01/10/21 06:31
独習JAVAはなんか、良くない印象がある
27 :
デフォルトの名無しさん :01/10/21 13:29
#if #else #endif が無い。 テストバージョン、デバックバージョン、仕様変更バージョン等が 作れなくて最悪。 つうかプリプロセッサつけろや!
28 :
デフォルトの名無しさん :01/10/21 13:44
>>27 Javaでは下のようにします。
何の保証もありませんが、まともなコンパイラなら最適化により
プリプロセッサと同様の効果が得られます。
static final int DEBUG = 0;
if (DEBUG){
}else{
}
29 :
デフォルトの名無しさん :01/10/21 13:48
>>27 Javaは他力本願な言語なのです。
Javaプログラマは、Javaコンパイラを信じて、
Javaコンパイラは、JITコンパイラを信じて、
そしてJITコンパイラは、将来CPUが速くなることを信じて。
そして、結局いつまでたってもウンコなのです。
>>28 JDKじゃダメダメな気がするが。
少なくともバイトコードでは消えない。
また、SunのJITは以下の文をきちんと実行する。
for( int i=0 ; i< 1000000 ; i++ );
31 :
28じゃないけど :01/10/21 21:28
>>30 DEBUGバイトコードから消えたよ
> cat TestConst.java
class TestConst {
static final boolean DEBUG = false;
public static void main(String[] args) {
if (DEBUG) System.err.println("Debug message.");
System.out.println("Hello world");
}
}
>javap.exe -c TestConst
Compiled from TestConst.java
class TestConst extends java.lang.Object {
static final boolean DEBUG;
TestConst();
public static void main(java.lang.String[]);
}
Method TestConst()
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 return
Method void main(java.lang.String[])
0 getstatic #2 <Field java.io.PrintStream out>
3 ldc #3 <String "Hello world">
5 invokevirtual #4 <Method void println(java.lang.String)>
8 return
~/src/tests/Java
> java -version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)
JDK1.1.8, JDK1.3でも消えた。
>>30 さんのうそつきー!!
>>27 Java用のプリプロセッサもあるから使えば?
他の言語のやり方をそのまま持ち込もうとしてもねえ。
33 :
デフォルトの名無しさん :01/10/21 22:09
iモードJava用にフルアセンブラでJavaVMのコードを書きたいです。 いいツールはないでしょうか。
35 :
デフォルトの名無しさん :01/10/21 22:53
36 :
デフォルトの名無しさん :01/10/21 23:00
38 :
デフォルトの名無しさん :01/10/22 00:01
こっちに統合なのですね、ということでこっちで質問します。 FileDialogにFilenameFilterをimplementsしたクラスを設定(setFilenameFilter)したのですが。 acceptメソッドが呼ばれる気配がいっこうにありません。 使い方が根本的に間違っているのでしょうか? やりたいことはFileDialogでjpgファイルだけ選択対象になるようにしたいのです。
39 :
デフォルトの名無しさん :01/10/22 00:43
>>38 フィルタの実装方法は
http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html の"Filtering the List of Files"あたりを参照してみてください。例があります。
もしくはyourSDK/demo/jfc/FileChooserDemo/ExampleFileFilter.javaを参照。
以上、APIdocからの引用です。
たぶんデフォルトのフィルタをremoveしてから、あなたが実装したフィルタをadd
すればいいのではないかと。
以下のメソッドを調べてください。
void JFileChooser.addChoosableFileFilter(FileFilter defaultFilter)
void JFileChooser.removeChoosableFileFilter(FileFilter yourFilter)
現在使用されているフィルタを取得するには
FileFilter[] JFileChooser.getChoosableFileFilters()
・見当違いだったらスマソ(w
40 :
デフォルトの名無しさん :01/10/22 00:44
Winとかじゃ実装されてなかったんじゃないの?
public void paint(Graphics g) { BufferedImage bm=new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); Graphics2D g2=bm.createGraphics(); g2.setColor(Color.red); g2.drawLine(0,0,100,100); x=(int)(Math.random()*30.0f); y=(int)(Math.random()*20.0f); g.drawString("Hello World!",x,y); } このままだとHELLOWORLDが表示されない 上の4行を消すとHELLOWORLDが表示される 上の4行は全く関係ないはずなのにどうして?
42 :
デフォルトの名無しさん :01/10/22 01:24
gがg2の下に隠れてるとかでは?
43 :
デフォルトの名無しさん :01/10/22 01:30
>>41 思うにそのxとyは最大でも3pxと2pxでは。。。
てことは文字のベースラインがMAXでも3pxじゃあ上に隠れてるんじゃないの?(ワラ
30pxと20pxよね(死
Javanese
>>39 回答ありがとうございます。
ただこれは、swingのJFileChooserの場合ですよね。
java.awt.FileDialogでやりたいのです。
>>40 38に対するレスですよね・・?
いまいちよくわからないのですが、
実装されていない、ということは自分で実装する必要があるのでしょうか?
47 :
デフォルトの名無しさん :01/10/22 06:23
>>46 今確認してみたら
APIドキュメントのほうにはこう書いてあった。
>ファイル名フィルタは、Windows 95, 98, or NT 4.0 用の Sun の参照実装では機能しません。
JBuilderのファイルダイアログとかすごく良くできてるんだが ああいうのは自分で実装しないとダメなのね
49 :
デフォルトの名無しさん :01/10/22 10:28
仕事の息抜きにSwingをちょこちょこいじってるんだけど、なかなかおもしろいね。 仕事で使うのはやだけど。
50 :
デフォルトの名無しさん :01/10/22 10:48
>>41 上の4行の有無と関係なく、問題なく表示されるよ。
別の問題があるんじゃないかな。
ほかに問題ってなにが考えられますか? これだけのプログラムなんですが
>>51 ほんとにそれだけなら
コンパイル通らないだろ。
55 :
デフォルトの名無しさん :01/10/22 18:11
すみませんが、どなたかお分かりになればお教えください。 Javaのオブジェクトからバイト配列に、または逆に バイト配列からJavaオブジェクトに変換したいのです。 Stringならできますが、IntegerやDouble、BigDecimalなどができません。 変換ルーチンをCで書けば何とかなるのですが、できればJavaだけで実装したいのです。 よろしくお願いします。
>>55 Stringにしてからバイト列にすればいいじゃん
逆もまた然り。
>>55 Serializableって知ってるか?
但し、他の言語との互換性は無いぞ。
Javaオブジェクトを専用フォーマットで
シリアライズするわけだから、当たり前。
説明不足で申し訳ないです。
>>56 さん
>Stringにしてからバイト列にすればいいじゃん
例えばIntegerに「1」という値が入っているとき、
{0x00,0x00,0x00,0x01}
というバイト配列にしたいんです。
>>57 >但し、他の言語との互換性は無いぞ。
えっと、なんでこんなことをしたいのかと言うと、
あるクラスを呼び出したいのですが、その引き数が
バイト配列なんですね。それで上に書いたような
フォーマットに変換したいんですが、やはり無理でしょうか?
59 :
デフォルトの名無しさん :01/10/22 19:33
>>58 ByteStream作って、readFloat,wroteFloatすれば良いのでは?
streamですか。 よく知らないのですが勉強してみます。 ありがとうございました。
61 :
デフォルトの名無しさん :01/10/23 01:23
>>58 IntegerやDoubleからintやdoubleを得るのは簡単だよね。その逆もね。
つーことは、intやdoubleをバイト配列で表す、そして逆にバイト配列から
intやdoubleに変換する、ことができればOKだよね。
このとき便利なのが、ByteArrayInputStreamとByteArrayOutputStream。
使い方はAPIドキュメントを見ればわかるよ。
あと、単純にシフト演算子を使用して、プリミティブの数値をバイト配列に
変換することもできる。
このスレ立てた奴はネーミングセンスゼロだな。
63 :
名無しさん :01/10/23 12:30
>62 じゃあセンスあるタイトルをつけてみてください、次スレでつかいますよ。
質問です。 今日「jdk1.3.1」をインストールして「jpedit」というエディタもインストールしました。 実際簡単なプログラムを書いてコンパイルしようとしたら ’javac’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイル として認識されていません。とエラーメッセージが出ました。 どのように回避したらいいのか教えてもらえないでしょうか。御願いします。 物凄い初心者的な質問でごめんなさい。
65 :
馬鹿こぼらー :01/10/23 17:22
こんちは!馬鹿コボラーです。 別スレで誘導されました。 オブジェクト指向なんてわかりません。 VBだったら簡単なプログラム組めます(WinAPIも多少理解) こんなわたすにぴったりの「Javaを勉強するための本」って ありませんか? よろしくお願いします。
>>64 javac.exeが、コマンドプロンプトから見つけられないんだよ。
パス通すか、絶対パス名(C:\jdk1.3.1\bin\javacとか)で
実行してみそ。
(Winであるという仮定。それ以外のOS使っていてこの手の質問
する奴は銃殺、つうか餓死)
>>66 さん
ありがとうございます〜できました!
PATHの設定がきちんとできてなかったんですね。なるほろ。
OSは勿論winです。
餓死はいやだ・・・
68 :
馬鹿こぼらー :01/10/23 21:24
あのぉ。ネタじゃないです。誰か教えてください。 お願いします。
>>68 独習Java 読んどけ。
これが分からなかったら やるな。
70 :
デフォルトの名無しさん :01/10/23 21:38
>>65 >>65 Javaのユーザーって、C++の知識を前提にして自然に流れてきた人が
多いと思うから、そういう質問にあながち適切に答えられるんだろうかと
思ったりする。
71 :
馬鹿こぼらー :01/10/23 21:43
>>68 独習JavaってSHOEISHAのですか・・・・・あそこの出版社のはちょっと。
あ、あとCも初心者本終了レベルです。
72 :
デフォルトの名無しさん :01/10/23 21:49
74 :
馬鹿こぼらー :01/10/23 22:06
>>72 すまん英語は無理だ。Your First Cup of Java を全部終えるまで
今までかかってしまった。
>>71 じゃあ
Java言語プログラミングレッスン(上)(下)
(結城 浩) SOFTBANK
を読んどけ。
本当は(下)だけでいいんだが、てめーは(上)からちゃんと読め。
これがわからなかったら、氏ね。
>>75 2度も親切にありがとう。言葉は悪いけど良い奴だね。
>>76 オブジェクト指向の本かぁ。。。。。
どんなのがいいのだろう?
Componentが非表示のときのフォントサイズって、どうやって求めたら良いのでしょうか。 Toolkit.getFontMetrics(Font) は deplecated になってしまってます。
>>78 Component#getFont()すればいいじゃん。
非表示でもインスタンス参照はあるんでしょ?
>>80 マジでいってるの?ネタ?
APIドキュメント見ろよ。Font#getSize()とかあるだろ。
Component#getGraphics() が null を返すときに、FontMetricsを取得したいの。 getSize() が返す数値なんかいらん。
84 :
デフォルトの名無しさん :01/10/24 20:40
>>83 >Component#getGraphics() が null を返すときに、FontMetricsを取得したいの。
単に、Component#getFontMetrics()ではまずい? きちんと取得できると思うよ。
>>83 …
Component#getFontMetrics(Font)
86 :
デフォルトの名無しさん :01/10/25 05:53
87 :
厨房(83) :01/10/25 09:39
Thanks! > ALL 迂闊!逝ってくる… JDK1.1.6だかJDK1.2.0で ComponentPeer#getFontMetrics()で例外でたから 非表示だと取れないと思い込んでたよ。
88 :
avaj真剣 :01/10/25 11:12
どうもです。その弐でも質問させてもらたんですが・・ここでも(スマソ Win98でJ2EE+deploy動かすの成功しました(笑) BATファイルとポリシーファイル総書き換え。 そして、念願のペットストアをdeploy・・・・できません(−−; rmi compilation faild・・・とかなってます・・ どういうとこ見直せばいんでしょう・・・ エラーログ見てもサッパリです(><)
89 :
デフォルトの名無しさん :01/10/25 12:00
JavaScriptの中でBeanって使えるんですか? (Beanの中身が見れるかって事が知りたいんです) 教えてください。
90 :
デフォルトの名無しさん :01/10/25 12:03
>>89 見えない
つーかJavaとJavaScriptは別物だと何度いえば、、、、
JSPと勘違いしてるのか?
JavaScript クライアントサイドJAVA JSP サーバーサイドJAVA
>>89 あ、アプレットとの連携の事をいってるのか
LiveConnectで検索しる
93 :
デフォルトの名無しさん :01/10/25 12:12
書き足し。 JSPです。 JSPのスクリプトの中で、判定させるためにBeanの中身が欲しいんです。
>>91 ネタであると明言しないと、またバカが信じるぞ。
95 :
デフォルトの名無しさん :01/10/25 13:11
Javaに固定小数点を使う型はあるのでしょうか? それとも標準クラスならある?
>>95 演算に関しては、ないです。自分で実装するしかないです。
データそのものについては、java.math.BigDecimalで我慢するがよろし。
JDBCの数値型標準マッピング対象だし。
>>91 ASPのJScriptの事か!!
おまえM$の回し者だな!?(笑
>>96 > 演算に関しては、ないです。自分で実装するしかないです。
そうですか・・・・宇津田
スクリプトの中にJSPを書く事にしました。
>>98 jcp.org(JAVAコミュニティプロセス=企業合同Javaライブラリ仕様
策定機構というところかな?)でIBMがなんかライブラリ作ってる
みたいよ。COBOL仕事のリプレースには固定小数点演算は必須の
機能だもんね。しばし待て、ということで。
すいません、JAVAをするとかしないとかの問題以前に、 いくらプログラムを書いて、MSでうごかしても エラーが出るんですけど・・・・ どうしてでしょうか。 ちなみにプログラムは独習のをコピペしてもだめでした。 あと、PATHの書き換えもしてあります。 どなたか理由を知っている方は教えてください。
102 :
デフォルトの名無しさん :01/10/26 00:23
>エラーが出るんですけど・・・・ そのエラーをここに書きましょう。
>>102 error:example1.javaが読み込めません。 エラー1個 です。
104 :
デフォルトの名無しさん :01/10/26 01:01
>>103 なんてコマンドを打ったらそのエラーが出たわけ?
>>104 c:windows>の所で javac example1.java と、うつと103のようなエラーが出ます。
>>105 ファイルが無いか名前が違うとしか思えんが・・。
同じところで
dir example1.java
と打つとどーなる?
example1.java というファイルがちゃんと c:windows フォルダの下にあるかい? ちゃんとDOSコマンドでファイルのある場所に移動せにゃ
>>106 ディレクトがありませんと出ました・・・・。 なので場所を移して実行したら一様うごきました。 ありがとうございました。 っというかこんな単純なミスですいませんでした。 また、JAVAの違うバージョンが二つ同居してたので不安定みたいでした。 なので一回アンインストールしてからもう一回やります。 ありがとうございました。
>>107 すんません。106さんのを見てもしやと思ったらそうでした(汗)
import java.awt.*; public class sendaImage extends java.applet.Applet{ Image img; public void init(){ img=this.getImage(this.getDocumentBase(),"image0300.jpg"); MediaTracker mt=new MediaTracker(this); mt.addImage(img,0); try{ mt.waitForID(0); }catch(InterruptedException e){} } public void paint(Graphics g){ g.drawImage(img,0,0,null); } } ↑ 画像出力するだけのアプレットのプログラムソースです。 これに画像出力に要する時間を計測して表示させる機能をつける場合、どうしたらいいでしょうか。 APPLETタグを2つのJavaScriptではさんで、時間を計測することはできたんですが、アプレットをダウンロードするのに費やした時間しか計測できなかったので。
appletを発音するとき、アクセントの位置はどこですか
112 :
デフォルトの名無しさん :01/10/26 04:04
>>111 「 ん あプレット 」
はい、ごいっしょに
「 ん あプレット 」
113 :
デフォルトの名無しさん :01/10/26 05:04
文字列(String)からある文字cを探すのに便利な方法があったら教えてください。
String.indexOf()
>>110 たん。
JavaScriptで描画に要した時間を表示したいのなら、
とりあえずアプレットにコードを追加すればいいんじゃない?
まず描画が終わったことをなんらかの方法でアプレットに検知させる。
で描画がおわったらアプレットからJavaScriptに描画が終わったことを知らせる。
JavaScriptは、その知らせを受け取った時刻から、
描画に要した時刻を算出して画面に表示。
//では、どうやって描画がおわったことを検知すればいいのかは、わかんないけど。
//移転でスレ沈んじゃったからage。
>>110 んな小難しい事しなくたって、
System.currentTimeMillis()(だったっけ?うろ覚え)で
現在時間取得して、初期化時とpaintメソッド終了時の
差分を表示すりゃいいんじゃないの?
paintメソッド呼ばれるたびに
おっと、切れた。 まあいいや。
>>117 一回目のpaintのdrawImageがfalseを返す場合には、
imageUpdateをoverrideして、そこで測った方が良いと思う。
mediaTracker使ってるの見落としてた。 mt.waitForID(0); の後ろで測ればいいのか? ってゆうか、init()の中でこんなブロックしてていいんだっけ?
121 :
馬鹿こぼらー :01/10/29 22:44
こんちゃ。 初心者本を買って勉強してる最中なんですけど、 なんでStringは最初の文字が大文字なんでしょうか?
122 :
(・∀・)カコイイ! :01/10/29 22:47
>>123 なるほどわかりました。
確かに今まで書いてきたソースのクラス名は最初が全部大文字です。
あとStringはStringオブジェクトとかかかれていましたねぇ。
ありがとう。
125 :
デフォルトの名無しさん :01/10/31 12:22
J2SE1.4 Beta3 でたよage
126 :
デフォルトの名無しさん :01/10/31 12:43
1.四角形の面積を求めるメソッドを作りなさい。ただし、正方形なら 「面積は○○、正方形です」長方形なら、「面積は○○、長方形です」と 出力しなさい。 2.九九を全て出力しなさい。 例 1*1=1、1*2=2、1*3=3、1*3=3・・・・・・・・・・・9*9=81 という二つの問題の解き方がわかりません。どなたかご教授ください。
>>126 これじゃ宿題の答え教えてくださいって言ってるようなもんだぞ。
どこがわからないのかちゃんとかきましょうね。
128 :
デフォルトの名無しさん :01/10/31 13:16
129 :
デフォルトの名無しさん :01/10/31 13:37
>>128 (a)まず、与えられる値が何で、求めるべき答えが何かを、はっきりさせます。1.なら、縦と横の寸法が与えられて、面積と、正方形/長方形の別が、求めるべき答えでしょう。
(b)貴方が自分の頭でその計算をやるとき、どのような手順でやるか考えます。その手順を紙に書きましょう。「まず最初に」「次に」と箇条書きにするのが良い。
(c)手順がわかったら、そのままプログラム化します。和英の直訳のノリで、日本語をJavaに直せば完成。
次に質問するときは、この3つのステップのどこがどう判らないか言うように。
130 :
デフォルトの名無しさん :01/10/31 13:45
>>129 ありがとうございます。参考になりました。
132 :
デフォルトの名無しさん :01/10/31 13:49
過去スレの方へ書いてしまっていたので すみませんがこちらでもう一度質問させてください。 ----------------------------------------- 超初心者質問ですいません。 a+bという文字列をgetParameterすると、 a bという感じに+が消えてしまいます。 なんでかわかりません。わかる方教えてください。お願いします。
133 :
デフォルトの名無しさん :01/10/31 14:07
>>132 + がスペースに変わるのなら、%2B が + になるだろう。きっと。
134 :
デフォルトの名無しさん :01/10/31 17:35
即答しろ。 PreparedStatementで実行するSQL文を知る方法はないのか?
>>135 thx. やっぱないのか。
あんまり文が長くなってくるとだんだん不安になってきてな・・・。
LOGが欲しくなって来るんだ。デバックしてる間だけな。
>>136 Statementインスタンス作るときのSQL文とStatementインスタンス
でMapつくっときゃいいだけじゃん。
>>137 スマソ、初心者だから言ってる意味が理解できん(泣)
139 :
デフォルトの名無しさん :01/10/31 23:35
初心者なのでわからないのですが ソースファイルを作って、MS-DOSプロンプトで ディレクトリの移動をしようとするとパラメータが多すぎます とでてしまうのですが何故なんですか? どなたかおしえてください。
統合前のスレで時々質問させてもらった教えてくんです。 やっと(とりあえず満足の逝く)アプリが完成した!! 教えて頂いた皆さん、サンキューです。 近くWebでソースと一緒に公開します。 とりあえずジャヴァ関連スレ盛り下がりすぎなのでage.
142 :
デフォルトの名無しさん :01/11/02 14:06
よんどけっていう本ほかにないですかちんぽこ
143 :
入門書買って2時間 :01/11/02 15:17
「スタートアップJava」(技術評論社ムック)の、最初のプログラム。とにかく間違えずに文字通り打ちましょう、というだけの超・初歩なのに。 ===== import javax.swing.*; import java.awt.*; public class FirstProgram{ public static void main(String[] args) { JFrame myFrame = new JFrame("初めてのJAVAプログラミング"); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myFrame.setSize(350,200); myFrame.setVisible(true); } } ===== C:\javasample>javac firstprogram.java firstprogram.java:5: クラス FirstProgram は public であり、ファイル FirstProgram.java で宣言しなければなりません。 public class FirstProgram{ ^ エラー 1 個
>>143 エラーメッセージのとおりにファイル名をかえろ。
>C:\javasample>javac firstprogram.java
ほんとにその本にはこのとおり書いてあるのか?ダメな本だな。
145 :
デフォルトの名無しさん :01/11/02 16:36
すいません、教えてください!!!コンパイルできないんです!!外部の独立したリスナーにしたいんですけど・・・・ import java.awt.*; import java.awt.event.*; import javax.swing.*; class Kadai5a extends JPanel{ Person hito; JTextField hField, wField; JLabel hyoujun, hantei, himando, message; JPanel dataPanel; OutListener listener; Kadai5a(){ message = new JLabel(" "); dataPanel = new JPanel(); setLayout(new BorderLayout()); add(message, BorderLayout.WEST); add(dataPanel,BorderLayout.SOUTH); hField = new JTextField(10); wField = new JTextField(10); hyoujun = new JLabel(); hantei = new JLabel(); himando = new JLabel(); listener = new OutListener(this); hField.addActionListener(listener); wField.addActionListener(listener); dataPanel.setBackground(Color.white); dataPanel.setLayout(new GridLayout(5,2)); dataPanel.add(new JLabel("身長(cm)")); dataPanel.add(hField); dataPanel.add(new JLabel("体重(Kg)")); dataPanel.add(wField); dataPanel.add(new JLabel("標準体重(Kg)")); dataPanel.add(hyoujun); dataPanel.add(new JLabel("BMI(理想値:22)")); dataPanel.add(hantei); dataPanel.add(new JLabel("肥満度(%)")); dataPanel.add(himando); hito = new Person(); } public static void main(String args[]) { JFrame f = new JFrame("Himando"); Kadai5a h = new Kadai5a(); Container c = f.getContentPane(); c.add(h, BorderLayout.CENTER); f.pack(); f.setVisible(true); } }
class OutListener implements ActionListener{ Kadai5a kadai; public OutListener(Kadai5a h){ kadai = h; } public void actionPerformed(ActionEvent e){ float fHeight, fWeight; try{ fHeight = Float.parseFloat(kadai.hField.getText()); } catch (NumberFormatException error){ fHeight = 0.0F; } kadai.hito.setHeight(fHeight); try{ fWeight = Float.parseFloat(kadai.wField.getText()); } catch (NumberFormatException error){ fWeight = 0.0F; } kadai.hito.setWeight(fWeight); if(e.getSource() == kadai.hField) { if(fHeight <= 0) { message.setText("正しい数値を入力してください"); kadai.hField.requestFocus(); } else { message.setText(" "); kadai.wField.requestFocus(); } } else if(e.getSource() == kadai.wField) { if(fWeight <= 0) { message.setText("正しい数値を入力してください"); kadai.wField.requestFocus(); } else { message.setText(" "); kadai.hField.requestFocus(); } } if( (fHeight > 0) && (fWeight > 0) ){ kadai.hyoujun.setText(Float.toString(hito.calcStdWeight())); kadai.hantei.setText (Float.toString(hito.calcBMI())); kadai.himando.setText(Float.toString(hito.calcHimando()*100)); } } }
class Person{ private float weight; private float height; float getWeight() { return weight; } float getHeight() { return height; } void setWeight(float w) { weight = w; } void setHeight(float h) { height = h; } float calcStdWeight(){ return (height*height*22/10000F); } float calcBMI(){ return (weight*100F*100F/height/height); } float calcHimando(){ float bmi = calcBMI(); return (bmi-22)/22; } }
148 :
145,146,147 :01/11/02 16:37
どこが間違っているんですかね????教えてください、お願いします!!
149 :
143入門書買って2時間+α :01/11/02 16:49
>>144 サンクス。ファイル名を自分が間違えている可能性あり。
今時間が無いので後で確認します。
150 :
145,146,147 :01/11/02 16:52
class syoshinnsya{ public static void main(String[] args){ System.out.println("145,146,147を早く教えてください"); } }
>>145 , 146, 147
コンパイルできないのなら、エラーが出てるでしょう。
エラーを見ておかしいところを直しましょう。
152 :
145,146,147 :01/11/02 16:55
エラーメッセージ見てもわからないから、聞いてるんだよぉ・・・>151
へー、Kadai5a ね。
154 :
145,146,147 :01/11/02 17:01
Kadaiって書いてあるけど、学校の課題ではありませんので・・・よろしく。
>>145-148 たん。
ざっと見た感じだけど。
まず、ファイルを分割するのなら、
独立させたリスナのクラスファイルの冒頭にもimport宣言をつける。
Kadai5aクラスのメンバ変数、hitoやmessageはプロテクトされているので、
外部からこれを取得できるようにpublicなメソッドをKadai5aクラスに付け加える。
あと投稿の前に「Kadai」というクラス名は変えておく。以上。
156 :
145,146,147 :01/11/02 17:10
厳しいなぁ・・よくわかんないんですけど。もっと初心者向きに教えてください。 >155
初心者だからこそ尚一層の努力が必要だと思われる。
159 :
デフォルトの名無しさん :01/11/02 17:19
みんな冷たいじゃねーか。教えてやれよ
160 :
ThreadLocalが :01/11/02 17:20
違う値を返すよ。
課題の答えを教えるスレだったんですか?
162 :
ThreadLocalが :01/11/02 17:21
class MyClass { private static final ThreadLocal tl = new ThreadLocal () { protected Object initialValue() { System.err.println("New thread local was created on a thread" + "(" + Thread.currentThread() + ").") ; return new Object() ; } } ; private Object tlvalue ; public MyClass() { tlvalue = tl.get() ; } public Object getObjectA() { return tlvalue ; } public static Object getObjectB() { return tl.get() ; } } --- 続く
163 :
145,146,147 :01/11/02 17:21
145〜147で1ファイルだよ public,privateくらいならわかるよーどう直せばいい?
164 :
ThreadLocalが :01/11/02 17:22
class MyThread extends Thread { public void run() { MyClass c = ThreadLocalSuspection.getMyClass() ; if (!(c.getObjectA().equals(c.getObjectB()))) { System.err.println("It seems to me that a ThreadLocal " + "generates two keys for a thread(" + this + ")...") ; } } } public class ThreadLocalSuspection { private static Object obj = new Object() ; private static final ThreadLocal tl = new ThreadLocal () { protected Object initialValue() { return new MyClass() ; } } ; public static MyClass getMyClass() { return (MyClass)tl.get() ; } public static void main(String[] args) { int numThreads = 1 ; MyThread[] threads = new MyThread[numThreads] ; try { for (int i = 0 ; i < numThreads ; i++) { threads[i] = new MyThread() ; } for (int i = 0 ; i < numThreads ; i++) { threads[i].start() ; } for (int i = 0 ; i < numThreads ; i++) { threads[i].join() ; } } catch (Exception e) { e.printStackTrace() ; } } } -- 終わり。
165 :
145,146,147 :01/11/02 17:22
それは明らかに違うだろぉ・・・>162
166 :
145,146,147 :01/11/02 17:23
何のプログラムだぁ????
168 :
ThreadLocalが :01/11/02 17:26
>> 162 同じスレッドから呼べば同じ値が返るんでないの?
じゃ、もういっかい
>>145-148 たん。
えっとね。
Kadai5aクラスに以下の二つのメソッドを書き足すのね。
public Person getHito() { return hito; }
public JLabel getMessage() { return message; }
で、あとは、OutListenerクラスの中にある
hitoやmessageを、getHito()やgetMessage()などに置換していけばいいの。
// まあ、ほかにあと2,3箇所くらい書き換えないと
// 実行できなかったけど。がんばれ。
// どうでもいいけど肥満度-33%だったよ。。。死ぬなおれ。(^ーー^=)
170 :
ThreadLocalが :01/11/02 17:36
162, 164をつなげるとコンパイルできるようになります。 MyClassのインスタンスはMyThread#run()の中で作成、破棄される から、スレッドローカルは同じ値のはず。っつう解釈なんだけど...
171 :
145,146,147 :01/11/02 17:38
すんません、どうやって置換するんですか?kadai5aクラスに二つのメソッドを入れるって、Kadai(){の中に入れればいいんですか??>169
172 :
145,146,147 :01/11/02 17:40
Kadai5a(){の中に二つのメソッドを入れればいいんですか??>169
鬱陶しいな。
174 :
ThreadLocalは :01/11/02 19:02
同じになったけど?? 出力結果と実行環境は?
>>169 俺は身長170、体重64kgだけど
理想体重:63.58kg
BMI(最適値22):22.145329
肥満度:0.66058415
だった。ほぼ理想的!!
>>172 クラス構成を変えた方が良い。特にactionPerformedで処理を行いすぎ。
俺はこうしてみた。
class Kadai5a extends JPanel{
private JLabel message = new JLabel(" ");
private JTextField hField = new JTextField(10);
private JTextField wField = new JTextField(10);
private JLabel hyoujun = new JLabel();
private JLabel hantei = new JLabel();
private JLabel himando = new JLabel();
private DataManager manager;
Kadai5a() {/*省略*/}
void setHyoujyun(String s) {/*省略*/}
void setHantei(String s) {/*省略*/}
void setHimando(String s) {/*省略*/}
public static void main(String args[]) {/*省略*/}
private class HFieldListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
manager.setHeight(height);
}
}
private class WFieldListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
manager.setWeight(weight);
}
}
}
class DataManager {
private Person parson = new Person();
private float height;
private float weight;
private Kadai5a kadai;
DataManager(Kadai5a k) {kadai = k;}
void setHeight(float h) {/*省略*/}
void setWeight(float w) {/*省略*/}
private void calc() {
if((height > 0.0f) && (weight > 0.0f)){
kadai.setHyoujyun(Float.toString(parson.calcStdWeight()));
kadai.setHantei(Float.toString(parson.calcBMI()));
kadai.setHimando(Float.toString(parson.calcHimando()*100));
}
}
}
176 :
ThreadLocalが :01/11/02 19:40
>>174 ありがとー
OSはTurbolinux7(ネイティブスレッドね)
実行環境はSunのjava SDK1.4beta2
出力結果
------------------------
$ java ThreadLocalSuspection
New thread local was created on a thread(Thread[Thread-1,5,main]).
New thread local was created on a thread(Thread[Thread-1,5,main]).
It seems to me that a ThreadLocal generates two keys for a
thread(Thread[Thread-1,5,main])...
-----------------------
上のソース、ちっと変だけど、要するに 1.画面を提供するクラス(Kadai5a) 2.人間のデータを扱うクラス(Person) 3.Personの計算結果を画面に反映させるクラス(DataManager) 4.ユーザーが入力したデータをDataManagerに渡すクラス(各リスナー) と言う感じで、役割を細分化したほうが良いと思う。
178 :
ThreadLocalが :01/11/02 19:57
環境依存だったのか、っつーわけでJRE1.3.1_1で 実行したら問題なく実行できたよ。 # スレッド手入れてたかー
179 :
143入門書買って2時間+α :01/11/03 00:05
>>144 さん
大文字小文字間違えてただけでした。30秒ちょっとで解決。<ばか<自分
まあまだHallo World段階なんで許してください。
180 :
デフォルトの名無しさん :01/11/03 01:11
>>179 そうか。Good-bye, World までがんばれ。
どーでもいいのですが、 2本並列だったJavaスレが3本並列になってしまった気がするのですが…
すまん寒かった。自分がとても寒くなった。。
183 :
デフォルトの名無しさん :01/11/03 02:46
質問です。 Javaで、例えばダウンロードソフトでよくあるように、 対象ファイルのサイズを表示させたいのですが、 その方法、もしくはクラスやメソッド教えて下さい。 ダウンロードを開始する時、まず合計サイズを表示させて、 それに対するダウンロードパーセンテージを表示したいです。
184 :
デフォルトの名無しさん :01/11/03 02:53
(args.length == 1)?args[0]:null これってなにを意味してるんですかね? さっぱりわからないんですが。 教えてください。
>>184 > (args.length == 1)?args[0]:null
args.length == 1 が、真ならargs[0]を、偽ならnullを、かえす。
hello world 程度の初心者です。 最初のうちは、すぐコンパイルができたのですが 最近、コンパイルにすごく時間がかかるようになりました。 これは、パソコンが原因なのでしょうか。
187 :
デフォルトの名無しさん :01/11/03 10:00
>>183 URLConnectionクラスのgetContentLength()でできるよ。
>>185 ありがとうございます。
検索して調べようにも
どう検索していいかわからなかったんですよ。
189 :
デフォルトの名無しさん :01/11/03 15:43
JBuilder4でコードを綺麗に整形する機能ないですか?
190 :
デフォルトの名無しさん :01/11/03 15:46
>>187 ありがとうございます。
たしかにそうなんですが、httpdがContent-Lengthを返す
ファイルならいいのですが、.htmlなどは返さないので
困っています。
言葉足らずでした。
>>190 試してみたけど、.htmlファイルでも、Content-Lengthは取れるけど?
192 :
デフォルトの名無しさん :01/11/03 16:57
Jiniってなんですか? RMIとなにが違うの? どっかに日本語の解説ないですか? 見つかるのは英語の資料ばっかりで…
おおう、しらん間にそんな本でてたのね。先月発売じゃん。 ありがたいっす。早速買ってこよっと。
195 :
デフォルトの名無しさん :01/11/03 18:59
>>190-191 HTTPの仕様書を読みましょう。
サーバはContent-Lengthを返すのが望ましいが、
じぜんにサイズがわからない場合は接続の切断で、
データの終了ということでもいいです。
ダウンロードということは主にFTPでしょうから、
この場合はlsコマンドでファイルサイズを得ることができます。
HTTPでのダウンロードはファイルサイズ不明は仕方なし。
IEなどでもHTTPでダウンする場合は不明なことがあるでしょ?
JEditorPaneをつかう。 javax.swing.text.html.HTMLEditorKit をせっとすればO.K.
199 :
デフォルトの名無しさん :01/11/03 19:20
>>196 とりあえず、以下で勘弁ね。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Kotae73 extends JFrame{
String message = "Hello world!";
JLabel label;
JPanel panel;
public Kotae73(String title){
super(title);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
label = new JLabel(message);
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setOpaque(true);
label.setBackground(Color.yellow);
label.setForeground(Color.red);
getContentPane().add(label, BorderLayout.NORTH);
panel = new HelloWorldPanel();
getContentPane().add(panel, BorderLayout.CENTER);
setSize(new Dimension(300,200));
}
public static void main (String[] args) {
Kotae73 frame = new Kotae73("Answer for Q73");
frame.show();
}
private class HelloWorldPanel extends JPanel{
public void paint(Graphics g){
Dimension dm = getSize(null);
g.setColor(Color.white);
g.fillRect(0,0,dm.width,dm.height);
int xpos = (int)(dm.width * 0.1);
int ypos = (int)(dm.height * 0.5);
g.setColor(Color.blue);
g.drawString(message, xpos, ypos);
}
}
}
いじょ。
200?
201 :
デフォルトの名無しさん :01/11/03 21:00
>>196 とにかくFrameにHelloを表示させるだけなら以下でOK。
ソースファイル名:WHello.java
javac WHello.javaでコンパイル、java WHelloで実行。
ただしほんとにHelloを表示するだけで、応用は全く利かない(爆
実際にはFrameクラスを継承して新たなクラスを作り、その中で
paintメソッドを実装するとか、実用的なグラフィカルプログラムを
作るには面倒臭い手続きが沢山必要で、大変です(まあそれでも
VC++なんかよりは楽かも)。
あ、それから、このプログラムは自動終了せず、コンソールから
ctrl-Cとかで強制終了しなければいけないので注意。
import java.awt.*;
class WHello
{
public static void main(String[] args)
{
Frame frame = new Frame();
frame.setSize(400,400);
frame.setTitle("hoge");
frame.setVisible(true);
frame.getGraphics().drawString("Hello world!",50,50);
}
}
Servletについて、ちょっと教えてください。 予め用意してあるファイル(HTML)を元に、 HTMLを出力しようと思い、以下のように作成しました。 (ファイル(HTML)は、EUCコードで作成しており、 METAは"SHIFT_JIS"で設定しています) list <- 対象ファイル情報を格納したArrayList response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); for ( int i = 0 ; i < list.size() ; i ++ ) { String str = (String)list.get(i); // @ String uni = new String(str.getBytes("8859_1"), "JISAutoDetec t"); // A String sjis = new String(str.getBytes("SJIS"), "EUC_JP"); // B out.println( "uni : " + uni ); out.println( "sjis : " + sjis ); } Aを出力してみると、文字化け(EUCコードになっている)しているものもあれば、ちゃんと表示されているもの(SJISコードになっている)もあればで、いろんな文字コードが混在してしまいます。 (尚、@の情報をファイルに出力したところ、ちゃんとEUCコードで出力されました。) EUC -> UNICODE EUC -> SJIS -> UNICODE のように出力してみたり、いろいろやってみたのですが、ダメでした。(;_;) どなたか対処方法など、ご存知の方がいらっしゃいましたら、御教授ください。 お願いします(\.\) 環境 ・RedHat ・ApacheJserv ・jdk1.2.2 ・JSDK2.0
203 :
デフォルトの名無しさん :01/11/03 21:53
>>202 servletというより、javaのStringに関することだけど、
Stringの内部では、文字はunicodeで保持されている。もとが何でもね。
で、出力も単にSystem.out.printとかすると、デフォルトのコードに
変換されて出力される。だから、EUCがデフォルトの環境で、ファイルに
出力するとEUCになっている。だからといって、Stringの保持するchar
がEUCということではない。
で、(1)でやっていることは、EUCの環境で、list.get(i)で返る文字列
をEUCとして、Stringにしている。このときStringの保持しているchar
はunicode。
で、(2)がやっていることは、unicodeであるStringを8859_1として
バイト配列にしている。このとき、charに入っている2バイト
のうち、1バイト分しか使われない。で、そうして取り出したバイト配列
を、それが日本語を表す文字コードだとして(実はすでに壊れている)、
Stringにしている。これがどんな文字コードだと解釈されているかは不明
だけれど、いずれにしてもデタラメな内容になっているはず。
で、(3)でやっていることは、文字列からsjis形式でバイト配列を取り出し
それをあたかもEUCであるかのように装ってStringにしている。これも
デタラメな結果になる。
やりたいことは分らないけど、現状では、Stringとしてデタラメなので、
意図どおりになっていないと思うよ。
203さん。御教授有難うございます!!。 行ないたい事は、読み込んだファイル情報(HTML)を出力したいだけなのですが・・・ 自分の勘違いかもしれませんが、ソース内に記述した文字列を何も変換せずそのまま出力(response)すると、問題なく表示されますが、これは記述した文字列が"Unicode"になり、それを出力しているということですよね。 (response.setContentType("text/html;charset=?")で指定した文字コードにして) とした場合、203さんに教えていただいたlist.get(i)で取得したString(Unicode)を出力すれば問題なく表示されると思ったのですが、こちらも試したところうまくいきません。(Unicodeのまま、出力される!?) どうか、ご教授の程宜しくお願いします。
>>202 InputStreamReader, OutputStreamWriter あたりを使いなよ
>>204 漏れはWindows環境なんで、sjisのファイルを読み込んで、出力を
euc-jpに指定するけど、問題なくできるよ。
list.get(i)の文字列がきちんとしているのに、うまく出力でない
なら、205が言うように、responseのOutputStreamを取得して、
それをOutputStreamWriterでエンコーディングを指定して、
PrintWriterを作って利用すればいいのでは?
ところで、203で書いたことの内、
>2)がやっていることは、unicodeであるStringを8859_1として
>バイト配列にしている。このとき、charに入っている2バイト
>のうち、1バイト分しか使われない。
というのは間違った表現だった。1バイト分しか使われない、というより
8859_1に変換できなcharは、1バイトの?に変わってしまう。まあ、いずれに
しても、文字列としてはデタラメになるという結果は一緒なんだけど。
以上、訂正。
207 :
デフォルトの名無しさん :01/11/04 04:48
>>191 うーん、そうですか。
こちらで実行すると-1が返っちゃいます。
サーバの問題なのかなぁ?
>>195 ごめんなさい、
>じぜんにサイズがわからない場合は接続の切断で、
>データの終了ということでもいいです。
上記、実はどういう意味なのかさっぱりですが、
結果的にサーバ次第とうことですよね?
>結果的にサーバ次第とうことですよね? 結果的にサーバ次第ということですよね?
209 :
デフォルトの名無しさん :01/11/04 07:38
厨ですが。 JDKの標準クラスを拡張利用する時にベンリな クラスのメンバやメソッドの解説がついてる リファレンスってあります?本じゃなくて オンラインリファレンスかソフトになってるようなもので、 検索もできるとありがたいんですけど・・・ かなりワガママですんまそり。
210 :
デフォルトの名無しさん :01/11/04 07:48
>>210 ありがとうございます!
3で配ってたんですね。
212 :
名無し~3.EXE :01/11/04 08:19
誘導されました。マルチポストになっちゃいますが
JAVAで動作する単独プログラム作りたいんだけどどうやって作るんですか?
とりあえず、「Hello World!」と Flame に表示するソフトを作る方法がわかれば
応用するんだけど。
ファイルローグ
http://www.filerogue.net/ とかみて、こんなのもあるんだ! と思ってね。Netscape も Java なんでしたっけ?
213 :
デフォルトの名無しさん :01/11/04 09:10
214 :
名無し~3.EXE :01/11/04 09:28
>>199 >>201 >>213 どれも javac を通して、 java で実行してみました。
で単独プログラムにするにはどうすればいいのか教えてください。
>>212 「単独プログラム」って何よ .exe ?
>>216 ごめんなさい exe じゃなくても、配布できる形態でかまいません。
exe が作れるなら理想ですけど、 ・数ファイルを提供することで実行できる とか ・インストーラによりさまざまなファイルもインストールさせなきゃならない とかワカラナイのでそのへんも教えて欲しい。(JDK がない状態のPCへの提供です。)
>JDK がない状態のPCへの提供 ・Microsoftのjview(wjview)を当てにして、JDK1.1のコーディングを貫く → XP以降は無理 ・JREを同梱する(+約8MB) → 業務ならコレでいいんじゃない?
VisualJ++はJavaソースをExe形式にコンパイルすることができるよ
>>219 ありがとうございます。 JRE について調べに逝ってきます。
JRE を同梱すれば WHello.class や Kotae73.class で動作するんですか?
Netscape は exe だし、FileRouge は jar なんですね。
>>220 VisualJ++なら exe が作れるんだぁ。持ってないけど・・・
javaをやると頭がわるくなるとはほんとうですかl?
>>225 この方法で jar を作って、 jar をダブルクリックするだけで実行する方法を確認できました。
あとはインストーラーの作成方法を調べないと
プログラミングをやり始めたのですが、 実行ができないので対処方法を教えてください。 C:\>java samples1 Exception in thread "main" java.lang.NoClassDefFoundError: samples1
>>227 ソースは?
class は頭大文字じゃないきゃならないです。 Samples1
これがソースです。 コンパイルは通ったのですが・・・ class Samples1 { public static void main(String args[]) { System.out.println("ようこそJavaへ!"); } }
>>229 ソースは問題ありません。
java Samples1
と頭大文字で実行できるでしょう。
>>212 回答ありがとうございます。
大文字にしても動かないようです。
Win98でJava(TM) 2 SDK, Standard Edition Version 1.3.1
をインストールして、DOSプロンプトで実行しています。
動かすためには他に何かインストールする必要があるのでしょうか
C:\>javac Samples1.java
C:\>java Samples1
Exception in thread "main" java.lang.NoClassDefFoundError: Samples1
232 :
デフォルトの名無しさん :01/11/04 13:41
コンパイルしてクラスファイルがどこに出来てます? 名前とかも大丈夫?
>>212 ソースの場所は C:\Samples1.java
作成したクラスの場所は C:\Samples1.class
>>232 そちらもいじって見ます。インストーラで配布するパターンと、Webからインストールさせるパターン
と(StarOffice だかではそうしてましたね)の両方わかっていれば用途に応じて使い分けられると
思います。
>>234 なんで C:\ でやってんのかわからんが
Samples1.class ってちゃんとある?dir
Samples1.class で出てくるよね?
>>235 うっ dir の次に改行入ってる
dir Samples1.class で出てくるよね?
>>212 dirでは見えます。
C:\でやっているのは、たまたまです。
SAMPLE~1 CLA 430 01-11-04 13:32 Samples1.class
SAMPLE~1 JAV 106 01-11-03 16:08 Samples1.java
>>237 それはCLASSPATHの問題。
余りにも典型的なFAQで、Javaをはじめた人の大半が一度は経験する
疑問なので、自分で調べてみて。簡単に解決できるはず。
逆に言えばこんな初歩的な事すら自分で解決できないのであれば
プログラマには向いてないとすら言える。
例えるならば「買ってきた電子レンジが動かない!」と騒ぎ立てて
実は「コンセントが抜けていたのが原因だった」のと同じレベルだよ。
それぐらい初歩的。どんなJavaの入門書にも載ってるはず。
240 :
デフォルトの名無しさん :01/11/04 14:22
>>239 > JDKのバージョンの問題でした。
1.3.1 を使ってるんじゃなかったのか?
>>231
1.3.1をインストールをしてAutoexecも変更したのですが、 「SET CLASSPATH=」を入力しないとエラーメッセージが出ていました。 C:\>set @ECHO OFF REM C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCANPM.EXE C:\ /boot REM @IF ERRORLEVEL 1 PAUSE SET CLASSPATH=c:\Program Files\PD2\AdobeConnectables loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys SET PATH=%PATH%;C:\PROGRA~1\BORLAND\CBUILD~1\BIN SET PATH=%PATH%;C:\PROGRA~1\BORLAND\CBUILD~1\PROJECTS\BPL SET PATH=.;C:\jdk1.3.1_01\BIN;%PATH% C:\essolo.com
242 :
デフォルトの名無しさん :01/11/04 14:38
>>241 うちの 1.3.1 は CLASSPATH セットしてないです。はい
>>241 setコマンドの表示結果で
SET CLASSPATH=c:\Program Files\PD2\AdobeConnectables
と表示されるのはオカシイ
つうか、autoexec.batか。
245 :
デフォルトの名無しさん :01/11/04 15:56
>>244 ほんとだ set コマンドで @ECHO OFF なんてでねーよな
246 :
名無しの学生さん(♀) :01/11/04 18:26
すいません、教えてください!!!!!
247 :
名無しの学生さん(♀) :01/11/04 18:28
うまくコンパイルできないんです!!教えてください!! import java.awt.*; import java.awt.event.*; import javax.swing.*; class Kadai5b extends JPanel { CustomGraphics area; ButtonPanel bp; ComboPanel cp; Kadai5b(){ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); area = new CustomGraphics(this); bp = new ButtonPanel(); cp = new ComboPanel(); add(area); add(bp); add(cp); } public static void main(String args[]){ JFrame f = new JFrame("Draw Editor"); Kadai5b example = new Kadai5b(); f.getContentPane().add(example, BorderLayout.CENTER); f.pack(); f.setVisible(true); }
249 :
名無しの学生さん(♀) :01/11/04 18:29
class CustomGraphics extends JPanel{ int x1, y1, x2, y2; Kadai5b top; CustomGraphics(Kadai5b t){ top = t; setBackground (Color.white); setMinimumSize (new Dimension(500, 500)); setPreferredSize(new Dimension(500, 500)); addMouseListener(new MyMouse()); addMouseMotionListener(new MyMouse()); } public void paintComponent(Graphics g){ super.paintComponent(g); int xx, yy, xsize, ysize; if (x1 < x2 ) { xx = x1; xsize = x2 - x1; } else { xx = x2; xsize = x1 - x2; } if (y1 < y2) { yy = y1; ysize = y2 - y1; } else { yy = y2; ysize = y1 - y2; } if (top.bp.type == 'r'){ g.setColor(top.cp.fillColor); g.fillRect(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawRect(xx, yy, xsize, ysize); } else if (top.bp.type == 'o'){ g.setColor(top.cp.fillColor); g.fillOval(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawOval(xx, yy, xsize, ysize); } else if (top.bp.type == 'l'){ g.setColor(top.cp.drawColor); g.drawLine(x1, y1, x2, y2); } } }
250 :
名無しの学生さん(♀) :01/11/04 18:30
class MyMouse extends MouseAdapter{ public void mousePressed(MouseEvent e){ x1 = e.getX(); y1 = e.getY(); } public void mouseDragged(MouseEvent e){ x2 = e.getX(); y2 = e.getY(); repaint(); } public void mouseMoved (MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseClicked (MouseEvent e){ } public void mouseEntered (MouseEvent e){ } public void mouseExited (MouseEvent e){ } } class ButtonPanel extends JPanel{ JButton lineB, rectB, ovalB; int type = 'r'; InListener listener; ButtonPanel(){ rectB = new JButton("四角"); ovalB = new JButton("楕円"); lineB = new JButton("直線"); listener = new InListener(); rectB.addActionListener(listener); ovalB.addActionListener(listener); lineB.addActionListener(listener); add(rectB); add(ovalB); add(lineB); } } class InListener implements ActionListener{ public void actionPerformed(ActionEvent e) { if (e.getSource() == rectB) { type = 'r'; } else if (e.getSource() == ovalB) { type = 'o'; } else if (e.getSource() == lineB) { type = 'l'; } } }
251 :
名無しの学生さん(♀) :01/11/04 18:31
class ComboPanel extends JPanel{ int drawInit = 1, fillInit = 0; JLabel drawL, fillL; JComboBox drawC, fillC; JPanel drawP, fillP; InListener1 listener1; Color[] name = {Color.white, Color.black, Color.red, Color.yellow, Color.green, Color.blue}; Color drawColor = name[drawInit], fillColor = name[fillInit]; ComboPanel(){ String[] list = {"なし","黒","赤","黄","緑","青"}; drawL = new JLabel("線の色 "); drawC = new JComboBox(list); drawC.setSelectedIndex(drawInit); drawC.addActionListener(listener1); drawP = new JPanel(); drawP.setLayout(new GridLayout(2,1)); drawP.add(drawL); drawP.add(drawC); add(drawP); fillL = new JLabel("塗りつぶしの色"); fillC = new JComboBox(list); fillC.setSelectedIndex(fillInit); fillC.addActionListener(listener1); fillP = new JPanel(); fillP.setLayout(new GridLayout(2,1)); fillP.add(fillL); fillP.add(fillC); add(fillP); } } class InListener1 implements ActionListener{ public void actionPerformed(ActionEvent e) { drawColor = name[drawC.getSelectedIndex()]; fillColor = name[fillC.getSelectedIndex()]; } } }
252 :
名無しの学生さん(♀) :01/11/04 18:32
コンパイルできません!!教えてください!!
255 :
デフォルトの名無しさん :01/11/04 18:51
ソース全体よりは、コンパイルした時のエラーを出した方がいいと思う。 まぁ氏ねといわれるのは、妥当。
256 :
デフォルトの名無しさん :01/11/04 18:52
257 :
名無しの学生さん(♂) :01/11/04 18:53
>>252 無修正のエロ画像を5つぐらい見つけてきたら教えてあげる。
258 :
名無しの学生さん(♀) :01/11/04 18:56
本当?>257
259 :
名無しの学生さん(♀) :01/11/04 18:56
自分のアソコをデジカメで撮影すればいいですか?
見たく無え(´Д`|||)
261 :
名無しの学生さん(♀) :01/11/04 18:59
sasyousuruna!!>259
262 :
名無しの学生さん(♀) :01/11/04 19:10
Kadai5aにKadai5bですか
Kadai5aについて
>>145-175 で詳細なレスがついたのだから
そのレスで解決したか解決してないかのレスを書かないと
ハンドル換えても誰も答えてくれないとおもわれ.sage
女を名乗って媚びてるんですか?
とりあえず、
>>251 のclass InListener1の手前、
「{」が、ひとつ余分なんじゃない?
// インデントされてないから、よくわかんないけど。
// あと、さくらたんのエロ画像もきぼんぬ。☆彡 ←メカゴノレゴ風ながれぼし
forte、jbuilder、visualcafeの中で1番良いのはどれですか?
import java.awt.*; import java.awt.event.*; import javax.swing.*; class Kadai5b extends JPanel { CustomGraphics area; ButtonPanel bp; ComboPanel cp; Kadai5b() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); area = new CustomGraphics(this); bp = new ButtonPanel(); cp = new ComboPanel(); add(area); add(bp); add(cp); } public static void main(String args[]) { JFrame f = new JFrame("Draw Editor"); Kadai5b example = new Kadai5b(); f.getContentPane().add(example, BorderLayout.CENTER); f.pack(); f.setVisible(true); } class CustomGraphics extends JPanel implements MouseMotionListener { int x1, y1, x2, y2; Kadai5b top; CustomGraphics(Kadai5b t) { top = t; setBackground (Color.white); setMinimumSize (new Dimension(500, 500)); setPreferredSize(new Dimension(500, 500)); addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); } }); addMouseMotionListener(this); }
public boolean isFocusTraversable() { return true; } public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e) { x2 = e.getX(); y2 = e.getY(); repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); int xx, yy, xsize, ysize; if (x1 < x2 ) { xx = x1; xsize = x2 - x1; } else { xx = x2; xsize = x1 - x2; } if (y1 < y2) { yy = y1; ysize = y2 - y1; } else { yy = y2; ysize = y1 - y2; } if (top.bp.type == 'r') { g.setColor(top.cp.fillColor); g.fillRect(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawRect(xx, yy, xsize, ysize); } else if (top.bp.type == 'o') { g.setColor(top.cp.fillColor); g.fillOval(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawOval(xx, yy, xsize, ysize); } else if (top.bp.type == 'l') { g.setColor(top.cp.drawColor); g.drawLine(x1, y1, x2, y2); } } }
class ButtonPanel extends JPanel implements ActionListener { JButton lineB, rectB, ovalB; int type = 'r'; ButtonPanel() { rectB = new JButton("四角"); ovalB = new JButton("楕円"); lineB = new JButton("直線"); rectB.addActionListener(this); ovalB.addActionListener(this); lineB.addActionListener(this); add(rectB); add(ovalB); add(lineB); } public void actionPerformed(ActionEvent e) { if (e.getSource() == rectB) { type = 'r'; } else if (e.getSource() == ovalB) { type = 'o'; } else if (e.getSource() == lineB) { type = 'l'; } } }
class ComboPanel extends JPanel implements ActionListener { int drawInit = 1, fillInit = 0; JLabel drawL, fillL; JComboBox drawC, fillC; JPanel drawP, fillP; Color[] name = {Color.white, Color.black, Color.red, Color.yellow, Color.green, Color.blue}; Color drawColor = name[drawInit], fillColor = name[fillInit]; ComboPanel() { String[] list = {"なし","黒","赤","黄","緑","青"}; drawL = new JLabel("線の色 "); drawC = new JComboBox(list); drawC.setSelectedIndex(drawInit); drawC.addActionListener(this); drawP = new JPanel(); drawP.setLayout(new GridLayout(2,1)); drawP.add(drawL); drawP.add(drawC); add(drawP); fillL = new JLabel("塗りつぶしの色"); fillC = new JComboBox(list); fillC.setSelectedIndex(fillInit); fillC.addActionListener(this); fillP = new JPanel(); fillP.setLayout(new GridLayout(2,1)); fillP.add(fillL); fillP.add(fillC); add(fillP); } public void actionPerformed(ActionEvent e) { drawColor = name[drawC.getSelectedIndex()]; fillColor = name[fillC.getSelectedIndex()]; } } }
ロリ顔な日本人の画像も欲しいゾ。
import java.awt.*; とした場合に、参考にしている本には、awt 以下のクラスをまとめてロードしたい場合は*を使う。 とあるのに、awt.event.*というのがありますが それはawt.*じゃなぜいけないのですか?
276 :
デフォルトの名無しさん :01/11/04 22:00
>>275 java.awt.*というのは、java.awtパッケージに属する全クラスという
意味。
java.awt.event.*というのは、java.awt.eventパッケージに属する
全クラスという意味。
java.awtとjava.awt.eventはまったく別のパッケージだから。
>>275 dir c:\windows\*
と
dir c:\windows\comand\*
と中身ちがうのと同じ
279 :
デフォルトの名無しさん :01/11/04 23:32
JTableで列名の行を表示しないようにできませんか?
280 :
デフォルトの名無しさん :01/11/04 23:42
>>279 JTableからJTableHeader取ってきて
setPreferredSizeでサイズをゼロにしても、できる事はできる。
もっと良い方法があるかもしれんが。
2通りも教えていただき感謝
DefaultTableModel model = new DefaultTableModel(1,2); JTable table = new JTable(model); Dimension d = table.getPreferredScrollableViewportSize(); d.setSize(0,0); table.getTableHeader().setPreferredSize(d); 何かSwingの遅さに磨きが掛かった(藁 Dimensionの取り方が適当なのがまずいのだろうか
284 :
デフォルトの名無しさん :01/11/05 01:03
>>283 >Dimension d = table.getPreferredScrollableViewportSize();
>d.setSize(0,0);
これ、何の意味があるの?
285 :
名無しの学生さん(♀) :01/11/05 01:33
import java.awt.*; import java.awt.event.*; import javax.swing.*; class Kadai5b extends JPanel { CustomGraphics area; ButtonPanel bp; ComboPanel cp; Kadai5b(){ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); area = new CustomGraphics(this); bp = new ButtonPanel(); cp = new ComboPanel(); add(area); add(bp); add(cp); } public static void main(String args[]){ JFrame f = new JFrame("Draw Editor"); Kadai5b example = new Kadai5b(); f.getContentPane().add(example, BorderLayout.CENTER); f.pack(); f.setVisible(true); }
286 :
名無しの学生さん(♀) :01/11/05 01:33
class CustomGraphics extends JPanel{ int x1, y1, x2, y2; Kadai5b top; CustomGraphics(Kadai5b t){ top = t; setBackground (Color.white); setMinimumSize (new Dimension(500, 500)); setPreferredSize(new Dimension(500, 500)); addMouseListener(new MyMouse()); addMouseMotionListener(new MyMouse1()); } public void paintComponent(Graphics g){ super.paintComponent(g); int xx, yy, xsize, ysize; if (x1 < x2 ) { xx = x1; xsize = x2 - x1; } else { xx = x2; xsize = x1 - x2; } if (y1 < y2) { yy = y1; ysize = y2 - y1; } else { yy = y2; ysize = y1 - y2; } if (top.bp.type == 'r'){ g.setColor(top.cp.fillColor); g.fillRect(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawRect(xx, yy, xsize, ysize); } else if (top.bp.type == 'o'){ g.setColor(top.cp.fillColor); g.fillOval(xx, yy, xsize, ysize); g.setColor(top.cp.drawColor); g.drawOval(xx, yy, xsize, ysize); } else if (top.bp.type == 'l'){ g.setColor(top.cp.drawColor); g.drawLine(x1, y1, x2, y2); } } class MyMouse extends MouseAdapter{ public void mousePressed(MouseEvent e){ x1 = e.getX(); y1 = e.getY(); repaint(); } public void mouseDragged(MouseEvent e){ x2 = e.getX(); y2 = e.getY(); repaint(); } }
287 :
名無しの学生さん(♀) :01/11/05 01:34
class MyMouse1 extends MouseMotionAdapter{ public void mouseMoved (MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseClicked (MouseEvent e){ } public void mouseEntered (MouseEvent e){ } public void mouseExited (MouseEvent e){ } } } class ButtonPanel extends JPanel{ JButton lineB, rectB, ovalB; int type = 'r'; InListener listener; ButtonPanel(){ rectB = new JButton("四角"); ovalB = new JButton("楕円"); lineB = new JButton("直線"); listener = new InListener(); rectB.addActionListener(listener); ovalB.addActionListener(listener); lineB.addActionListener(listener); add(rectB); add(ovalB); add(lineB); } class InListener implements ActionListener{ public void actionPerformed(ActionEvent e) { if (e.getSource() == rectB) { type = 'r'; } else if (e.getSource() == ovalB) { type = 'o'; } else if (e.getSource() == lineB) { type = 'l'; } } } }
288 :
名無しの学生さん(♀) :01/11/05 01:34
class ComboPanel extends JPanel{ int drawInit = 1, fillInit = 0; JLabel drawL, fillL; JComboBox drawC, fillC; JPanel drawP, fillP; InListener1 listener1; Color[] name = {Color.white, Color.black, Color.red, Color.yellow, Color.green, Color.blue}; Color drawColor = name[drawInit], fillColor = name[fillInit]; ComboPanel(){ String[] list = {"なし","黒","赤","黄","緑","青"}; drawL = new JLabel("線の色 "); drawC = new JComboBox(list); drawC.setSelectedIndex(drawInit); drawC.addActionListener(listener1); drawP = new JPanel(); drawP.setLayout(new GridLayout(2,1)); drawP.add(drawL); drawP.add(drawC); add(drawP); fillL = new JLabel("塗りつぶしの色"); fillC = new JComboBox(list); fillC.setSelectedIndex(fillInit); fillC.addActionListener(listener1); fillP = new JPanel(); fillP.setLayout(new GridLayout(2,1)); fillP.add(fillL); fillP.add(fillC); add(fillP); } class InListener1 implements ActionListener{ public void actionPerformed(ActionEvent e) { drawColor = name[drawC.getSelectedIndex()]; fillColor = name[fillC.getSelectedIndex()]; } } } }
289 :
名無しの学生さん(♀) :01/11/05 01:35
なんでコンパイルできないんですか????
290 :
名無しの学生さん(♀) :01/11/05 01:36
間違えた。コンパイルできるけど、なんで画面が真っ白なんですか???ボタンが配置されてないみたい。
>>289 エラーが出てるでしょ。
まずそれを見て、その意味がわからないならそれを質問しなよ。
なんでソースを全部載せるわけ?
非常識な事は止めてくれよ。
>非常識な事は止めてくれよ。 私が言いたいのは特殊な現実の中にあっては −−というのはもちろんこの馬鹿げた2chのことだ−− 非常識は逆説的常識として容認されてしかるべきではないか、 ということである。
>>290 調べ方を教えてやる。
まず、余計な処理を全て削除しろ。
で、画面表示だけのプログラムを最小限の規模で作れ。
それに成功したら、新たに処理を足していけ。
やむを得ず質問する場合は、ポイントを絞れ。
それすらも出来ないなら氏ね。
294 :
名無しの学生さん(♀) :01/11/05 01:52
めんどくせ〜 >293
じゃあ市んでね。
なんだ? 新手のあらしか?
名無しの学生さん(♀)は、これ以上コピペを続けるとアクセス規制の対象になりますよ。
299 :
デフォルトの名無しさん :01/11/05 08:44
>>220 JBuilder ではできないんでしょうか?
>>298 なりません。
適当なことを言わないように。
>>300 「荒しの定義は明確にされていない」のでならないとは言い切れませんね。ならない理由があるのでしょうか?
>>301 なるとも言い切れないし、これまでの規制例を見ても、到底規制の対象に
なるとは考えられませんけど。
304 :
デフォルトの名無しさん :01/11/05 10:17
>くれぐれもコピー&ペーストを執拗に繰り返したり、 繰り返してるよな。 >同内容の繰り返しを執拗に張りつけたり、 張りつけてるよな。 >可読性を損なうことを目的に書き込みを繰り返したりしないように注意してください そこなってるよな。 マジでアクセス規制して欲しい。
>>304 全ての項目について、あなたが判断することでもないし、
あなたがどういう願望を持とうと、管理側の知ったこっちゃありませんね。
なお、「アクセス規制要望」も管理側は受け付けていません。
>>305 あなたが「ならない」と言い切ったから、それを追求したいのであって、なるかならないかは別の話
あなたが
>>300 で「なりません」と言ったのはどうして?
>>298 に「適当なことを言わないように」と言ったのはどうして?
>>306 とりあえず削除依頼も出てる事だし、ほっとこうよ。
なりますと断言している人がいたので反論したまで。
>>あなたが
>>300 で「なりません」と言ったのはどうして?
これまでの規制例を見て、ならないと私が判断しました。
>
>>298 に「適当なことを言わないように」と言ったのはどうして?
規制する側でもない人が勝手に判断を下して恫喝していたので。
>>307 まぁ、それが正しい態度だろうね。
多分削除されないと思うけど。
>>308 まぁ、こういうケースがアクセス規制になった前例は無いわな。
とは言え、ならないとは限らないだろうけど
少なくとも迷惑してる人がいるんだしね。
まぁ、「アクセス規制になります。」って言い切るのは言い過ぎだろうけど
つまんない言い合いはやめようよ。
>>308 > これまでの規制例を見て、ならないと私が判断しました。
>>305 に書いてあるけど「あなたが判断することでもない」
>>310 っていうか前例が5件しかないよね(w
基地外ネカマ下げ
315 :
デフォルトの名無しさん :01/11/05 13:00
C:\UNIX\USR\LOCAL\JAVA\BIN\JAVA.EXE: *** couldn't commit memory for cygwin heap, WIN32 error 8 なにこのエラー? もうちょいメモリのことを考えろってこと?
317 :
名無しの学生さん(♀) :01/11/05 15:41
MouseMotionAdapterとMouseAdapterと一緒に使えないのか?
202:猫です。 皆さん。いろいろ御教授頂き有難うございます。 ですが、まだ問題解決出来ていない状況です。(@.@;) 教えていただいた内容を元に以下のような事をTryしてしました。 ●前提/行ないたい事 ・あるファイル(HTML)を読み込み、ブラウザに出力。 (あるファイルとは、EUCで記述されているHTMLファイル[METAはShift_JIS]) ・環境 -RedHat -JDK1.2.2 -ApacheJServ ●前処理 ・EUCで記述されているファイルを読み込み/配列格納。 ●出力処理 ・PrintWriter out = response.getWriter();記述部分を以下のように修正 ->PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "SJIS")); (これを行なった結果、何も出力されなくなってしまった。(真っ白)->元に戻す) ・読み込んだ配列情報を出力する際、Unicode変換して出力。 ●いろいろ行なってみて分かった事 ・格納した配列情報を出力した結果、全ての文字が文字化けするわけではなく、 ある特定!?の文字が化けている様子。 (文字化け対象文字:"北海道"、"青森"、全角空白等) ・文字化けは、EUCにて出力されている。(?ではない) もう、この問題だけで丸5日ぐらい悩んでいる・・・ すみませんが、またまたご教授の程宜しくお願いします。
>>207-208 なんか間があいたが・・・
実質的にはそういうこと。
事前にデータサイズがわからないというのは動的にデータを作る際に
一度出力データをバッファに溜め込まなければならず、非効率的。
よって、切断をもってデータの終了を通知する。CGIなどで、よく使う方法。
ちなみに、HTTPの仕様書読めってば。
RFC 2616
で、検索すればごろごろでてくるだろ。
320 :
デフォルトの名無しさん :01/11/05 17:28
>>318 役に立つかどうかわからんけど、エンコーディングをeuc-jpで出力すると
どうなってるの? その部分だけ変更して確認してみたら。
321 :
名無しの学生さん(♀) :01/11/05 17:34
教えてくれ〜〜〜〜〜〜〜〜たのむ
322 :
デフォルトの名無しさん :01/11/05 17:48
コンパイルはできるんですが、ブラウザで見ると 表示されません。 どなたか教えてください。よろしくお願いします。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Test extends Applet{ public void init(){ setLayout(null); //自動配置しない TextArea ta = new TextArea(15,5); //15行 5列 ta.setEditable(true); //編集可能 ta.setLocation(10,50); add(ta); for(int i=0 ; i<10 ; i++){ ta.append(i+"\n"); } } }
皆さん、いつも教えてくれてありがとうございます。 public static void main(String args[]) と書いてある本と public static void main(String[]args) と書いてあるものがあります。 初心者なので、疑問をもつより暗記していますが、どちらが よいのでしょうか・・ 両方とも、コンパイルでき結果も同じになりました。
325 :
デフォルトの名無しさん :01/11/05 18:45
>>322 >setLayout(null); //自動配置しない
の行をコメントアウトする。
>>323 どちらも正しい表記。javaらしいのはString[]の方かも。
>>323 意味するものは両方同じだど、
Javaのコードでは String[] argsの方が一般的。
String args[]などの書き方は滅多に見ないよ。
>>324 どうもありがとうございました。
ここで引っかかって先に進めなかったので助かりました。
>>325 好きなところに配置したかったのですが、質問の主旨が
曖昧でした。スマソ。
>>318 >●前処理
>・EUCで記述されているファイルを読み込み/配列格納。
どう読み込んでんのさ
InputStreamReader 使ってる?
330 :
デフォルトの名無しさん :01/11/06 00:42
Stringクラスを使用してのプログラムを作成したいんですが、ソースを載せるので 色々とご教授下さい。 publid class xx{ public static void main(String args[]){ String str = new String(); str = "dragstar"; if(str.indexOf('0') > = 0){ System.out.println("ok"); }else{ System.out.println("bad"); } } } これをもとに、最初のaの部分と、後の部分に文字列を分けて出力するようにしたいのですが どうしたら、いいんでしょうか?結果としては ok dr gster と表示させたいです。
>>330 System.out.println(str.replace('a','\n'));
ご苦労さん。道は長いよ。
332 :
マウスさん :01/11/06 00:55
Javaって将来性あるんですか?
>>332 COBOL、Perl、Rubyよりはな。
334 :
デフォルトの名無しさん :01/11/06 01:10
>>330 > publid class xx{ <==publicとする。また、xxはXxと最初の文字を大文字に。
> public static void main(String args[]){
> String str = new String(); <==new String()は無意味。
> str = "dragstar";
> if(str.indexOf('0') > = 0){ <==strの中に'0'はないので、実行されない。
> System.out.println("ok");
> }else{
> System.out.println("bad"); <==strの中に'0'はないので、こちらが実行される。
> }
> }
> }
>これをもとに、最初のaの部分と、後の部分に文字列を分けて出力するようにしたいのですが
>どうしたら、いいんでしょうか?結果としては
>ok
>dr
>gster <== starをsterにするには、置き換えが必要。
>と表示させたいです。
335 :
デフォルトの名無しさん :01/11/06 01:12
>>331 どうもありがとうございます。
他のやり方もあれば知りたいので、他にもあればご教授下さい。
336 :
デフォルトの名無しさん :01/11/06 01:14
>>334 すいませんif(str.indexOf('0') > = 0)
ではなくif(str.indexOf('a') > = 0)
でした。
エラーがでるとはどういう状況でしょう。 コンパイルしたらエラーがでるのですか? 実行したらエラーがでるのですか? どのようなエラーがでるのですか?
338 :
デフォルトの名無しさん :01/11/06 01:52
cannot resolve symbol というエラーがでたら、どうしたらよいですか?
>>101 へのレス。
皆もっと状況がわかるように書こうよ・・・
名無しの学生さん(♀)は糞だけど
>>338 「シンボルを解決できませんでした」
「シンボルを解釈処理できません」
変数名が違うか、そもそも必要な変数が宣言されていないとおもわれ
341 :
デフォルトの名無しさん :01/11/06 03:24
abstract class A {} class AB extends A {} class AC extends A {} で、 class C { void method(AB typeAB) { // ... } void method(AC typeAC) { // ... } } のとき、 C c = new C(); A[] arrayA = {new AB(), new AC()}; // 配列使ってるのはあんまり気にしないで。 ってしたとして、 for(int i=0;i<arrayA.length;i++) { c.method(arrayA[i]); } ってしたかったんだけど、これってarrayA(型はA)の実際のインスタンスの型(AB or AC)は見てくれないよねぇ? と言うことで、たぶんコンパイル時点ではじかれる気がするんだけど、こういうことをエレガントにやりたい場合ってどうするの? Cに、 void method(A typeA) { if(typeA instanceof AB) { method((AB)typeA); } else if(typeA instanceof AC) { method((AC)typeA); } } を追加なんてやんないよね? 誰か教えて〜。 あ、あと蛇足なんだけど、配列のlengthってフィールドはどこに記述されてんのかな。とか疑問に思ってみたり。
342 :
デフォルトの名無しさん :01/11/06 04:40
>>341 コレでも出来る。
場合によってはCのmethodの処理をAB,ACの中に記述したほうが幸せかもしれないけど。
-------------------------------------------
abstract class A {abstract void call(C c);}
class AB extends A {
void call(C c) {c.method(this);}
}
class AC extends A {
void call(C c) {c.method(this);}
}
class C {
void method(AB typeAB) {
System.out.println("method(AB)");
}
void method(AC typeAC) {
System.out.println("method(AC)");
}
public static void main(String[] args) {
A[] arrayA = {new AB(), new AC()};
C c = new C();
for (int i = 0; i < arrayA.length; i++) {
arrayA[i].call(c);
}
}
}
あ、勘違い。何でも無し。夕べ酒のみ過ぎたせいだ・・。
345 :
デフォルトの名無しさん :01/11/06 07:01
paintメソッドを作って、はじめからAppletに絵を表示したら、 それまでできたマウスのイベントが反応しなくなりました。 (マウスで絵を描くとか)。どうしたらいいですか?
>>346 processMouseEventメソッド内で、getIDでマウスイベント
を調べて何かする、という方法でいままでOKだったんですが・・。
どうしたらよいのでしょう?
>>348 エラーはでないんです。
ただ、appletが始まって、paintメソッドで書いた絵が表示されて
そこまではいいんですが、そのあと、paintメッソドを追加する
前までは反応していたマウスイベントに反応しなくなりました。
351 :
デフォルトの名無しさん :01/11/06 10:14
「反応しなくなった」ってのは? メッセージが来なくなったんだろうか? それともメッセージは来てるけど、 メッセージの処理で現れるはずの、 画面の変化が無くなったとか?
>>351 ごめんなさい。説明が悪かった。
最初は、単にマウス使って絵を描くappletでした。
その後、最初から何か描いてある上にマウスで絵を描こうと
思って、paintメソッドを追加しました。
そしたら、マウスで絵が描けなくなった次第です。
ご教授願います。
353 :
デフォルトの名無しさん :01/11/06 11:10
>>352 基本的に情報少なすぎ
なにがなんだかわからん。
ブラウザ詳細設定でJavaコンソールの使用をONにして
Javaコンソールになにかエラーが出てないかチェックしてみろ
自分で考えて意味が分からなかったら全部ここにコピペしてみ。
全部ではなく、トラブルを再現する最小限度のコードにしてくれ。
>>345 たん。
たぶんmouseイベントは拾えているけれど、
そのマウスで描かれるはずの絵が、
paint()メソッドによって上書きされるから表示されないんじゃない?
だから現在のアプレットには、
新たに追加したpaint()メソッドが描画する絵しか
表示されていないとみたけど、あってます?
357 :
デフォルトの名無しさん :01/11/06 13:45
質問なんですが、 ソースによって、コンパイル後にできる class ファイルが複数になることがあるのですが、 これはどうしてですか?extends すると必ずファイルが複数になると思いきや、ならない こともあるんですね。 でそれを突き止めようといろいろと実験してるんですが、同じソースなのに1つになるもの と複数になる物がある。ファイルを比較して確認しました。 | ファイルを比較しています : MyApp3.java と MyApp23.java | ****** MyApp3.java | | public class MyApp3 | { | ****** MyApp23.java | | public class MyApp23 | {
>>357 実は前にコンパイルしたやつが残ってるだけとか
359 :
デフォルトの名無しさん :01/11/06 14:11
>>358 おぉ〜 どちらも複数の class ファイルを生成するんだけど、先にコンパイルしたほうが複数
つくるので、次のファイルをコンパイルしたときには、同名のファイルがあるので増えないだけ
だった。
>>356 345たん。
paint()メソッドの中を書きかえれば、いいんじゃない?
そもそもpaint()追加まえに、
どうやってマウスで絵をかいていたか、わかんないから、
どうしたらいいのかは答えようがないけど。がんばってね。
>>357 >>359 たん。
もう、おちゃめさん。☆⌒(*^-°)
361 :
デフォルトの名無しさん :01/11/06 15:49
ウィンドウを開いて、クリックしたところに80ポイントの●を書くプログラム を作ってみたんですが、ウィンドウをクリックしても反応しないことがありま す。これはなぜなんですか? import java.awt.*; import java.awt.event.*; class MyFrame extends Frame { public MyFrame() { addWindowListener(new MyWindowAdapter()); addMouseListener(new MyMouseAdapter()); } class MyWindowAdapter extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } class MyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent e) { /////////////////////////////////////////////// int x,y; //int o = 150; int o = 80; x = e.getX(); y = e.getY(); Graphics g = getGraphics(); //g.fillOval(x-x/4,y-y/4,x/2,y/2); //g.fillOval(x-40,y-40,80,80); g.fillOval(x-o/2,y-o/2,o,o); /////////////////////////////////////////////// } } } public class MyApp4 { public static void main(String[] args) { MyFrame f = new MyFrame(); f.setSize(300,200); f.setVisible(true); } }
362 :
デフォルトの名無しさん :01/11/06 15:50
全角スペースじゃないとだめなんですね。
>>361 クリックしてる瞬間にマウスを動かしてるから。
クリックっつうのはマウスを動かさずにやるもの。
動かせばドラッグ。
364 :
デフォルトの名無しさん :01/11/06 16:04
>>363 ありがとうございます。納得しました。
ってことはドラッグされても動作するように書く必要があるってことですね。
365 :
デフォルトの名無しさん :01/11/06 16:22
>>359 >>357 1ソースに複数クラス定義があればクラスの数だけclassファイルができる。
1ソースにpublicクラスは1つだけしか作れないがそれ以外なら複数含めることもできる。
気づきにくいのは内部クラスと無名クラス。
368 :
すぅぱぁ初心者 :01/11/06 20:28
あの、Javaのクラスって、 必ず TestClass test = new TestClass(); という具合にインスタンス化させなきゃダメなんですか? インスタンスを作らずに(データを持たずに)メソッドだけを持つ クラスってどうやってつくるのですか? 手元にある参考書は、みーんな、インスタンス化するようなクラスのサンプル しかのっていません。 知りたくて夜も眠れません………
>>368 糞して寝ろ。
public class Hoge{
private static String param;
public static String getParam(){return param;}
public static void setParam(String in){param=in;}
public satic void(String[] args){
Hoge.setParam("hoge");
System.out.println(Hoge.getParam());
}
}
>>365-
>>366 せっかく補足するのなら、本プログラムと別のプログラムファイルをコンパイルして出来た
サブ class ファイルが存在したままでいると本プログラムが変な挙動(別のプログラムの
挙動を引きずる)することがあるといった注意がほしいですね。
説明なんか変だけど
>>369 ありがとう。クソはもうしちゃったんで、セクースして寝ます。
ほんとうにありがとう。
>>368 寝られてよかったね。
おいらはセクースしたいよ…
373 :
デフォルトの名無しさん :01/11/07 00:20
あの、UNIXでは正常にコンパイルされきちんと動作するアプレットがあります。 この .javaファイルをWindowsに移行し、コンパイルをすると、 cannot resolve symbol というエラーがいくつもでてきてコンパイルできません。 どなたかご教授ください。
JavaからCで書いたルーチンを呼ぶにはどうやったらいいでしょうか? URLや検索キーワードでも結構ですのでご教授ください
>>373 外部参照しているクラスが見つからないんだってさ。
UNIXの環境に、例えばCLASSPATHとかで他のクラス
ファイルやjar、zipを見に行ってないかい?
>>374 JNI(Java Native Interface)で検索してみそ。
というかAPIドキュメントに解説が同梱されてるけど。
>>375 JNI関連で検索したところ希望していた情報があつまりました
どうもありがとうございました!
>>375 5個くらいの.classファイルからなるプログラムです。UNIXでは全部の.javaファイル
が同じディレクトリに入っていて、コンパイルもうまくいきました。
これら.javaファイルをWindowsにもってきたらコンパイルできなくなっちゃったん
ですが。。。
378 :
デフォルトの名無しさん :01/11/07 00:51
DOS窓で、>java xx abcabc と入力したら、aが何個含まれているか表示したいプログラムを作成 したいのですが、自分で作っているウチに訳がわからなくなてきました。 ご教授下さい。以下に記載します。 public class xx { public static void main(String args[]) { String str = new String(); str = args[0]; int beginIndex = str.indexOf('a'); int endIndex = str.length(); for(int beginIndex = 0;beginIndex <=10;beginIndex;i++) { str = str.substring(beginIndex+1,endIndex); if(str.indexOf('a') >=0) { System.out.println("aは"+ +"個含まれている"); } } } }
>>373 予想だけど、UNIX環境ではそのJavaファイル達のどれかが、
全然別のディレクトリにあるclassを参照してたんだと思うよ。
だからコンパイルできたんだと思うよ。
UNIXマシンの環境変数CLASSPATHを確認して、見つからないっ
て言われるクラスファイルを、パスとおってるところで探して
みそ。どこかにあるから。
>>342 なるほど…。
もっと勉強しなきゃなぁ…。どうもでした。
>>379 その見つからないって言われるclassは全部同ディレクトリにある他のjavaファイル
なんです。つまり、A.java, B.java, C.javaってあってA.javaをコンパイルしたら
B, Cがcannot resolve symbol といわれてしまうのです。
どうしたらいいんでしょう??
>>378 楽しようとしすぎ。
小ざかしいコード書こうとしすぎ。
一番どろくさい方法で書きなおしましょう。
>>381 じゃあ逆に、Win環境に変なCLASSPATH設定してるからだ。
javac -classpath . *.java
(カレントディレクトリをCLASSPATHに指定)でコンパイル
してごらん。
>>383 大変ありがとうございました。うまくいきました。
ところでそのWindowsのCLASSPATHをいじるにはどうしたらいいのですか?
Windowsの場合は、CLASSPATHの設定って AUTOEXEC.BAT に書いたりするんじゃなかったっけ。
386 :
System.out.println("名無しさん") :01/11/07 02:49
javaBeans っていうのは、ある規格に基づいて作られた 1.自分たちで再利用できるようなクラスまたはパッケージ 2.また、どっかの企業がいろいろなシステムに使えるように 有償で提供しているクラスまたはパッケージ EJBってのはそのサーバサイドバージョン でいいんですか? いま、Javaで開発の仕事してるんですが、 上司が一から書いてて、EJBらしきものまるで使ってないんですが、 これは正しい行為なんですか?
387 :
デフォルトの名無しさん :01/11/07 06:24
>>384 NT系かME系か、書け。
ME系なら、環境変数に制限があるから、気をつけれ
基本的には、コマンドプロンプト開いて、環境変数追加しれ
Autoexec.batとか、システムの環境変数はお勧めしない、
まぁ、好みだが
388 :
デフォルトの名無しさん :01/11/07 06:29
>>386 一から書けんなら頼もしいじゃん、
それより、足したスキルも無い口だけのお前が、
その上司バカにすんのやめとけ、な。
389 :
デフォルトの名無しさん :01/11/07 06:31
あのっすね、コンパイル速度に関してなんですけど、 クラスライブラリとかの、JARを全部解凍しておくと コンパイルかなり早くなったりします?
391 :
デフォルトの名無しさん :01/11/07 07:53
>>378 プログラミング初心者? 何やらわざわざ難しく考えているような気が…。
次のようにやったらいかんのか?
public class xx
{
public static void main(String args[])
{
int n=0;
if (args.length >0)
{
for(int i=0; i<args[0].length(); i++)
if(args[0].charAt(i)=='a') n++;
}
System.out.println("aは"+n+"個含まれている");
}
}
第1引数しか考えていないけど、それはいいのね?
そこで、問題。このプログラムを次の仕様に拡張しなさい。
各引数について、「第□引数にaは□個含まれている」と表示する。
ただし引数が一つもないときは「引数がありません」と表示する。
最後に「引数にaは全部で□個含まれている」と表示する。
ついでに亀亀だが、
>>361 =364にレス。
mouseClickedやmouseDraggedは空にしてmousePressedだけで
処理する方がいいと思う。
392 :
デフォルトの名無しさん :01/11/07 08:25
Javaで条件コンパイルしたいのですが、 if(DEBUG) { //DEBUGはfinal boolean 〜 } DEBUGはどこに定義したら一番よいでしょうか?
>>391 それちょっとはしょりすぎ。あとあと改造・改造とかするときに非常に困る作りだ。
今の自分のことしか考えない のではなく、後の自分や他人のことも考えて欲しい。
>>360 init()内でenableEvents(AWTEvent.MOUSE_EVENT_MASK)、processMouseEvent
メソッド内でgetIDでイベントを調べる、という方法でマウスで絵を描いてました。
ところがpaint()で始めから絵が描いてあるようにして、その上に落書きするという
のを試みたら、マウスで絵が描けなくなったのです。
paint()の中は下絵を描くメソッドを呼ぶ以外なにもないんですが、どう変えたら
いいんでしょう?
395 :
デフォルトの名無しさん :01/11/07 09:12
>>394 今までマウスで書いた点を配列とかに保持しておいてそれをpaint()中で書く。
396 :
デフォルトの名無しさん :01/11/07 09:24
ブラウザから画像ファイルをアップロードして、 それを画面の自由な位置に貼り付けたりして、 その情報をサーバー側に保存したりしたいのですが、 どんなクラスを使えばよいのでしょうか?
>>391 >後の自分や他人のことも考えて欲しい
掲示板で何の見返りも無く親切に指導して下さるアカの他人に、
そこまで甘えられてもなあ(w
391と393を間違えた。
言い忘れましたが、アプレットでの話です
400 :
名無し~3.EXE :01/11/07 09:39
>>397 変な初心者は製造しないほうがいい。 ってことで 393 の意見には賛成かも。
読みづらい、書き直しづらい ソースって困るのよ、すごく(わら
うわっ 393 につられて Win板のデフォルトハンドル使っていた
おやおや、自作自演ですか?
403 :
デフォルトの名無しさん :01/11/07 10:18
悲惨な400のいるスレ(藁
良く見ると文体まで同じだ
>>393 >>400 行間を空けたり、句読点の代わりにスペースを使ったり。アハハハ。
>>399 マウスで絵を書くのではなく
とりあえずは下絵の上にプログラム上から直接絵を書いてみなよ。
>>402 =
>>403 ジサクジエンが居るとそんなにうれしいかい?
ジサクジエンがどうであれ、意見に賛同できないなんてさぞ読みづらいソース書いてるんだな。
意見に賛同しないなんてどこにも書かれてないと思うがどうか。
406 :
デフォルトの名無しさん :01/11/07 11:08
>>396 > ブラウザから画像ファイルをアップロードして、
ブラウザを使って、パソコンからサーバーに画像ファイルをアップロードし
> それを画面の自由な位置に貼り付けたりして、
> その情報をサーバー側に保存したりしたいのですが、
サーバー側でサーバー上にファイルを保存し、ブラウザ上に表示する
> どんなクラスを使えばよいのでしょうか?
ために、なにを作りたいんですか? applet ? servlet ?
最近、丸投げの質問が多すぎだと思うゾ。
408 :
デフォルトの名無しさん :01/11/07 11:16
初心者な質問で申し訳ありませんが mainはほかのクラスの後に書くものですか? 一番頭に書くものですか? いろんなソースを読んでいるとどちらもあるようですけど。
>>406 appletで実現できるなら、appletでやりたいとかんがえています
410 :
デフォルトの名無しさん :01/11/07 11:30
>>409 applet は作ったことあるんですか?
411 :
デフォルトの名無しさん :01/11/07 11:34
あのぉ〜、Apacheのプロジェクトのoroってあるじゃないですか、 正規表現やってくれるやつ、で日本語対応についてなんすけど、 テストしてみた範囲(/[あ-ん]+/こんな感じで)では、 うまくいってるんですけど、英語アプリで日本語動かすとき、 よく駄目文字とかあるじゃないですか、あれと一緒で たまたまうまくいってたりして、ってのが不安だったりするんですけど、 どうなんでしょ、どなたか情報ないですか?
すんません、まだJava初めて二日目で、 とりあえず画面に文字を表示するアプレットを練習で作った程度です それで、いろいろ調べたら、とりあえず(既存の)クラスを 組み合わせて作れそう、という事がわかり、 C++はできるので、 どのクラスを使用する、というきっかけをあたえてもらえば、 あとは、自分でなんとか出来そうかな・・・と思い、 こんな質問をしたのです
413 :
デフォルトの名無しさん :01/11/07 11:41
414 :
デフォルトの名無しさん :01/11/07 11:45
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/
>>408 ほかのクラスじゃなくて、ほかのメソッドだよな?
∧η∧ < なら、前でも中でも後ろでも自由に書いてヨシ!
(,,・Д・) \_______________________
ミ__ノ
>>396 サーバ側にはどうやって保存するつもりだ?
CGIを使うのか? それともサーブレットを使うのか?
アプレットはサーバにアップした画像をブラウザに表示するために使うのか?
それともブラウザからサーバにファイルをアッブするのにも使いたいのか?
まずどのあたりが判らないか明確にしてから質問をしてくれ。
とりあえずJavaのクラスなら下にいろいろあるぞ。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html
>>414 public class Test{
public static void main(String[ args]){
hoge;
}
}
class myA extends A{
hogehoge;
}
としたときmyAというクラスと、mainクラスではないんですか?(って本に書いてあるんで)
どこに書いてもいいのはわかります。けど、どこに書くのが基本なんだろうかと思い質問しました。
>>415 あっインデントが消えた。
しかも行間があいた。きっと誰かに間違われる
>>417 mainクラスって、「mainのあるクラス」ってことだろう?
419 :
デフォルトの名無しさん :01/11/07 12:32
>>417 > 書式についての細かい約束事なら下へ逝ってよし
このサイトの「メソッド名と'('の間 スペース空ける 」とあるが、例は空いてないんですけど、
空けるんでしょうか?空けないんでしょうか?普通空けないような気がしますが。
420 :
デフォルトの名無しさん :01/11/07 12:41
421 :
デフォルトの名無しさん :01/11/07 12:48
422 :
デフォルトの名無しさん :01/11/07 13:08
>>420 >>419 メソッドじゃないが、
if ( switch ( for ( なんかはよく空けるべ、
なつんだ、こういう元々入ってる命令の総称
424 :
デフォルトの名無しさん :01/11/07 15:54
Swingを使ったアプレットを作りたいと思いまして、 htmlconverterをDLしてきたのですが、??なことがありまして 1 ちゃんとGUI起動する。変換も成功 2 GUI起動するもののプロンプト画面はエラーの嵐。 実行すると変換はエラーで不可になる。 3 エラーの嵐で起動できない エラーメッセージを見ると、awtがないとかそんなのばっかりです。 15回ぐらいやれば1回ぐらい1の状況になるので支障はないんですが、 もともとこういうものなのでしょうか? MEとJDK1.3,HTMLconverter1.3を使っています。 よろしければお教え下さい。
>>391 ありがとうございます。始めてJavaを始めて2週間ほどの初心者です。
難しく考えすぎですか・・・。問題は、今晩にでもやってみます。
ところで、
if(args.length > 0)
for(int i = 0;i<args[0].lenth();i++)
if(args[0].charAt(i) == 'a')
の説明が知りたいですが・・。
charAtはchar型の何かですか?
426 :
デフォルトの名無しさん :01/11/07 16:34
あのですね、Javaってクラスの名前結構長いじゃないですか、 でも、変数の名前付け、もっすごい省略してるでしょ、 それって、やっぱ長いとタイプ数増えて大変だからだと思うんだけど、 それって、オブジェクト指向的じゃ無いと思うんだよね、 だってさ、オブジェクト指向の最初の入り口の 人が、オブジェクトを認識するってとこが、しにくくなるでしょ、 どう思う?
charAt=Stringのメソッド
428 :
デフォルトの名無しさん :01/11/07 16:37
429 :
デフォルトの名無しさん :01/11/07 17:56
>>426 その文体読みづらいし面白くない。
オブジェクト指向云々以前の話だし。
int s; //入力行数
って書くくらいなら
int lineCount;
って書くな俺も。
タイプ量が増えるけど
変数の意味思い出すのに頭使うよりは楽だ。
さすがに日本語の変数名使うほどの度胸はないが。
最近Cのソースの変数名も長いよ俺は。
int s; は論外
430 :
デフォルトの名無しさん :01/11/07 18:24
開発環境で変数名の自動補完があれば 長くても全然苦じゃないしね デメリットってのは 自動補完が無い環境でタイプ量が増えるってぐらい?
431 :
デフォルトの名無しさん :01/11/07 18:46
>>429 高校の頃JAVAじゃないですが、変数で日本語を使わないがために、辞書を引きまくって英単語に強くなった。
おかげで英会話には強くなった。さすがコンパイラ(笑
英単語力→英会話力 これぐらい短絡ならおれも上達してるんだがなあ。。。
433 :
デフォルトの名無しさん :01/11/07 20:17
Windowsではちゃんと動くプログラムだけどUNIXに持ってくると Warning: Missing charsets in String to FontSet conversion Warning: Cannot convert string "-ricoh-hg gothic b-medium-r-normal--*-120-*-*-*-*-*-*, -morisawa-gothic medium bbb-medium-r-normal-sans-*-120-*-*-*-*-*-*, -*-gothic-medium-r-normal--*-120-*-*-*-*-*-*" to type FontSet Warning: Missing charsets in String to FontSet conversion とでてうまく動きません。原因がわかる人教えていただけませんか。
434 :
デフォルトの名無しさん :01/11/07 20:23
>>433 どんなプログラムで
UNIX はなにを使ってるんですか?ブラウザ?環境はなに?
>>433 で誰が Warning 出しているかわかる?
Netscape ですか?Netscape は日本語化パッチ当ててる?
なんか FontSet がいけないような気がするんですけどFontSetなんて 設定していないので… JavaのアプリケーションでFontSetしない場合 デフォルトがどうなっているのかよく分かりません。
437 :
デフォルトの名無しさん :01/11/07 20:38
Javaでサーバー作るってのはネタですよね
>>434 学校のUNIXなので詳しいことが分からなくて…
UNIXはSOLARISです。
Kterm上でJava ファイル名 と打って起動させようとするとWarning が
出ます。 プログラムはC言語用の学習総合環境のようなもので、
Runtime.exec() を使用して外部プログラムを呼び出しているのですが
それがUNIX上ではうまく動かないのです。
>>392 interfaceに定義してimplementsしました。
>>438 とりあえず、うまく動かないのではなく Warning が出てるだけでしょ?
Warnning でて止まっちゃうの?どう動かないの?
>>388 >それより、足したスキルも無い口だけのお前が、
>その上司バカにすんのやめとけ、な。
ああ、書き方悪かったか。
そういえばそうとも読める内容かも。
でもほんとにそんなつもりはなくとても尊敬しています。
そんだけ
>>429 あのさ、JDKのサンプルのソースとか、変数みんな短いでしょ、
StringTokenizer st , t ;
こんな感じで、何でか解る?
>>430 漏れも昔は頼ってたけど、人のマシンでソース書けなくなってる自分に気づいて、
辞めたよ
443 :
デフォルトの名無しさん :01/11/08 11:53
サンプルだからでしょ
>>442 JDKのソース読んだことある?
public abstract class ColorModel implements Transparency{
private long pData; // Placeholder for data for native functions
/**
* The total number of bits in the pixel.
*/
protected int pixel_bits;
int nBits[];
int transparency = Transparency.TRANSLUCENT;
boolean supportsAlpha = true;
boolean isAlphaPremultiplied = false;
int numComponents = -1;
int numColorComponents = -1;
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_sRGB);
int colorSpaceType = ColorSpace.TYPE_RGB;
int maxBits;
boolean is_sRGB = true;
>>443 ん〜、またピントずれなレスだなぁ〜、
まぁ、礼は言っとくよ、
「コピペ、ご苦労さん」
445 :
デフォルトの名無しさん :01/11/08 14:18
前にちょっと出てた、条件コンパイルの話なんだけど、 static final boolean DEBUG = true ; if ( DEBUG ) { int debugStatus ; } なんかの処理 if ( DEBUG ) { if ( debugStatus ) みたいにするとさ、debugStatusがローカル変数になっちゃて、 次のifdefで参照できないんだけど、まぁあたりまえっていえば、 あたりまえなんだけど、 こういうときは、変数外に出すしか方法ないのかしら?
446 :
デフォルトの名無しさん :01/11/08 15:59
アプレットで現在ゲームを作っているのですが、画像を表示させるときに 透過させたい場合(抜き色)はどうしたらいいんでしょう?
>>445 Javaではif文の中でint型はつかえんよ。
と軽く突っ込んでみる。
>>446 たん。
透明化gifをつかえばいいんじゃないかしら。
>>445 こんな感じにしたいわけぇ?
-----------------------------------------------
class Test {
private final static boolean DEBUG = true;
private static String message = "NORMAL";
static {
if (DEBUG) message = "DEBUG";
}
public static void main(String[] args) {
System.out.println(message);
}
}
450 :
デフォルトの名無しさん :01/11/08 19:16
class Search_result extends JFrame{ Search_result(String html){ super(" Web Page viewer "); JEditorPane jep = new JEditorPane(); jep.setEditable(false); jep.addHyperlinkListener(new LinkFollower(jep)); jep.setContentType("text/html"); jep.setText(html); JScrollPane sp = new JScrollPane(jep); getContentPane().add(sp); setBounds(300, 150, 700, 550); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); show(); } } 上のプログラムで引数として渡したhtmlドキュメントの文字列を ブラウザのように 表示したいのですが、うまくいきません。 どこがまちがっているのでしょうか?
451 :
デフォルトの名無しさん :01/11/08 21:14
>>449 ちょっと違うけど、参考になった、ありがと、
static
{
ところで、ここ、クラスがstatic宣言されてるときの
コンストラクターと思っていいのかしら?
}
453 :
デフォルトの名無しさん :01/11/08 22:23
特定の文字の数を文字列の中から抜き出して、いくつ入っているか 調べるプログラムを作成したいのですが、Stringクラスを使用して 作成しようと思います。Stringクラスの使い方を教えて下さい。
454 :
デフォルトの名無しさん :01/11/08 22:26
マニュアル読めやゴルァ!
455 :
デフォルトの名無しさん :01/11/08 23:12
>>450 >表示したいのですが、うまくいきません。
どううまくいかないのか説明しないと、誰も答えようがないよ。
コードは
>jep.addHyperlinkListener(new LinkFollower(jep));
の部分だけコメントアウトしてやれば、とりあえず表示はできる
ようだから、何に困っているのかも分らないし。
456 :
デフォルトの名無しさん :01/11/08 23:22
457 :
デフォルトの名無しさん :01/11/09 02:18
ボタン二つ(A,B)とお絵かきキャンバスがひとつあって、Aを押すと、 キャンバス上でクリックした点に小さい三角形が描かれ、 Bを押すと、キャンバス上でクリックした点に黒丸が描かれる、というアプリを 書こうとしているのですが、こういう場合、Aが押されたときとBが押されたときで mouseClickedの内容が違うんですけど、どうやって使い分けたらいいんですか? クラス二つ作って、それぞれにmouseClickedを作ったら、どういうふうに それらを呼び分けるんですか?誰か教えてください。お願いします。
>448 レスありがとうございます。 透過GIFということは、Jpgでは無理なのでしょうか?
459 :
デフォルトの名無しさん :01/11/09 02:58
>458 無理だと思われ。
自前でαブレンド
αブレンドしても中途半端に残るよ。
462 :
デフォルトの名無しさん :01/11/09 06:39
>>457 例えば、Zukeiというクラスを作り、それには、draw(Graphics, Point)
というメソッドがあるとする。これは、与えられたGraphicsの上のPoint
座標を基準に、自分自身を描画するというもの。
Zukeiの子クラスで、KuromaruとSankakuを作り、それぞれにdrawを実装
する。
mouseClickedは、クリックされた座標とGraphicsを与えてZukeiのdrawを
呼び出す。
ZukeiがKuromaruかSankakuかは、ボタンで設定する。
こんな感じでいいんちゃう?後は自分で考えれ。
463 :
デフォルトの名無しさん :01/11/09 07:21
>>457 462さんが回答しているようですが、もう一つ別のレス。
やりたいことが今ひとつ分からないので困ってしまうのですが、
Button a; Button b; の2つがCanvasの上に乗っていて、
aかbのどちらかを「クリック」し、いわば描く図形の選択をして、
それから「もう一度」Canvas上をクリックして、その位置に選択した
図形を描くということですよね? Buttonをクリックしたその位置に
図形は書けないから(CanvasがButtonに隠されてしまっている訳だから)。
すると問題はそのButton A,Bを「クリック」したとき、どちらのButtonが
選択されたのかをどうやって認識したらいいのかということなのでしょうか?
クラスを二つ作ってそれぞれにListenerを作るという発想も分からない。
そのButtonやCanvasを乗せているオブジェクト(AppletかFrameかは知り
ませんが)、そこでListnerを実装するのが普通と思います。さてそこで、
Buttonのクリックを拾うのは、mouseClickedではなくactionPerformedです。
従ってimplementsするのも、ActionListnerです。actionPerformedから
ActionEventが渡されるので、そのgetSourceメソッドによりa,bどちらが
クリックされたかが分かります。これを覚えておいて、その後Canvas上で
クリックされたとき、これを今度こそmouseClickedで受け取り、getx,gety
メソッドにより位置を得て、そこに先に覚えて置いた図形を描く…、と
いった処理になるのではないでしょうか? ただしmouseClickedではなく、
mousePressedで処理する方がベターと思います。
もしかして全然見当違いの回答になったかな?
>>462 さん、
>>463 さん、ありがとうございます。
混乱してきたのですが、mouseClickedメソッドはZukeiクラス内に作って、
そのmouseClickedメソッドの中で、どっちのボタンが押されてるかを判断する
わけですよね?
で、例えばAが選択されていたら、Kuromaruのdrawを呼ぶ、というふうに
するんですか?KuromaruはZukeiの子クラスなんですよね?ということは
Zukeiのdrawメソッドなんですか?パニクってきました。
そこらへん、もう少し教えていただけないでしょうか。
>>464 >混乱してきたのですが、mouseClickedメソッドはZukeiクラス内に作って、
キャンバスがクリックされたら絵を描くわけだから、mouseClickedは
キャンバスにaddMouseListenerされたリスナが持つメソッド。Zukei
の中には作らない。
>そのmouseClickedメソッドの中で、どっちのボタンが押されてるかを判断する
>わけですよね?
ここでは「判断」はしない。判断なくていいように、Zukeiクラスの子クラスと
してSankaku,Kuromaruクラスを作る。
mouseClickedの中では、SankakuかKuromaruか、ではなく、Zukeiとして扱う。
その変数を例えば、zukeiとすれば、zukei.draw(パラメータが入る);で、その
時zukeiに代入さているZukei型のオブジェクト(これがSankakuかKuromaru)の
drawメソッドが実行される。
で、zukeiにZukei型のオブジェクト代入するのが、ボタンが押されたときにす
べきこと。
まあ、漏れに解説できるのはここまで。時間ないので。後はよろしく。
467 :
デフォルトの名無しさん :01/11/09 17:25
javaてクッキーツカエルノ?
アプレットを勉強しています。マウスで絵を描いたり できるようになったところです。ゲームは、アプリケーションを勉強 しないとできないと思っていたら、アプレットで十分できることを 知りました。そうすると違いは何なのでしょうか・・ アプレットはブラウザ上で・・というのは知っていますが・・・
469 :
今日は暇なJava厨 :01/11/09 18:09
>>467 HttpConnectonでクライアントとしてアクセスするほう?
Servletでサーバー作るほう?
つーかServletはクッキー対応ブラウザでないと逆にちっと面倒だが。
>>468 ブラウザのデフォルト設定ではセキュリティ制限がある。
ユーザー環境の情報をほぼ一切読み書きできない。
だからデータのセーブも通信経由でサーバー側にセーブするとかしないといけない。
470 :
デフォルトの名無しさん :01/11/09 19:14
>469 Servletです。
2枚の絵を交互にして、動きのあるアニメ(もどきですが・・)を作りましたが ブラウザで絵がちらつきます。 public void update(Graphics g){ update(g); を入れるといいとありますが、それでもなくなりません。 ちなみにアプレットヴューワーだとちらつきません。 教えてください。
Win32のネイティブコード吐けるコンパイラあったら教えてください。無料のやつ。
>473 アリガトウございます。
>473 まだWhat is Jikes?の始めのほうしか、読んでないですが、なんかjavaのバイトコード吐き出すようなこと書いてあるんですが、、、。 まあ、ちゃんと読んでみいます。
476 :
デフォルトの名無しさん :01/11/09 21:55
>>471 2枚の絵は同じサイズの画像かな? それなら、
public void update(Graphics g){ }
と、何もしないupdateを定義することで、消去の工程がなくなるから
ちらつかなくなるはず。先ほど描いた絵の上に、そのまま次の絵を描く
から。絵が、paintの中で、例えばdrawRectなどの命令で描いている
ものだと、ダブルバッファにしないとちらつく。
>>473 ほんと? Jikesのページには、その記述は見当たらなかったけど。
>>472 例えば、以前のVisualCafeには、ネイティブコードを吐く機能があった
けど、今のは知らない。高いしね。ただし、ネイティブコードといって
も、10MB程度のランタイムがないと動かない。JREと大差ない大きさだ
った。
あ、そうかも。jikes は better javac か。 GCJ は Win32 で上手く動かないみたいだしおそらくフリーのは無いかな。 今は JIT、Hotspot で速くしようというのが主流だしね。
480 :
デフォルトの名無しさん :01/11/09 22:48
>>466 >mouseClickedの中では、SankakuかKuromaruか、ではなく、Zukeiとして扱う。
>その変数を例えば、zukeiとすれば、zukei.draw(パラメータが入る);で、その
>時zukeiに代入さているZukei型のオブジェクト(これがSankakuかKuromaru)の
>drawメソッドが実行される。
ごめんなさい。よくわかりません。
zukeiというのはZukeiオブジェクトですよね?そこにZukei型オブジェクトを代入
するとはどういうことですか?
3つのクラス(Zukei, Sankaku, Kuromaru)がそれぞれ別のdrawメソッドを
持つんですか?
お願いします。教えてください。
SankakuとKuromaruはZukeiから派生されてるんでしょ? だからSankakuもKuromaruも Zukei型のオブジェクト変数に入れられるし Zukeiで宣言したdrawメソッドを使うこともできる。 ただ、実際に呼ばれるのはSankaku、Kuromaruでオーバーライドした drawメソッドだということ。 基本的な継承のお勉強をすれ。
>>482 ありがとうございました。よくわかりました。
そのオーバーライドしたそれぞれのdrawメソッド内で、それぞれの作業(丸書いたり
三角書いたり)するんですよね?ということは、それぞれのdrawメソッドは
パラメータとしてGraphicsと座標を受け取るんですよね?で、例えばそのdrawメソッド内で
g.drawLine(e.x, e.y, 10, 10)とかってしますよね?でも、キャンバスには何も
表示されません。これはどうしてなんですか?
あと、Zukeiのdrawメソッドは何をするんですか?
お願いします。教えてください。
ネタ = 初 なの?
CとJAVAどちら難しいですか?
JDKをダウンロード、インストールしたのですが、 その後は何か設定が必要なのでしょうか?
>>483 >キャンバスには何も 表示されません。これはどうしてなんですか?
この理由はいろいろありそうだから、ソース見ないと何ともいえない
けど、まず、パラメータのgは、何のGraphicsを渡してる?
単純には、これはCanvasのGraphicsを取得して渡すと思うけど、その
場合、Canvasが表示されてから取得しないと、nullになってしまう。
正しく、CanvasのGraphicsを渡せている場合、drawメソッドを呼んだ
後で、repaint()などをすると、折角描いた絵が、背景で上書きされて
しまい、消えてしまう。なぜなら、描画はzukeiのdraw()で行っていて
paint()では何も描かないから、repaint()が呼ばれると、何も描かない
paint()が実行される。これは、別の理由でフレームが再描画される場合、
例えば、ウインドウを閉じるて開くとか、サイズを変えるとか、などでも
repaint()されるから、もしちゃんと描画できても、消えるけどね。
まず、この当たりをチェックしてみそ。
>あと、Zukeiのdrawメソッドは何をするんですか?
これは、何もしなくていい。でも、Zukeiクラスにdrawがないと、その
子クラスで定義しても、zukei.draw()で呼び出せない。
>>488 >Canvasが表示されてから取得しないと、nullになってしまう。
ありがとうございました。うまくいきました。
public class ExerciseD2L4 { public static void main(String args[]) { System.out.println("私の名前は" + "山田太郎です。"); } }
492 :
デフォルトの名無しさん :01/11/11 08:18
>>326 > String args[]などの書き方は滅多に見ないよ。
みてごらんこのスレを半々ですぞ
( 71行目): public static void main(String[] args) {
( 295行目): public static void main(String[] args) {
(1161行目): public static void main(String[] args) {
(1329行目): public static void main(String[] args) {
(1455行目): public static void main(String[] args) {
(1804行目): public static void main(String[] args) {
(1844行目): public static void main(String[] args)
(3494行目): public static void main(String[] args) {
(3691行目): public static void main(String[] args)
(4464行目): public static void main(String[] args) {
(1227行目): public static void main(String args[]) {
(1564行目): public static void main(String args[]) {/*省略*/}
(2128行目): public static void main(String args[])
(2309行目): public static void main(String args[]) {
(2563行目): public static void main(String args[]) {
(2834行目): public static void main(String args[]){
(3331行目): public static void main(String args[]){
(3834行目): public static void main(String args[])
(3958行目): public static void main(String args[])
(4849行目): public static void main(String args[]) {
493 :
デフォルトの名無しさん :01/11/11 13:02
すいません。ごく簡単なコードなんですが、 import java.awt.*; import java.applet.Applet; public class app extends Applet { public void paint(Graphics g) { g.drawString("TEST",10,100); } } このコードがアプレットビューアではちゃんと表示されるんですけど、 IE6では動いてくれません。 Javaコンソールのエラーメッセージは Error loading class: app java.lang.NoClassDefFoundError java.lang.ClassNotFoundException: app at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java) at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java) at com/ms/applet/AppletPanel.securedClassLoad (AppletPanel.java) at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java) at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java) at com/ms/applet/AppletPanel.run (AppletPanel.java) at java/lang/Thread.run (Thread.java) となっています。 どうしてでしょう。お助けください。
494 :
デフォルトの名無しさん :01/11/11 13:24
HTMLのタグが微妙にまちがっててIEだと認識してくれてないんだろ エラーも「NoClassDefFoundError はクラス定義が見つからない」って意味だ
>>494 うーん、間違ってますでしょうか。
Win2000でhtmlはapp.classと同じフォルダに置いているだけです。
<HTML>
<HEAD>
<TITLE>APPLET</TITLE>
</HEAD>
<BODY>
<APPLET CODE="app.class" WIDTH=200 HEIGHT=200>
</BODY>
</HTML>
496 :
デフォルトの名無しさん :01/11/11 13:49
よく知らないけど、</APPLET>がないんじゃないの?
>>496 </APPLET>入れてみても同じでした。
むむむむむ。 Sunのサイトにあるアプレットなら動いたからJavaアプレットが動く環境は問題なさそうです。 もしかして、アプレットってローカルからだとHTMLと同じフォルダに置いても動かないとか? 謎だ・・・。
前に動かしたアプレットに不具合があった場合 修正後もキャッシュに残ったそれが実行されることがあります。
>>499 ありがとうございます。
キャッシュをすべて削除してからやってみましたがダメでした。
また、自分のWEB領域にアップして読み込んで見ましたがダメでした。
もしかして、app.classという名前が予約語か何かだったりして・・・。
それとも、SDK1.4betaでコンパイルしたからかな・・・。
例によってクラスパスの問題でねーの?
>>501 他のネット上のアプレットは問題なく表示されていますし、
コンパイルも問題なくできているのでそれは問題ないかと・・・。
クラス名をHelloWorldに変えてみてもやっぱりダメでした。
1.4をアンインストールしてSDK1.3を落とし直してみます。
JDK 1.4beta はデフォルトコンパイル対象が JDK1.2互換になってるので コンパイルオプションで JDK1.1互換のバイトコード吐くように指定してやんないと JDK1.1互換のMSのJVMでは動かんってどっかで聞いたよ。
>>503 おおおおお。それだ。きっと。
調べてみます!情報ありがとう。わかったら報告します。
表示されました! C:\JAVA\javac -target 1.1 HelloWorld.java と「target」オプションで明示的にバージョンを指定してやることで、 IE6で表示させることができました。 感謝です。 これで何日も悩んでいたのでかなりうれしいです。 ありがとうございました。 では。
506 :
デフォルトの名無しさん :01/11/11 19:01
コンパイル時に定数を渡したいのですが どうすればよいでしょうか? Cでいうところの int number #ifdef NUMBER number = NUMBER; #else number = 0; #endif とやっといて gcc -DNUMBER=3 test.c のようなことを実現したいのですが・・・
プロパティ使えば?
>プロパンティ
510 :
デフォルトの名無しさん :01/11/11 23:04
プロパンティ!
Stringクラスの中から、特定の文字列を探すプログラムを作成しましたが、実行したら エラーは出ないものの、おかしいです。どなたか手直ししていだだけませんか? 症状としては、DOS状で、文字列を入力をしても間違った答えを返してきます。 一応、aを探し出すようにしております。 public class a { public static void main(String args[]) { String str = new String(); str = args[0]; int beginIndex = str.indexOf( 'a' ); int endIndex = str.length(); int a; str = str.substring(beginIndex+1,endIndex); a = 0; if(str.indexOf( 'a' ) >= 0) { for(beginIndex = str.indexOf( 'a' );beginIndex <=str.length();beginIndex++) a += beginIndex; } System.out.println("aは"+ a +"個含まれています"); } }
a += beginIndex って。これは明らかに変だよねぇ。
>>Stringクラスの中から、特定の文字列を探すプログラム >>System.out.println("aは"+ a +"個含まれています"); なんか違うような..
public class a { public static void main(String[] args) { int count = 0; for(int i=0; i<args[0].length(); i++) { if(args[0].charAt(i) == 'a') { count++; } } System.out.println("aは"+ count +"個含まれています"); } } これじゃいや?
>>512 今、適当にでっちあげてみた。
面倒なんで、テストはしてないけど、
それほどハズれてはないはず....
# あ、例外処理いれてないや。
String str=args[0];
String target="a";
int count=0;
int index;
while( (index=str.indexOf(target,index+1)) >= 0 ){
++count;
}
System.out.println( count + "個発見したじょー" );
面倒なんで、void main も書いてません。
詳しくは、String.indexOf の仕様をよく読んでみよう。
>>516 あ、index を 0 初期化してねー。
すみません。逝ってきます。
>>517 駄目だ。0 でなくて -1 ぢゃなくちゃ。トホホ。
やっぱり、テストしなくちゃダメネ。
俺がさっき書いたんとほぼ同じコードを上の方(390付近)で発見。 ちゃんと全部読んでからレスすべきだった。 反省。
public class StringCount { private StringCount() {} /** * ある文字列中から特定文字列がいくつ含まれているかを * 返すメソッド * * @param baseStr 検索対象文字列 * @param find 検索文字列 * @return 検索対象文字列 baseStr に含まれる find の数 */ public static int exec(String baseStr, String find) { int count = 0; char[] b = baseStr.toCharArray(); for(int i=0; i<b.length; i++) { if(baseStr.length() < i + find.length()) { break; } String c1 = new String(b,i,find.length()); if(c1.equals(find)) { count++; } } return count; } public static void main(String[] args) { if(args.length != 2){ System.out.println("USAGE: java StringCount 検索対象文字列 検索文字"); System.exit(0); } String target = args[0]; String find = args[1]; int count = StringCount.exec(target,find); System.out.println("\"" + target + "\" には \"" + find + "\" が " + count + " 個含まれてます"); } } こんなんはどうでしょう? 一応動作テストもしました。 「この作りは変」とか「こうした方がいい」とかあれば是非。
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class ExerciseD4L1 { public static void main(String args[]) { BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in), 1); try{ System.out.println("好きな食べ物は何ですか?:"); String myString = myReader.readLine(); System.out.println("あなたの好きな食べ物は" + myString +"ですね!"); }catch (IOException e) { } } }
522 :
デフォルトの名無しさん :01/11/12 07:46
>>512 直接の回答ではないけど、以下の2行は無駄なことをしているので
いちおー指摘しとくね。
>String str = new String();
>str = args[0];
これは、最初の行で、ひとつのStringオブジェクトをつくり、それ
への参照を変数strに代入している。
次の行で、いま作ったStringオブジェクトを無かったことにして、
args[0]のストリングへの参照を、変数strに代入している。
すでに存在するStringへの参照を、変数に代入するには、単に
String str = args[0];
でよい。
いじょ。
523 :
デフォルトの名無しさん :01/11/12 11:32
Win98SE上で、 FileInputStreamクラスを使ってファイルを読み込むアプレットを作っています。 policytoolでclassファイルを指定してやっても、 MSVM上で実行すると com.ms.security.SecurityExceptionEx[App.init]: cannot access file data.dat ってエラーが出てファイルにアクセスできません。 アプレットビューアなら問題なくアクセスしてるんですけど、 これってMSVMだからでしょうか、それともpolicytoolの設定が間違ってるんでしょうか。
皆様にいつも助けられてます。 赤ちゃんの質問です。 JSPの内部でフラグを作り JavaScriptのボタンごとに色々な数値を割り当てその数値がJavaの プログラムに反映されるようにしたいです。 <input type="hidden" name="NEW_FLG" value=0> <INPUT style="font-size:15; "type="button" value=" 1行前 " onClick="-1"> にしましたが、この場合NEW_FLGに帰ってくる値は、何型でしょうか? JavaScliptからの数値の取り方で気をつける点など在りましたら ご指導ください。
525 :
デフォルトの名無しさん :01/11/12 14:50
>>524 >気を付ける点
JavaScriptとJavaが別物だということ
↑ 分かりました。有難うございます。 型の考え方なのですが、例えばSQLの戻ってくる値は、 全てString型のように考えて、JavaScriptの値の取り 扱いは、 JavaScript=String型に考えて 得られる値は全部Java側でIntegerValueOFなどで 常にint型に変えた方が良いでしょうか? それとも、JAVAScript側で値の型を宣言してその ままjavaに送った方が良いでしょうか?
MSVMを使うのをやめてJREを使うようにしました。 ところがまだエラーが出ています。 エラーは java.io.FileNotFoundException: m.dat (指定されたファイルが見つかりません。) で、 ソースは public class FileRead extends Applet { public void init() { try{ FileInputStream file = new FileInputStream("m.dat"); file.close(); } catch(Exception e){e.printStackTrace();} } } です。 ポリシーは grant codeBase "file://c:/JAVA/-" { permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute"; }; としています。 読み込みたいファイルの名前は"m.dat"で同じフォルダにおいています。 アプレットビューアではちゃんとデータをreadできることを確認しているので、 File名が違っているとかではないと思います。 原因はなんだと思いますか?
528 :
デフォルトの名無しさん :01/11/12 18:21
>> 527 じゃあ、絶対パスでm.datを指定してみたら? file = new FileInputStream(new File("c:/hoge/puha/m.dat"); みたいに。 それで動作するなら、アプレットビューアとこの環境でカレントディレクトリが違うってことでしょ。
529 :
デフォルトの名無しさん :01/11/12 18:48
appletからデータファイルが読みたければファイルパスではなく、HTTPで取るしか無いのでは? applet viewer でローカルファイルが読めるのは特別なんじゃ?
>>528 ありがとうございます。
絶対パスで指定してみたら読み込んでくれました。
感謝です。
>>529 一応読み込めたみたいですけど、セキュリティポリシーなどが厄介ですねぇ。
アプレットを使ってくれた人に難解な設定しろっていうのも現実的じゃないし・・・。
おっしゃる通りに、一度HTTP経由で読み込ませて見ます。
>>523 っていうかね、ポリシーとか知らないんだけど、m.datってのは文脈から読みとるとアプレットのクラスファイルがあるサーバにあるんでしょ?
けど、アプレットが実行されるのはクライアント側だから、そういう風にファイルのロードは出来ないんじゃない?
既出だったらすみません。 スタティックなクラス変数(private static)から 参照されているスレッドは、自分でNullしないとGC対象に ならないんでしょうか?run()が終わっても死体オブジェクトで メモリに居座るのでしょうか? さらにこいつがサーブレットとかで、リロードされまくるたびに 新しいスレッドを作ってると、そのうちメモリが無くなってしまうのでしょうか?
>>532 そりゃそうでしょ。典型的なJavaのメモリーリーク。
ただ、新しいThreadを作るという事は、その参照から
前のThreadインスタンスを外すことになるだろうから、
メモリがなくなるとか言う事はないと思うよ。
クラス変数と呼んでいるのがコレクションだったら、
えらいことになるよ。ほっとくとOutOfMemoryError
発生。
>532 クラスがリロードされて、さらに古いクラスの インスタンスが全部GCされれば古い方のクラスは 破棄されると思う。 1.クラスもオブジェクト。 2.すべてのオブジェクトは自身のクラスへの参照を持つ。 3.参照されなくなったオブジェクトはGCされる。 >533 そんなあなたにjava.lang.ref.SoftReference
>>534 WeakHashMapって、なんでkeyがWeakReferenceなんだろね?
valueがWeakならまだ意味があると思うんだけど…
>>488 483ですが、その後色々やったところ、ボタンの切り替えでそれぞれの図形を描く
事には成功したのですが、ボタンを切り替えた時に、今まで描いた絵が消えてしまい
ます。これを残したいのですが、どうしたらいいのでしょうか?
つまり、ボタンAを押したら、ZukeiにはKuromaruが代入される、そして黒丸
を描く、そのあとボタンBを押したら(zukeiにSankakuが代入される)、これまで
書いた黒丸達が消えてしまうんです。やりたいのは、ボタンBを押しても、
これまで書いた図形が消えず、その上に新しい図形(三角)を描くようにしたいの
ですが、うまくいきません。
教えてください。お願いします。
>>533 さん
コレクションじゃないんですが、Threadの配列で宣言...って配列もコレクション
扱い...ですよね?
>>534 さん
そのThread配列が宣言されているクラスはstaticメソッドしか定義されて
いなくて、インスタンスは1つも作っていないようでした。
この場合、リロードのタイミングで全てのクラス変数への参照ははずれる
ような気もするのですが...。
実際は533さんのおっしゃる通り、OutOfMemoryErrorが出ているので
GC対象にならず、メモリを食いつぶした訳ですが。
SofReference って, Generics が採用されたらすごい使いやすくなりそう. Java 版スマートポインタつーか. SoftReference<T> tRef;
539 :
デフォルトの名無しさん :01/11/13 03:50
JAVAの勉強をし始めたものなんですが、ダブルクリックされた時とされない時で、 条件式ってつくる方法ってできますか? 誰かしっていらっしゃる方がいたら、教えてください。
>>JAVAの勉強をし始めたものなんですが 今すぐ止めなさい
>>539 MouseEventのgetClickCount()を使うといいらしい。
542 :
デフォルトの名無しさん :01/11/13 05:11
543 :
デフォルトの名無しさん :01/11/13 05:14
541さんへ ありがとうございます。
544 :
デフォルトの名無しさん :01/11/13 05:36
どなたか教えていただきたいのですが、よくある、ある点をクリックしてそのまま ドラッグしてある範囲を選択する時に、その範囲が四角で囲まれますよね? そういう方法で四角を書きたいんですけど、drawClear()とdrawLineを使って試したんですけど うまくいきません。どなたか教えてください。
間違えました。 clearRect()とdrawRect()です。
普通XOR
536ですが、誰か教えてください。質問は536に書いたとおりです。 今ひとつよくわからないのですが、たとえば、ボタンAを押して描いた絵、 ボタンBを押して描いた絵それぞれをどっかに保存して、それらを重ねて表示 したり、片一方を消したり、といったようなことをするにはどうしたらいいんですか?
>>547 A * (1 - x) + B * x
簡単なαブレンディング。
問題点はあえてかかない。
MMXとかSSE使えば速いかも。
片一方を消すって・・・描きたい画像だけ再描画したら?
レイヤー機能なんてやめときな。
ゲームならDirect Xに頼れ。
549 :
デフォルトの名無しさん :01/11/13 08:17
550 :
デフォルトの名無しさん :01/11/13 08:27
JAVAでDirect Xってどうやって使うんですか?
551 :
デフォルトの名無しさん :01/11/13 08:53
使えません。
>>536 >ボタンの切り替えでそれぞれの図形を描く事には成功したのですが、
>ボタンを切り替えた時に、今まで描いた絵が消えてしまいます。
ずいぶん進捗しているようで、何より。で、ここからが難しいんだけど、(嘘)
ボタンを押すと、フレーム全体が再描画される。そのとき、Canvasもrepaint
されるから、何も描かないpaintで、それまでに描いた絵が消される。
ここで理解しておきたいのは、GUIの描画は、マウスクリックで三角や丸を描く
時ばかりでなく、ボタンを押したり、ウインドウのサイズを変えたり、他のウイ
ンドウに隠されていたのが出てきたり、要するにきちんと表示するためには再度
描かなければいけないとき、自動的に行われる。そのときに使われるのが、paint
メソッドというわけ。
だから、そのような場合にも、それまでに描いた絵がきちんと再描画されるため
には、paintメソッドで描くようにしないといけない。
では、今、zukei.drawで描いているのをやめないといけないのか、というと、そう
ではなく、zukei.drawで描くGraphicsを別のものにして、paintでは、そのGraphics
の元のImageを、drawImageするようにすればいい。
この、別のGraphicsを作るには、ImageまたはBufferedImageをつくり、それから
取得する。で、zukeiのdrawには、このGraphicsを渡し、そこに描かせる。
このままでは、Canvasに描かれないから、Canvasのpaintをオーバーライドして、
絵の描かれたImageまたはBufferedImageを描くようにする。
そのためには、Canvasを継承するMyCanvas(適当な名前をつけてね)を作る。MyCanvas
の中で、paintメソッドをオーバーライドするわけね。
以上のようにすれば、マウスで描いた三角や丸は、MyCanvasのGraphicsではなく、
独自に作ったImageの上にかかれているから、ボタンを押したときの再描画でも、
消えることなく描かれる。
なお、zukei.drawした時に、そのままではMyCanvasに表示されない。次に再描画
されるタイミング(paintが呼ばれるとき)でないとだめ。ということは、drawする
度に、MyCanvasのrepaintを呼ぶ必要がある。paintは直接呼んではダメだからね。
いじょ。いろいろ調べて、頑張ってみて。
描きたいzukeiオブジェクトを変数に持っといて Canvasのpaintでそいつらのdrawを随時実行したら?
>>544 とりあえず、どんな感じになるか組んでみたんだけど、、、
ドラッグ中も四角が書かれないと駄目?(どんなのかわからんし、、)
マウスを放した瞬間しか、描画されない、、、(T_T)
一応、x1, y1からx2, y2で囲むとすると、、
g.drawRect(x1, y1, x2-x1, y2-y1);
g.clearRect(x1+1, y1+1, x2-x1-1, y2-y1-1);
で、四角だけはうまく表示できると思う、、、
555 :
デフォルトの名無しさん :01/11/13 10:43
ソケットでオブジェクトストリームってできるの? それともRMIでだけ?
ソケットだろうがなんだろうができる
アプレットでは、 どんな事しても、 ローカルのファイルのアクセスは不可能ですか?
558 :
デフォルトの名無しさん :01/11/13 12:13
>>557 ブラウザの設定でセキュリティレベルを下げてもらえば可能。
プログラム側からだけではどうやっても不可能なはず。
もし可能であればそれは「セキュリティーホール」と呼ばれる。
「認証キーを付ければ可能」と誤解している人もいるが
ユーザーにセキュリティレベルが安心して下げられるように
信用してもらえるというだけの話。
>>553 そのやり方だと、最新のdrawの結果しか残らないので、今回の意図とは
違うかも。また、図形を描くために必要な計算をpaintが呼ばれる度に
することになるので無駄があるかも。さらに、複雑な図形ではちらつき
が発生する可能性もある。やはり別のイメージに描画して、そのイメージ
をpaintで描く方が合理的だと思うよ。
560 :
Java厨房 :01/11/13 14:08
適当なスレが無いので、ここで質問させてください。 JBuilderをWindowsで起動させる時に「DOSプロンプトでjava」とか打ちませんよね。 あれってどうやったら実現できるのでしょうか? 一太郎Arkなんかも同じです。なんとか.jarってファイルをクリックして起動させて いますが、どうしてなのでしょうか?
562 :
デフォルトの名無しさん :01/11/13 16:25
>>561 それ読んでわかったら、読まなくてもわかりそうだな。
563 :
Java厨房 :01/11/13 16:31
いつもいつも、大変ありがとうございます。 今は仕事場なので、家に帰ってから熟読しようと思います。 では
>>563 ワカラナイようならもっと簡単にお教えします。
>>560 Java厨房たん。
こっちのほうが、わかりやすいかも。
http://ymizoguchi.hoops.ne.jp/tips.html クラスファイルをまとめてjar化するときに、
事前にマニフェストファイルをつくっておいて、
そのマニフェストファイルをクラスファイルといっしょにjar化するのね。
で、そのマニフェストファイルだけど内容は2行だけ。
1行目にマニフェストファイルのバージョン、
二行目には起動させたいクラスの名前。
もしDOSプロンプトで
「>java TestClass」と打ち込んで起動させていたアプリケーションなら、
マニフェストファイルは下のようになります。
Manifest-Version: 1.0
Main-Class: TestClass
566 :
Java厨房 :01/11/13 20:28
皆さん、ありがとうございます。 ですが・・・・、 マジ、すいません! 少し時間下さい。!!
567 :
デフォルトの名無しさん :01/11/13 21:10
javaで、vbのendsubに相当する コードの書き方ないですか? エラーをcatch後、メソッドから 抜けたいのですが・・・。
>>567 VBはよくしらんが、それはreturnとどうちがうのだ。
569 :
デフォルトの名無しさん :01/11/13 21:13
570 :
Javaってわからん :01/11/13 21:25
はじめして。 二つの日付の差が何年あるかというプログラムをつくりたいのですが そのなかに閏年の判定もいれたと思っております。まだまだ、非力なもので APIやgooなどでしらべたのですが、なかなか年を算出するサンプルがみつからないもので、どうやって実現してよいものかわかりません。 なにかサンプルなどがあればご伝授していただきたいのですが。
571 :
デフォルトの名無しさん :01/11/13 21:28
現在Swingでappletを作成中なのですが、 一つ実現させたい機能があります。 画面に入力された項目のチェックで保存ボタン押下時に 画面上の(例えばテキストフィールドの未入力チェックなど) エラーチェックを行い、エラーのあったコントロールに フォーカスを写したいのですがやりかたがわかりません。 エラーチェックのやり方は複数項目を上からチェックしていき エラーがあった場合にはフラグを立てておきます。 最後にフラグが一個でもそんざいしたらエラー処理するといった感じです。 一つつのチェックなら可能だとは思うのですが… その際にコントロール内を全選択?(中をハイカラー)に することは可能なのでしょうか? フォーカスゲイン、フォーカスロスト時ならば出来るとは思うのですが、 ぜひ、アドバイスお願いします。
573 :
デフォルトの名無しさん :01/11/13 21:48
>>571 JTextComponentのサブクラス(JTextFieldとか)なら、
selectAll() と requestFocus() ってのがあるらしいぞ。
575 :
デフォルトの名無しさん :01/11/13 21:50
>>570 「日付」といえば、ふつう年、月、日の組合せをいうんだが、
どうやら別の形のデータらしいな。
576 :
デフォルトの名無しさん :01/11/13 22:04
説明不足でした。 例えば始期日 20001025 満期日 20011025 という文字列です。 始期日20000229 満期日20010228 これは閏年なので1年ですが、 始期日19990228 満期日20000228 の場合1年には満たないと思うのですが。 始期日19990228 満期日20000229 これなら1年 日付の計算まちがっているでしょうか??
577 :
デフォルトの名無しさん :01/11/13 23:02
>>576 アルゴリズムの話じゃないじゃん。
そりゃ仕様の相談だろ。しらねーよそんなの。
581 :
デフォルトの名無しさん :01/11/14 00:51
Swingでアプリ弄っているとたまにエラーが出るのですが何が原因なのでしょう。
再現してみようにもあまり規則性がなくて・・・
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6D374F8B
Function=JNI_GetCreatedJavaVMs+0xD41B
Library=E:\2kProgram\jdk1.4\jre\bin\client\jvm.dll
Current Java thread:
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(WToolkit.java:222)
at java.lang.Thread.run(Thread.java:539)
Dynamic libraries:
0x00400000 - 0x00406000 E:\2kProgram\jdk1.4\bin\java.exe
0x77F80000 - 0x77FFB000 C:\WINNT\System32\ntdll.dll
0x77D80000 - 0x77DDB000 C:\WINNT\system32\ADVAPI32.dll
0x77E50000 - 0x77F34000 C:\WINNT\system32\KERNEL32.DLL
略
Local Time = Mon Nov 12 07:09:07 2001
Elapsed Time = 12
#
# HotSpot Virtual Machine Error : EXCEPTION_ACCESS_VIOLATION
# Error ID : 4F530E43505002D7
# Please report this error at
#
http://java.sun.com/cgi-bin/bugreport.cgi #
# Java VM: Java HotSpot(TM) Client VM (1.4.0-beta2-b77 mixed mode)
#
582 :
デフォルトの名無しさん :01/11/14 00:52
>>576 なんか昔カレンダー作った時にグレゴリオ暦とかってキーワードをもとに
いろいろ調べた記憶があるけど、そゆんとはちがうかな?
>>580 だって
>>576 自信なさそうじゃん。
仕様が固まってないからだと思わんのか。
「何を1年間とするか」の基準には選択の余地がある、
どれかを仕様として決めなさい、それはプログラム以前です、
考え直せばいかがって言ってあげてんだよ。わかんねーやつだな。
sageんでもよかった
585 :
デフォルトの名無しさん :01/11/14 01:46
Swingで2つJPanelをならべて、Panel1上のButtonを押すと Panel2上のButtonが消える(もしくは表示される) ようにしたいのですが、setVisibleを使っても表示が変わりません どうしたらよいでしょうか。
>>585 そんな情報だけじゃどうにもならんが、
どうもその「ならべ方」がくさい。
(くわしく書いてないあたり意識してなさそう)
あ、読み違えた…すまん、
>>586 はなかったことに。。
そゆのは昔CardLayoutで差し替えた記憶があるけど、
なんかもっといい方法あるんだろうな。とミスリードしつつ
逝ってくる。
ありがとうございます。 CardLayoutを勉強してみます。
>>588 まて!すまん!やっぱり心配だ!
opaqueプロパティとかの背景描画がらみもあやしいような気がするけど…
ああっ。ねむくて調べる元気がない。。。あーくやしいー
590 :
デフォルトの名無しさん :01/11/14 02:43
文字列の文字の数を数えるメソッドてなに? 学校の宿題でさ
>>552 解説ありがとうございます。
>この、別のGraphicsを作るには、ImageまたはBufferedImageをつくり、それから
>取得する。で、zukeiのdrawには、このGraphicsを渡し、そこに描かせる。
これは Graphics g = im.getGraphics(); でいいんでしょうか?
Imageは抽象クラスなんで、オブジェクト生成できません。
どうすればいいんでしょうか?教えてください。
592 :
デフォルトの名無しさん :01/11/14 04:57
>>590 学校の宿題…。
ここのところ似たような質問が多いと思っていたら、そういうことだったのね(w
このスレの少し上(300辺りからかな?)を読めば書いてありますよ。
ちなみに「文字列の文字の数を数える」のを一発で済ますような便利なメソッドは
ありません。indexOf()なりcharAt()なりを使いこなせればできるでしょう。
(これも上にコードサンプルが載っています)
ところでどこの学校なのか知りたいな(と訊いても答えてくれないか)。
ついでに
>>591 に横レス(斜めレスかな)
ImageはcreateImageメソッドで作ります。
Image im = createImage(縦横ピクセル数パラメータ);
という風に記述します(createImageはComponentのメソッド)。
>>592 おいおい… String.length() ってのがあるんですけど…
まぁ知ってて 590 にイジワルしてるんだろうけどさ…
>>593 いやいや、590の宿題はString.length()で解決できるほど、そんな単純なものではないと思うぞ。
きっと、Shift_JIS、EUC-JP、JISのいずれかにエンコードされているファイルを
バイナリデータとして読み込んで、そのまま文字数をカウントするのだと思う。
エンコードを判断した後、それぞれのエンコードでカウントするのか、、、
結構難しいんじゃないか?
>>594 バイナリデータとして読みこんできてって…
Javaだったら
new String(bytedata, "JISAutoDetect").length()
で終わりじゃん…
Cでやれって言われたら面倒くさいけどね、特にJISが。
「難しく」はないよね。難易度:小学校〜中学校レベルかな?
あぁ、ひょっとして「任意の文字」の数を数えるのか?
それだったら length() じゃ無理だけど。
>>595 だから、それだと簡単すぎて宿題にならんだろ。
きっと、宿題の条件にバイナリデータのまま処理することって、条件ついてるんだ。
そうじゃなきゃ、String.length()で終わってしまうような宿題をださないって、、、
>>591 createImageっていうメソッドがあるんだけど、それがどのクラスにあるかは、
自分で探してみて。JDKのAPIドキュメントは知ってるよね。あれには、
一番上に「索引」っていうリンクがあるから、そこを見ると、ABC順ですべての
名前を一覧できる。createImageというメソッドもいくつかあるけど、いま必要
なのはその中の1つ。「オフスクリーン描画イメージ」なんて言葉が出てくるや
つね。ちなみに、もしAPIドキュメントを知らないとまずいので、以下にリンクを
張っておくね。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html
>>596 Javaで「バイナリデータとして」
文字列扱うなんて普通はしないよね。
で、「普通のやり方」を逸脱する
宿題ってのは普通は出さないと思うわけ。
バイナリデータのままでで処理しなきゃいけない
場合ってのは プロファイラにかける前から最適化するような
「凄いプログラマ」作るのが目的の宿題なのか、
もしくは講師はCでやりたかったけど学校側がJavaで
やれっていうので「Cでやるような処理をJavaで書かせている」か、
「文字コードのお勉強」とかそーゆー理由だろうけど
590の質問から見れば、一番まともな理由である文字コードの
お勉強ってセンはなさそうですしねぇ…
EUC とか JIS とか SJISとか言い出したの 594 だし。
いや、594 == 590 ってんなら話わかるけどさ。
>>592 >>597 ありがとうございます。
Image im = createImage(300,300) てな具合でやったんですが、キャンバスに
何も表示されなくなってしまいました。
MyCanvasクラスの中身は以下の通りです。
コンストラクタでImage im = createImage(300,300)を行っています。
で、mouseClickedメソッド内で、page = im.getGraphics(); とやって、
pageをzukei.drawに渡しています。repaint()もmouseClickedメソッド内にあります。
paintメソッド内は、g.drawImage(im, 0, 0, this);という具合です。
どうしたらよいか教えて下さい。根本的に何か間違っているのでしょうか?
>>585 蒸し返すようだが、完全に消さなくてもいいなら、
setEnabled (false) を使ったほうがよりいいと思う。
iアプリでクイズを作りたいのですが、データの持たせ方は どうすればいいのですか?ネットには接続しない方法がいいのですが・・・
>>601 別ファイルで作って、jarに一緒に入れてしまえば?
>>599 >コンストラクタでImage im = createImage(300,300)を行っています。
本当に Image im = createImage(300,300); をコンストラクタ内に書いてるの?
だとすると、imはローカル変数だから、コンストラクタの外では存在しないことに
なるよ。
Image im;
をクラスのフィールドとして、クラス定義のはじめに書いて、コンストラクタでは
im = createImage(300,300);
とする必要がある。
もし、ちゃんと上記のようにしているなら、なぜ表示されないかは、この情報だけ
では分らない。
>>602 別ファイルって質問と答えを?
iアプリだと容量が厳しいんですか?
>>599 追加。
>mouseClickedメソッド内で、page = im.getGraphics(); とやって、
これは間違いではないけれど、無駄な気がする。pageもクラスのフィールドに
して、コンストラクタの中で一度取得すれば十分だよ。
imを変えたら(例えばウィンドウのリサイズに合わせてImageを新たに作るなど)
再度getGraphicsする必要があるけどね。
>>599 訂正。
603と605で書いたのは嘘だった。ごめん。
>Image im;
>をクラスのフィールドとして、クラス定義のはじめに書いて、コンストラクタでは
>im = createImage(300,300);
>とする必要がある。
上記の「コンストラクタでは」というのが嘘。コンストラクタでは、まだCanvasが
表示されていないため、Imageが作れず、createImageがnullを返す。
で、解決法として簡単なのは、BufferedImageを使うこと。
コンストラクタの中で、
im = BufferedImage(300,300,BufferedImage.TYPE_INT_RGB);
page = im.getGraphics();
とする。
BufferedImageは java.awt.imageパッケージにあるから、importを
忘れずに。
createImageでいくなら、コンストラクタではなく、別に例えば
void createBufferImage()というメソッドを用意して、その中で、
im = createImage(300,300);
page = im.getGraphics();
を行う。
で、このcreateBufferImage()を、Mycanvasを含むフレームを表示
した後で呼ぶ。例えば、
MyCanvas mc = new MyCanvas();
frame.add(mc);
frame.setSize(400,400);
frame.show();
mc.createBufferImage();
といった具合。
いずれも、imとpageは、クラスのフィールドとすることは同じ。
以上、お詫びと訂正まで。
>>606 再訂正。
>im = BufferedImage(300,300,BufferedImage.TYPE_INT_RGB);
は間違い。正しくは
im = new BufferedImage(300,300,BufferedImage.TYPE_INT_RGB);
鬱死。
>>607 本当にありがとうございます。
コンストラクタの中でimを作る、と書いたのは私の記述ミスで、ちゃんと
クラスの変数になっていました。
で、BufferedImageを使う方法でやってみたのですが、キャンバスが真っ黒に
塗りつぶされてしまいました。MyCanvasのコンストラクタ内でバックの色を
白に設定しているのは前から変わらないのですが・・。なぜなんでしょう?
>>608 黒くなるのはBufferedImageの仕様だと思って。で、背景を白くしたかったら、
最初に白い四角形をイメージのサイズ一杯に描く。
GraphicsクラスにはsetColorというメソッドがあるから調べてみて。
>>609 ありがとうございます。早速試してみます。
自分でBufferedImage作るよりcreateImageした方が 多分性能的には有利。 その環境に合ったタイプのを作ってくれるからね。 あと、もしSwing使ってるならダブルバッファリングは Swingに任せるのが吉。 1.4以降の環境ではVolatileImage使ってくれるようだし。
日経BPの新語辞典2001の Javaアプレットの説明の一部で、 「最初にJavaアプレットが置かれたWebサーバーからデータを読み込んだり、 保存することは可能。」 とあるけど、これって可能? 保存って、具体的にどんなのがあるのかな 自分の素人知識では、サーバー側にも、クライアント側にも、 書き込みとかはできない、と認識していたのですが・・・
>>604 質問と答えのデータの持ち方を聞いたんでしょう。
だから別ファイルにしてjarに含めろって答え。
容量はjarに圧縮アーカイブして10240バイト以内
VMのエラーどうすればいいのか教えて・・
>>613 ありがとう!けどまだプログラムの方法がわからないけど。がんばって調べます。
>>614 ネットに接続すると、パケ代がかかるので、なんとかJARにしてみます。
>615 Beta使うのやめるか、BugParadeあたってみるか。
コードに問題があるわけではないと思っていいのかな。 英語は苦手だし、ベータやめようかな。。 何かメニュー辺りが臭そうだ。
>>616 だったら JAR しなくても、アプリ組み込みでいいと思う。
申し訳ありません。 JSPファイルの中でボタンの数値を飛ばしたいのですが、 どのようにしたら良いでしょうか。 イメージは、カレンダーの日付を、 「一日後」「一週間後」「今日」「一日後」「一週間後」 の各ボタンで操作します。ただ、今日以外のボタンは、 表示している日付を押した回数だけ更に進められる ようにしたいのです。ヒントは、 フラグ hidden <form>です。 僕にはさっぱり分かりません。助けてください。 カレンダーのソースは以下 Calendar cal=Calendar.getInstance(); String ST_Date[]=new String[7]; for (int i=0;i<7;i++){ cal.setTime(new DATE); cal.add(Calendar.DATE,i); ST_Date[i] = shinple.date.format(cal.getTime()); }
努力して得た問題は、 最初にアクセスした日付を更新後のデフォルト値 にして更に回せればと思いました。 一回ならボタンの値を拾えて(CheckDATEの変数名を別途宣言各ボタンからCheckDATEに数値は取れた) CheckDATEの動きで回るIF文を作ったのですが、elseの時の基準 となる値のとり方が分かりません。 String ST_Date[]=new String[7]; if (CheckDATE == 0) { Calendar cal=Calendar.getInstance(); for (int i=0;i<7;i++){ cal.setTime(new Date); cal.add(Calendar.DATE,i); ST_Date[i] = shmple.date.format(cal.getTime()); } }else { Calendar cal=Calendar.getInstance(); for (int i=0;i<7;i++){ cal.setTime(new Date); cal.add(Calendar.DATE,i+CheckDATE); ST_Date[i] = simple.date.format(cal.getTime()); } } 最初の配列は、7日間表示するテキストボックスの宣言です。
622 :
デフォルトの名無しさん :01/11/14 22:26
>>612 アプレットはダウンロード元のサーバとのみ通信できる
お絵書き掲示板 で検索してみ(w
623 :
デフォルトの名無しさん :01/11/14 23:50
砂場遊び
624 :
デフォルトの名無しさん :01/11/15 01:12
指定ディレクトリ内のファイルの名前を取得したいのですが、 手持ちの本には「list()」を使うとしか載っていません。 どなたかこのメソッドの使い方をご教授ください。初歩的な質問ですみません。
すみません。ディレクトリ内のファイル名を出力させようとしてるところです。
627 :
デフォルトの名無しさん :01/11/15 05:10
>>627 同じJava仲間じゃないですか。同じスレで仲良くやりましょう。
630 :
デフォルトの名無しさん :01/11/15 06:46
>>624 APIのドキュメントは持っていますか? 持っていなければ、先ずこれを
手に入れましょう(無料でダウンロードできます。直接WEB上で見てもいいけど)。
java.ioパッケージのFileクラスを調べて下さい。
簡単に言うと、ディレクトリ名を与えてFileをインスタンス化し、そのlist()
メソッドを呼び出せば、そこのディレクトリ中にあるファイル名の一覧を
Stringの配列で返してきます。
>>609 おかげさまでImageを使ってできるようになったのですが、別問題が発生しました。
今、描画したそれぞれのImageをVectorに保存し、それらを呼び出し表示するという
作業をやろうとしています。
で、page=im.getGraphicsとした後に、pageで絵を描き、そのあと、imをVector
に保存しています。これって正しいのでしょうか?
呼び出すときは、forを使ってg.drawImage(im,0,0,this);としています。
が、実際にこれを試したら、最後のimしか描かれないようなんです。どうしたら
すべてのimを表示できるのでしょうか?
>>631 >で、page=im.getGraphicsとした後に、pageで絵を描き、そのあと、
>imをVector に保存しています。これって正しいのでしょうか?
問題ないよ。
>呼び出すときは、forを使ってg.drawImage(im,0,0,this);としています。
Vectorに保存したなら、Vectorから取り出さないとね。その方法はAPIドキュメント
を見ればすぐわかるよ。
注意点としては、VectorからはObjectとして戻されるから、Imageにキャスト
する必要があるということかな。
>>632 ありがとうございます。
書き忘れましたが、一応Vectorからとりだすときはキャストしてます。
Image im = (Image)v.elementAt(i); というふうにやってます。
ちなみにこれはVectorのあるクラス(Zukei)内にそういう
メソッドを作って、imを返すようにしています。
で、forの中ではそのメソッドを呼んで返り値を別のImageに入れ、それをg.drawImageの中に入れる、という具合です。
どうしたらよいでしょう?
634 :
デフォルトの名無しさん :01/11/15 08:51
Java2以前(IEに最初から入ってるアプレットとか)で、中国語や韓国語の
表示ってできますか?
前、フォントの直指定で無理やり表示させようとしたら、AppletViewerでは
表示できてもアプレットでは見れなくてあきらめたのですが、
http://www.amikai.com/index.jsp?lang=JA ↑のサイトの「amiチャット」でIEのアプレットでも韓国語が表示されて
いたので、なにか方法はあるのだろうけど・・・。
私にはわかりませんでした。。どなたかご存知の方いらっしゃいますか?
>>633 そろそろ細かい話になってきたので、書いてるソースを見ないと何とも
いえないね。とりあえず、ソース貼り付けてみて。
あっ、その前に、BufferedImageを正しく作っているかどうかは確認して
方がいいね。いくつのImageを作ってVectorに保存しているのかは分らない
けれど、取り出して表示するとすべて同じ絵ということなら、実はBufferedImage
がひとつしかない、なんていう可能性もあるからね。
>>622 やっぱり、サーバー経由で、という事ですか
それは、Servletで作ったソフトとか、そういうものをさしてるんですよね?
とりあえず検索かけてみます
>>635 ありがとうございます。
さっそくMyCanvasクラスを貼るので見てください。
結局、createImageを使うことにしました。これはframe表示後
にも呼ばれています。あと、paintの変わりにshowShapesという
メソッドを作り、それを使っています。
mouseClickedやmousePressed内でcreateBufferImageを
呼ばなければ、imはひとつなので、それまで書かれたものはすべて
表示されるのですが、わたしがやりたいこととは違うんです。。。
import java.awt.*; import java.awt.event.*; import java.util.*; class MyCanvas extends Canvas implements MouseListener, MouseMotionListener { Zukei z = new Zukei Sankaku s = new Sankaku(); Maru m = new Maru(); Image im; Graphics page; public void zIss () { z = s; } public void zIsm() { z = m; } public DoodleCanvas () { addMouseListener(this); addMouseMotionListener(this); setBackground(Color.white); setSize(300,300); z = s; } public void createBufferImage () { im = createImage(300, 300); page = im.getGraphics(); } public void showShapes () { Graphics g = getGraphics(); int num = s.getNumOfShapes(); for (int i=0; i<num; i++) { Image im = s.getShape(i); g.drawImage(im, 0, 0, this); g.drawLine(0,i*10, 50,i*10); } }
public void mouseClicked (MouseEvent e) { createBufferImage(); z.draw(page, e.getX(), e.getY()); z.addShape(im); showShapes(); } public void mouseReleased (MouseEvent e) {} public void mousePressed (MouseEvent e) { createBufferImage(); z.setFirst(e.getX(), e.getY()); } public void mouseDragged (MouseEvent e) { z.draw(page, e.getX(), e.getY()); z.addShape(im); showShapes(); } public void mouseEntered (MouseEvent e) {} public void mouseExited (MouseEvent e) {} public void mouseMoved (MouseEvent e) {} }
>>637 以下のコードが何をやっているか考えると、最後のイメージしか表示されない
理由がわかるよ。
>for (int i=0; i<num; i++) {
>Image im = s.getShape(i);
>g.drawImage(im, 0, 0, this); <<<ここが問題。
>g.drawLine(0,i*10, 50,i*10);
>}
ヒント。問題の箇所で、gのサイズとimのサイズを考えてみよう。
なお、コードにはその他のミスもあるようだけど、多分、ここにコピーする時に
書き換えていて、それでミスったんだろうね。
641 :
デフォルト名無しさん :01/11/15 11:12
ブラウザにテキストボックスを作成。 そのテキストボックスを <FORM><TEXTAREA rows="2" cols="20" readonly></TEXTAREA></FORM> で、書き込み不可で表示させていて、ブラウザを更新することなく <FORM><TEXTAREA rows="2" cols="20"></TEXTAREA></FORM> 書き込み可能なテキストボックスにすることってできない? リストボックスで選ばれた項目によって、テキストボックスへの入力を制御したい。 やっぱリフレッシュしなきゃ無理ですよね。 なんかいい知恵かしてください。
642 :
デフォルトの名無しさん :01/11/15 11:20
643 :
デフォルトの名無しさん :01/11/15 11:20
Javaで日本語をTokenに分割する方法ないでしょうか、、、、??? JavaCCを使ってみたんですが、結局はTokenの定義が難しい、、、 どなたか、知りませんか??
644 :
デフォルトの名無しさん :01/11/15 11:25
645 :
デフォルト名無しさん :01/11/15 11:26
>641 そらムリだろ
>>644 速レスありがとう!
こんなん知らんかったわ!
早速導入してみます。
どうもありがとう!
647 :
デフォルトの名無しさん :01/11/15 11:29
>>647 レスありがとう!
茶筅は試してみたんだけど、
あれは日本語をTokenに分割、というよりかは、
構文解析をするみたい。
んでも、どうもありがとう!
>>640 ありがとうございます。まだわかりません。
gとimは両方とも(300,300)で同サイズだと思うのですが、誤解でしょうか?
それとも、同じサイズではいけないのでしょうか?
もう少しヒントください。おねがいします。
>>648 日本語は英語のように分かち書きしないので、
形態素解析しないと(日本語の)構文要素には分割できない。
何にせよ、あんたが求めるTokenの定義が分からないとどうしようもないな。
>>649 確か、問題は以下の点だよね。
>実際にこれを試したら、最後のimしか描かれないようなんです。
>どうしたらすべてのimを表示できるのでしょうか?
で、
>gとimは両方とも(300,300)で同サイズだと思うのですが、誤解でしょうか?
これは正しいんだけど、同じ大きさの紙を何枚重ねておいても、一番上しか
見えないよね。それがやりたいことではないでしょ。
問題と指摘したコードがやっていることは、紙を重ねているのと同じことな
んだよ。
>for (int i=0; i<num; i++) {
>Image im = s.getShape(i);
>g.drawImage(im, 0, 0, this); <<<ここが問題。
>g.drawLine(0,i*10, 50,i*10);
>}
>>651 ありがとうございます。
理由はわかりました。でも、どうしたらよいのかまだわかりません。
かなり大幅に書き直す必要があるのかな・・・。
653 :
デフォルトの名無しさん :01/11/15 15:57
Javaで四択クイズと作ってるサイト(ソースを公開してる) あったら教えてください。
654 :
デフォルトの名無しさん :01/11/15 17:55
ボタンをクリックしたら新しいフレーム(ウィンドウ?)を開いて グラフ、文章などを表示するアプレットを作成したいのですが、 本を読んでも載っていないので困っています。 どなたかご教授おねがいします。
655 :
デフォルトの名無しさん :01/11/15 18:12
>>654 何がわからないのか、もう少し具体的に書かないと、答えようがないかも。
今、作成中なので後でソースをコピペします。
657 :
デフォルトの名無しさん :01/11/15 20:13
今にも泣きそうです。 ちょっと見てやってください。 class SuperClass implements Serializable { Object a; Object b; } class SubClass extends SuperClass { int c; Load() { c = read(); super = read(); //<--こなんの!! } Save() { write(c); write(super); //<--こなんの!! } } 果たして上記のようなことって出来るのでしょうか?? SubClassは SuperClassから派生しています。 read/writeは端折り過ぎですが、まぁシリアライズすると云う事で。 で、SubClassから、SuperClassをシリアライズ出来るのでしょうか?
>>657 thisとかsuper は予約語であって代入はできないハズ、、、
要するにあるオブジェクトの定義のサブクラスで追加した分を
無視してスーパークラスとしてシリアライズしたいと、、、
むりなんじゃないかなー
どうせシリアライズAPIの中でgetClass()呼び出して
実際のオブジェクトの正体みてるだろ。
#thisをシリアライズで書き込むのは問題ない、、、タブン
>657 SuperClassで void Load() { read(a); read(b); } SubClassで void Load() { super.Load() read(c); } みたいなかんじで。
660 :
デフォルトの名無しさん :01/11/15 20:52
TreeってSwingにしかないんですか? +□ −□ ||-□ |+-□ | +-□ こういうやつ。
661 :
658さんへ :01/11/15 20:53
ありがと! 出来ないとわかっただけでも、嬉しいです。 MFC/C++みたく、簡単にはいかないみたいですね。 ・・・多分いけるのでしょうが、未だ全然わかっていないみたい。 また、よろしくお願いいたします。
>>660 Swingにしかないと、なにか困りますか? Swingでいいじゃないですか
663 :
658さんへ :01/11/15 21:10
ありがと! 確かによさげですが、実を云うとSuperClassには いっぱいオブジェクトがあって、defaultWriteObjectで 簡単に出来るかな?と思いました。 このSuperClassはOracleのBLOBに登録したかったのです。 で、SubClassはSELECTできる項目として登録します。 MFC/C++とOO4Oで似たような処理をしていたので、Javaも 同じだろうと、思ったのですが・・・いやはや。 このストリームとシリアライズをもう少し勉強します。 658さん、659さん ありがとう御座いました。
>663 それなら単にSuperClassにはdefaultWriteObjecメソッドは書かないでおいて SubClassからsuper.defaultWriteObjectでよいんでわ。
665 :
659さんへ :01/11/15 21:28
ありゃりゃ 上の658さんは、659さんの間違いでした。
666 :
デフォルトの名無しさん :01/11/15 21:37
>>663 見当違いかもしらんけど、なんか継承というより、コンポジットでいいん
じゃないの。
class BLOBClass implements Serializable {
Object a;
Object b;
}
class SELECTClass implements Serializable {
int c;
BLOBClass blob;
Load() {
c = read();
blob = readObject(); }
Save() {
write(c);
writeObject(blob); }
}
667 :
デフォルトの名無しさん :01/11/15 22:08
664さんへ Java2のリファレンスで、writeObject()、readObject()を 実装する必要があると書かれていたので、それぞれのメソッドを 追加してdefaultWriteObjectを書いたのですが。。。 よくみたら、"特殊な扱いが必要なクラスでは..."とありますね。 特殊じゃないから、super.defaultWriteObject()でいいのか。 なんか恥ずかしいこと聞いたみたい。 666さん おぉ、なんかよさげな感じだな?! ただ、BLOBClassには、set/getメソッドがそれぞれのメンバ分あるので BLOBClassを派生してSELECTClassを使いまわそうかと思っていました。 でも何となく手段は色々とありそうなので、もう少し研究してみます。 ありがとう御座いました。
>>651 ごめんなさい。理由はわかるのですが、どうしたら解決できるかがどうしても
わかりません。教えて下さい。お願いします。
>>668 正直いって、どういうことがしたいのか、今ひとつ分らないんで、
解決方法を助言しにくい。
マウスをクリックするたびに、三角が増えていくということなら、
一枚のImageに描き加えていけばいいと思うけど、そうではない
らしいし。もし、マウスをクリックするたびに、そのデータを
保存したいということなら、クリックした座標を保存していく
ことになるだろうし。
とりあえず、どうしたいのかを、できるだけ詳しく説明してみて。
配列を使って(ほとんど配列)コマンドオプションから任意に入力した 年月、一月分を表示するカレンダーを作成しなさい。 この問題のヒントをお願いします。二次元配列は禁止だそうです。 お願い君で申し訳ないです。どうかよろしく。
>>669 例えば、ボタンAを押したあとに描いた絵、これを絵1とします。そして次に
ボタンBを押したあとに描いた絵、これを絵2とします。
やりたいことは、これら絵1と絵2を重ねてキャンバスに表示したいんです。
(今は簡素化のために2つだけですが実際はもっとたくさん)
で、なぜそれら「絵」をVectorに保存したいのかといいますと、後々、その中から
ある絵をピックアップして、それを消去する、もしくは描き変える等の作業が
したいのです。
ご助言、よろしくお願いします。
672 :
勉強中(修正野郎) :01/11/16 01:04
配列を使って(ほとんど配列)コマンドオプションから 任意に入力した年月で、 画面に一月分を表示するカレンダーを作成しなさい。 この問題のヒントをお願いします。二次元配列は禁止だそうです。 お願い君で申し訳ないです。どうかよろしく。
>671 これって、ひょっとしてフォトショップのレイヤーみたいな機能を 実装したいって事ですか?
674 :
デフォルトの名無しさん :01/11/16 01:27
>>672 3次元配列にすればいいんじゃないかな?
675 :
名無しきぼう :01/11/16 01:51
InOutStream Out = new InOutStream(1,Test.txt) テキストファイルに書き込みにいくロジックなのですが Test.txtファイルの下に追加書きされていきます。 ファイルの先頭に追加していきたかったら、どう記述すればいいのでしょうか?
>672 マルチポストサゲ。
>>672 とりあえず、入力された年月(ex. 2001 11)の、1日が何曜日かを割り出す
アルゴリズムは探せばすぐ出てくるから、それつかって表示すれば
いいんじゃない?
>>671 それはよくわかりませんが、そうなんでしょうか?
もしそうだとしたら、どうしたらよいのでしょうか?
>>679 その取り乱した聞き返し方(・∀・)イイ!!
烈しくワラタ〜
通常、Object#clone() で複製を作ると、それは浅いコピーとなり、 そのオブジェクトの持つ参照まではコピーされず、同一の参照を コピー元とコピー先とで共有する事になります。 で、ある抽象クラスのその派生クラス(具現クラス)にて、深いコピーを 自分で実装しようと思ったとき、抽象クラスと派生クラスとで内容が 全く変わらない場合、抽象クラスの方にclone()メソッドを実装したいと 思いますが、この場合、皆さんならどうしますか? 僕は通常、深いコピーを作成する場合にはclone()メソッドの中で コンストラクタを呼んだりしているのですが、抽象クラスの場合には コンストラクタを呼ぶことが出来ません。 この場合は、派生クラスの方でclone()メソッドを実装するしか無い のでしょうか?
>>679 673は俺なんだが(w
671の様なことをやろうとするのであれば、
それぞれの絵のα透明度をいじるしかないんじゃないかな?
間違えました。
>>673 は私じゃなくて
>>673 さんでした。
私は
>>671 でした。逆でした。
それぞれの絵はImageとしてVectorに保存しています。
それらのα透明度をいじるんですか?
すみません。α透明度ってなんでしょう?お願いします。教えてください。
どうするんでしょうか?
>>681 よくわからんが、そういう変なclone()はやめといたほうがいい。
>>684 すいません。ちょっと文意が読みとり切れませんでした。
深いコピーは作るべきではないということですか?
clone()メソッドの実装方法がおかしいと言うことですか?
686 :
得意の(w)斜めレス :01/11/16 05:25
>>683 はレイヤとかそんな大袈裟なことを考えている訳ではないと思う。
単に一つのCanvasに色々お絵かきしたいだけなんでしょう? 勿論レイヤ
の機能を付けたらドローイングソフトとしては性能UPするけれども、まだ、
それ以前の問題でつかえているように思う。
とにかく先ず、1つのImageに図形をどんどん書き足していきましょう。
これで意図した図形がすべて表示されるようになるのが先決。
Imageの編集はそれから考えることにした方がよいと思う。編集のためには、
いずれ図形の情報(図形の種類、座標等)を保存しておくことになるでしょうが。
687 :
名無しきぼう :01/11/16 05:33
>>676 追加で書いてケツから読みたいのですが
記述がわかんないです。
どのようにすれば?
>>686 >とにかく先ず、1つのImageに図形をどんどん書き足していきましょう。
>これで意図した図形がすべて表示されるようになるのが先決
それ、まさに、Vectorに保存するとかそういう以前にやっていたこと
なんです。ということは、Vectorには図形の種類や座標を保存するん
ですか?またふりだしに戻ってしまったような気がします。。。
どうしたらいいのかわからなくなってきました。助けてください。
そのレイヤというのは大変なんですか?
>>685 684ではないが、684が言いたいのはclone()をオーバーライトするのはやめておけって事だろ。
浅いコピーと勘違いしちゃうから、、、別名付けとけと、、、
つか、内容が変わらないのに抽象クラスにする必要があるのか?
普通の有形クラスでいいんじゃないの?
690 :
デフォルトの名無しさん :01/11/16 06:19
参照があるのにclone()でエラー起こさない仕様が糞
691 :
得意の(w)斜めレス :01/11/16 06:58
>>688 レイヤというのは、透明なフィルムのようなものと考えて下さい。
透明ですから何枚重ねられても、それぞれに描いた図形がすべて
見通せるわけです。しかし、あなたがやろうとしているのは、そう
いうことではないのでしょう?
とにかくVectorに保存するのは図形の種類と座標(これはあとで
編集するために使うもので、当面の表示には関係有りません)。
Imageはとにかくひとつだけ用意して置いて、そこに描いていけば
いいのです。そしてそのImageを必要なときにdrawImageで表示すれば
いいのです。それでとにかく意図した図形はすべて表示されます。
編集はそれから後の問題。
勿論1Imageに1図形だけ描いて、それをレイヤ表示すれば、図形は
すべて表示されるし、後で編集するときも便利になる訳ですが(1つ
の図形を消すためには単に対応するImageを消せばいいのだから)、
1レイヤに1図形というのは乱暴すぎて、一般的なやり方ではないと
思います。まあ、図形の数が少なければそういうやり方もあるでしょうが。
>>691 ありがとうございます。がんばってみます。
ところで、前にこのスレで聞いたのですが、よく、ある範囲を選択するときに
マウスドラッグして四角形で範囲選択するじゃないですか。その方法で四角を
描くのってどうしたらよいのでしょう?drawRectとclearRect使ってやった
んですが、うまくいきません。
693 :
デフォルト名無しさん :01/11/16 07:27
ファイルを下から読み込むロジックを教えていただきたいです。 In.read…? 上から読んでいくことはできているのですが 下から読まして、表示したいのでよろしくお願いします。
694 :
新世界より :01/11/16 07:52
>>693 ファイルを下から読むより、上に追加書き込みするほうが簡単だ。
どうやるかっていうと、
@一時ファイルを作成し、追加したい行を書き込む。
A元のファイルの内容を読み出し、一時ファイルに追加書き込みする。
B元のファイルを削除し、一時ファイルのファイル名を元のファイルのファイル名に変える。
Java でどう記述したらいいかってことはよく分からないけど、
これは言語を越えて使える定石なので参考にすれ。
P.S. あるいは、ファイルの内容を全行読み出して、Vector かなにかに入れちゃうとか。 そしたらどこからだって読めるんじゃなかろうか。 でも、それだとメモリ食いすぎるな……。いや、Java が動くようなマシンなら、 そんなこと考えなくてもいいのかな? む〜〜〜。あとは誰か Java に詳しい人の補足きぼ〜ん。 中途半端なレスでスマソ。
696 :
デフォルト名無しさん :01/11/16 08:23
>>694 :695
レスありがとうございます。
確かにロジック的にはそれでいけそうですね。
具体的な記述がわからないですが調べてみます。
それと、JAVA詳しい方には引き続き教えていただけると幸いです。
>>688 いささか亀レスだけど。
やりたいことは大体分った。結局、図形の座標と種類を、クリックの都度保存する
必要がある。そして、表示のためには、一枚のImageに重ねて描いていく。
1 まず、他の人も言っているように、ボタンで図形を切り替えながら、
すべての図形を一枚のImageに描けるようにする。
2 それができたら、mouseClickedで、そのときの座標と図形の種類を保存する
ことを考える。
3 保存できるようになったら、別のボタンを作り、それを押したときに、新しい
Imageに、保存した図形をすべて描くようにする。
大体、以上のような手順でやってみればいいんじゃないかな。
まず、1ができるかどうか、頑張ってみて。2以降の質問は、1ができてからね。
698 :
得意の(w)斜めレス :01/11/16 08:40
>>692 いわゆるラバーバンド風な使い方をするわけですね。
基点と現在のマウス位置を対角点にしてビヨンビヨン四角が
動くというような…。
clearRectとdrawRectでできますよ。どこかロジックにまずい
ところがあるのかも。
ただひとつ注意するところがあります。Rectは2つの対角点を
指定するのでなくて、基点と幅と高さを指定しますよね。この
幅と高さに負の数を指定できないので、基点が左上にある場合
にしかうまく動きません。つまりマウスを右下方面に動かすとき
はいいのですが、左や上に動かすと表示されないのです。これは
実は私も悩まされた経験があります(^^;
マウスを右下に動かしてもうまくいかないのなら、やはりロジック
に問題があると考えられます。
えーと、私はこれから用事があるので、しばらく落ちます。
後は、ついに登場してくれた488さんに任せたいと思います。
699 :
デフォルトの名無しさん :01/11/16 09:02
>>681 >僕は通常、深いコピーを作成する場合にはclone()メソッドの中で
>コンストラクタを呼んだりしているのですが、抽象クラスの場合には
>コンストラクタを呼ぶことが出来ません。
clone()の中でコンストラクタを呼ぶのは禁じ手だよ。super.clone()を
呼んで浅いクローンを作り、必要なフィールドの初期化はそれぞれ行う
必要がある。そうしないと、サブクラスでsuper.clone()を呼んだとき
に、ClassCastExceptionが発生するよ。
また、この方法なら、abstractでも可能だしね。
700 :
質問する人へ :01/11/16 10:25
自分でしっかり考え、疑問点をまとめて、調べて抜いて、それでも概念が掴めないってときに、疑問点を整理して投稿すべき。そうでないとなにやっても時間の無駄。
701 :
デフォルトの名無しさん :01/11/16 11:54
多分、知ってる人には「答え一発!」だと思うので…… 「JSP/サーブレットの中でAWTのToolkitを使う(getToolkitする)にはどーしたらいいのでしょう?」 X-Windowが必要なのは承知しています。既に入ってます(^^; ということで、よろしければアドバイスをお願いします(拝
Toolkit.getDefaultToolkit()じゃだめなの?
じゃあ自分でToolkitを継承して作る(w っていうか何に使うの?
>>488 ありがとうございます。おかげでやりたいことができるように
なりました。今度はそれらを消したりできるように色々やっていきます。
ところで、今、別の問題が起きています。↓
>>698 ありがとうございます。
clearRect使うと、上書きになってしまうんですよね。
今試してるやり方では、ドラッグ中も次々とVectorに保存されています。
ので、mouseDraggedメソッドの中で、直前のVector要素を消すよう
にしているのですが、うまくいっておりません。何かアドバイス
あったらお願いします。
>>706 自分が組んだロジックを一番よく知ってるのは自分自身だろ。
APIの使い方はともかく自分のロジックを他人がなぜ見もせずに分かるの思えるんだ?
JSPの中でImage/BufferedImageをいぢるなりよ(^^; で、jpegエンコードしてストリームに直接吐き出して表示させようというのが「やりたいこと」 ……GIFやPNG読むのにgetImage使おうとしたなりが……読めない(^^; Container()を作ってやっても、Toolkit.getDefaultToolkit()でも×。getImageは通るけど、幅も高さも-1。 ……なして?(^^;
>>709 えっと、JSPの場合はgetWidth()でthisは指定できませんよね?
では、何を指定すればいいのでしょう? 無理矢理キャストしても×でした(^^;
#Containerも試したけどやっぱり×……(T_T)
>>706 >今試してるやり方では、ドラッグ中も次々とVectorに保存されています。
それは、mouseDraggedの中で保存しているからでは?
最後のひとつだけ保存するなら、mouseReleasedですればいいのでは?
>>709 どうやらアタリみたいです。二回目or三回目からはちゃんと読み込めました。
>>712 ………new Container()ぢゃダメなんでしょうか?(^^;
con = new Container();
Image i = con.getToolkit().getImage(c:\hogehoge.png);
w = i.getWidth(con);
……としてみたんですけど、やっぱり一回目はNGです。
……ほかに、ServletOutputStream使うとなぜか必ずclose()の時に「このリクエストのOutputSteamは既に使用中です」って出るのも謎でし。
createJPEGEncoder非同期出力なのだろうか?(^^;
コンパイルできませんでした。 import javax.swing.JFrame; class Test { public static void main(String[] anyArguments) { JFrame window = new JFrame(); window.setVisible(true); } }
>>713 MediaTrackerとか使って読み込みが終わるまでブロックしたら?
出来るかどうかやってみないと分からないけど。(無責任)
最悪ImageObserver実装したスレッドクラス自作して
wait,notifyで読み込み終わるのをブロックする必要があるかもね。
716 :
デフォルトの名無しさん :01/11/16 17:11
>>714 全部、全角文字だから、っていう詰まらないオチじゃないよね。
>>714 /\__/\ / ̄ ̄ ̄ ̄ ̄
(  ̄∀ ̄ )< おもしろくないょ?
( ) \_____
| | |
(____)____)
アプレットで、ボタンを押したらフレームを開くようにしたのですが フレームを閉じようとしても閉じません。どこがいけないのでしょうか? import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; public class Applet2 extends JApplet { FlowLayout flowLayout1 = new FlowLayout(); Button button1 = new Button(); /**アプレットの構築*/ public Applet2() { } /**アプレットの初期化*/ public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**コンポーネントの初期化*/ private void jbInit() throws Exception { button1.setLabel("Click"); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { button1_actionPerformed(e); } }); this.setSize(new Dimension(400,300)); this.getContentPane().setLayout(flowLayout1); this.getContentPane().add(button1, null); } void button1_actionPerformed(ActionEvent e) { Frame f = new SimpleFrame(); Button b = new Button("Click!"); f.add(b); f.show(); } } class SimpleFrame extends Frame{ public SimpleFrame(){ addWindowListener(new WindowClose()); setTitle("Test"); setSize(400,200); setLayout(new FlowLayout()); } } class WindowClose extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); } }
719 :
デフォルトの名無しさん :01/11/16 18:10
↑長くてすみませんが、よろしくお願いします。 2つに分けるべきでした。
>>715 出来ました(^^) 待ちはとりあえず0ms(無限待ち)に指定しておいて、後はユーザーにいぢってもらおう(^^;
後は、ServletOutputStream#close()の「このリクエストのOutputSteamは既に使用中です」って〜謎のメッセージだけぞなもし。
やっぱりcreateJPEGEncoderも非同期出力なのかなぁ……(^^;
721 :
デフォルトの名無しさん :01/11/16 18:44
>>718 windowClosing()で、System.exit()しているけど、これがセキュリティ
にひっかかって、例外が出ている。
アプレットから開いたんだから、System.exitではなく、disposeで消す
だけでいいのでは。
ちなみに、ブラウザのjavaコンソールは見たほうがいいよ。
722 :
◆OyY8CYMo :01/11/16 18:50
perlでいうところのsplit , Cでいうところのstrtok って JDK1.3にはありませんかねぇ?
723 :
デフォルトの名無しさん :01/11/16 18:51
>>722 StringTokenizerのことかな?
724 :
デフォルトの名無しさん :01/11/16 18:51
コードを張るときは全部張らんで 問題を再現する為の最小限のコードだけにせーよ。 以前仕事でライブラリの保守やってたときに 「これが動かん」とか言いながら ソース丸ごと全部渡された時はキレたよ流石に。
726 :
デフォルトの名無しさん :01/11/16 19:18
研究室の測定装置の制御プログラムをBASICからJavaに書き換えたいと思うのですが Javaは入門本を読破したのですが、思うようにできなくて困っています。 元のプログラムを下に抜き出したました。 装置のアドレスを指定して命令を出すのをどう書けばいいのかがとくにわからないのですが、お願いいたします。 ここに出てくる17というのは測定装置のアドレスでEXって言うのは測定の命令です。 10 iset ifc 20 iset ren 21 I=0:EN=0 22 I=I+1 30 print@ 17;"EX" 40 input@ 17,FFF$ 50 F0(I)=val(right$(FFF$,10))*1000 60 print using"##.##^^^^";F0(I) 70 EN=I 80 goto 22
助けてください。 日付をHTMLやテキストボックスなどに出力する際に simpleDateFormat("MM月dd日")のようにするじゃないですか、 その際の値をテキストボックスなどに出力したら、その出力した値を を元に日付を再度得る事は可能ですか? (String型で MM月dd日をテキストボックスに表示。それをgetText などで取り出し再度DATE型に格納したい) 教えて下さい。
729 :
デフォルトの名無しさん :01/11/16 19:32
>>728 java.util.GregorianCalendar っていうクラスがあるから、調べてみて。
729>有難うございます 月と日以外の情報がない場合は、難しそうです。 いま考えているのは出力する際に別のSimpleDateFormatでyyyyMMddで フォーマットしたものを隠して渡してしまおうかとも考えてます。 でも隠して値を渡せるなら、DATE型でそのまま渡した方がよさそうです。 もし何かヒントになりうる事がありましたらよろしくお願いいたします。 でもとても勉強になりました有難うございます。
731 :
デフォルト名無しさん :01/11/16 20:13
テキストファイルデータ "1<BR>2<BR>3<BR>4<BR>5<BR>" ブラウザ表示 "5<BR>4<BR>3<BR>2<BR>1" どうすればよいのですか? よろしくお願いします。
アプレット全体をImage配列に取り込むことはできるんでしょうか? マウスドラッグで線を書くプログラムの場合ウインドウが重なると 元の線は消えますよね、そこで書かれた線(アプレット全体)を リアルタイムに配列にgetImageのようにしてrepeintで再描画させれば 消えなくて済むとおもったのですが。 そのような方法ってあるのでしょうか?
>>720 の続き
とりあえず721を見て思い立ち、Graphics2Dを明示的にdisposeするが状態は変わらず。
念の為Image/BffueredImageもflushするがやっぱり×
ん〜……ほかに関係ありそうなのは、Containerとメディアトラッカー位なものか……。この二つ、明示的に破棄するメソッドってありましたっけ?
734 :
デフォルトの名無しさん :01/11/16 20:27
>>732 描画面と同じおおきさのバックグラウンドイメージを用意して。
マウスドラッグではバックグラウンドのほうに書くようにしろ。
バックグラウンドに書いたらその直後にマウスが動いた範囲を指定して
Applet.repaint(int x,int y,int width,int height)
を呼ぶのを忘れない様にな。
アプレットのpaintメソッドではただ単にバックグラウンドから画面に転送するようにしろ。
何も考えずに全コピーでかまわないぞ
システムが勝手にクリッピング領域設定してくれているからな。
>>734 回答どうもありがとうございました。2CHだと回答してくれない
人が多いのですごくうれしいです。早速やってみます。
本当にありがとう。
消えないようにすることはできたのですが、Image(ポインタ)をマウスの XYと連動するとrepaintによって線が消されてしまいます。 僕のしたいことはアプレットの中に鉛筆を置いてマウスと連動しながら クリックされると線が引けると言うものなんですが、これは 難しいんですかね?やっぱり。
>>721 どうもありがとうございました。
初心者なので質問の仕方もよくわからなくて、
どこが悪いかも分からなかったので、コードを
そのまま載せてしまい失礼しました。
>>689 型付けをしたかったのと、のちのち、拡張を考えていたのとを含めて、
今はまだ具象クラスと抽象クラスがほぼ同じという状態です。
>>699 お〜。なるほど。
ありがとうございます。
それでやってみます。
739 :
オナーニカキコ :01/11/17 00:47
たまにこういう抽象クラスを定義する人がいるけど abstract class Dog { protected String name; public String getName(); } クラス内で使われて無い"name"は実装クラスに書いた方が良いと思う。 で、Dogはinterfaceに変更したほうがイイと思う。
>>739 例えば、そのフィールドが異様に多くなって、全ての実装クラスで
同じフィールドをいくつも書かなきゃならない時ってめんどくさくないです?
そゆときはどうするんでしょう?
煽りじゃなく、真面目に質問。
742 :
デフォルトの名無しさん :01/11/17 04:49
>>740 データなんかの格納領域クラスで、よく
public class HageList{
private Hage hoge1;
private Hage hoge2;
…//以下死ぬほど繰り返し
public Hage getHoge1(){return hoge1;}
public void setHoge1(Hage hoge1){this.hoge1=hoge1;}
…//同じく以下死ぬほど繰り返し
}
とかいうクラスを定義していたりするのを見るんだけど、
import java.util.HashMap;
public class HageMap{
public final HashMap map = new HashMap();
public void set(String name,Hage val){map.put(name,val);}
public Hage get(String name){return (Hage)map.get(name);}
}
こっちのほうが良くない?
クラスで静的に変数型名と変数名とGETTER,SETTERを決めなければ
ならない理由ってあるの?
JavaBeansみたいな事をするためにはそういうルール付けも必要
だろうけど、普通のプログラムでは型制約つきMapで十分だと
思うのだが…Keyの命名則が別途必要だけど、Keyはシンボル
じゃなくて変数なので、外部から取り込みとかできるし。
どっちが良いかって決まってるのかな?
それとも、どういう場合にはどっち、とかいうことなのかな?
743 :
デフォルトの名無しさん :01/11/17 07:53
くだらないJavaなんか捨ててRubyに移行したいのですが。
744 :
デフォルトの名無しさん :01/11/17 08:17
一抜けた
745 :
デフォルトの名無しさん :01/11/17 12:33
>>736 いまいち言ってることが理解できない。もう少し噛み砕いてくれると、
何か言えるかもしれない。
746 :
デフォルトの名無しさん :01/11/17 13:09
>>742 それだと、HageMapにどのような要素があるのか、
どのような要素を入れるべきなのかが分からないよ。
putする側で"hage1"というKeyで入れてるのに
getする側で"Hage01"で取ろうとしてもコンパイルエラーにならないし。
あらかじめmapに入れるべき要素の名前が決まっているならば、
素直にそれぞれのsetメソッドとgetメソッド決めたほうが良いと思う。
>746 キーを定数にするんじゃダメ? static final String HAGE1 = "hage1";
748 :
名無しさん :01/11/17 13:19
abstractクラスなんていらねぇ。意味ねぇ。いない方がまし。 なんの役に立ってるわけ?
749 :
デフォルトの名無しさん :01/11/17 13:56
ボタンを押したときにそのボタンが押されてるように表示するのって どうやるんですか?
>>748 ポリモルフィズムが使いこなせない抜け作には、
全く必要ない機能です。
でも、そんな知識レベルでコアAPIライブラリ
を使いこなすことができるのかいな?
どうせ腐ったCのソースみたいなのしか書いて
ないんでしょ?
>>749 押されているかのようなグラフィックで上書きするだけ。
自作なのか?コアAPIライブラリのクラスなら、内部で勝手
にやってくれるはずだが…
752 :
デフォルトの名無しさん :01/11/17 14:00
>>748 今のトレンドはabstractの代わりに例外投げるスタブを実装。
実装してないぞゴルァ って言われる方が開発時は仕事しやすい。
>>746 静的に要素を決めたい場合は、まあそうなんだろうけど、
そういうロジックでインヘリタンスかコンポジションとか
というのもありと思われ。
コンポジションで書いてみる。
(この例の場合はインヘリタンスのほうが良いだろうけど)
import java.util.ArrayList;
public class SelectedHageMap{
private HageMap map = new HageMap();
private static final ArrayList keylist = new ArrayList();
static{
keylist.add("hage1");//外部ファイル読み込みとかでもいいよ。
keylist.add("hage2");
}
private static boolean isExist(String key){
return (!key==null && keylist.contains(key));
}
public void set(String key,Hage val)throws Exception{
if(!isExist(key))throw new Exception();
map.put(key,val);
}
public Hage get(String key)throws Exception{
if((!isExist(key))throw new Exception();
return map.get(key);
}
}
要するに、実行時に動的に変数を決めるか、 ソースで静的に決めるかと言う話なんだけど。
755 :
デフォルトの名無しさん :01/11/17 14:37
配列に文字列として変数名を入れて、その配列の要素を取り出したとき、 その変数名が指す値を使いたい場合何かいい方法はないですか? つまり、その取り出した要素を変数として使いたいのですが。
756 :
名無しさん :01/11/17 14:42
>>756 月収180万って多いか?
PGってこのくらい普通じゃない?
(うちは160万)
759 :
デフォルトの名無しさん :01/11/17 16:35
俺としては752もコワヒ
760 :
デフォルトの名無しさん :01/11/17 17:18
>>743-744 Javaで動いているシステムで Ruby なんて使おうもんなら、頭悪いと思われると思う。
761 :
デフォルトの名無しさん :01/11/17 17:21
>>743-744 「Java で組んでみよう」なんて宿題が学校で出てるのに Ruby なんて使って提出したら、頭悪いと思われると思う。
こんなものも
JRuby
http://jruby.sourceforge.net/ JRuby is the effort to recreate the Ruby interpreter in Java
and to create a Ruby to Java Bytecode compiler.
763 :
デフォルトの名無しさん :01/11/17 17:23
>>743-744 JAVA検定で Ruby なんて使って提出したら、頭悪いと思われると思う。
>>755 それこそ
>>742 じゃだめなのけ?
それがだめなら、java.lang.reflect.*と
java.lang.Class使いなされ。遅いけど。
↓素数判定のプログラム書きました。遅いです。もっと良い奴誰か教えてYO! ------------------------------------------------------------------------ public class PrimeChecker { private int[] preparedPrimes;//あらかじめ用意しておく素数の配列 /** @param preparedLength あらかじめ用意しておく素数の数 */ public PrimeChecker(int preparedLength) { preparedPrimes = new int[preparedLength]; for (int i = 0, j = 2; i < preparedLength; i++) { while (true) { if (check(j, false) == -1) { preparedPrimes[i] = j; j++; break; } j++; } } } /** * @param target チェック対象の数 * @param usePreparedPrimes trueならばあらかじめ用意してある素数を利用する * @return 素数ならば-1を返し、素数でないならば割れた数を返す */ public int check(int target, boolean usePreparedPrimes) { if (target == 2) return -1; int divisor = 2; //この数でtargetを割る。約数の最小は2 int limit = target; //この数に到達するまで割りつづける int index = preparedPrimes.length; if (usePreparedPrimes) index = 1; while (divisor <= limit) { if (target % divisor == 0) return divisor; if (index < preparedPrimes.length) { divisor = preparedPrimes[index]; index++; } else { divisor++; } limit = target / divisor; } return -1; } }
↓続き -------------------------------------------------- import java.io.*; public class PrimeTest { /** * 指定した数までに存在する素数を割り出す。 * [使用例] > java PrimeChecker 1000 prime.txt * 第1引数:指定する数 * 第2引数:出力するファイル名(指定しない場合は、ファイル出力しない) */ public static void main(String[] args) throws Exception { int maximum = Integer.parseInt(args[0]); PrintWriter out = null; if (args.length > 1) out = new PrintWriter(new BufferedWriter(new FileWriter(args[1]))); PrimeChecker checker = new PrimeChecker(1000);//あらかじめ1000の素数を作るよ double twoPercent = maximum / 50; System.out.println("----+----+----+----+----+----+----+----+----+----+"); double start = System.currentTimeMillis(); int x = 10; for (int i = 2; i <= maximum; i++) { int result = checker.check(i, true); if (result == -1 && out != null) out.println(i); if ((double)i % twoPercent == 0.0f) System.out.print("*"); } System.out.println(); double end = System.currentTimeMillis(); System.out.println((end - start) / 1000 + "秒"); if (out != null) out.close(); } }
767 :
デフォルトの名無しさん :01/11/18 00:45
今からジャヴァはじめようと思うんですが、 どんな本やサイトがおすすめですか? 教えてください。お願いします。
main()に書いた使用例間違えたYO・・。 ×> java PrimeChecker 1000 prime.txt 〇> java PrimeTest 1000 prime.txt
770 :
デフォルトの名無しさん :01/11/18 00:57
UDP通信で質問 ECHOサーバを書いてみたのですが、 DatagramSocket って送信等をするたびにcloseする必要ある? とりあえず、こんな感じでECHOサーバを書いたのですが DatagramSocket ds = new DatagramSocket(port); byte buff[] = new byte[100]; DatagramPacket dp = new DatagramPacket(buff,100); while(true) { dp.setLength(100); ds.receive(dp); dp.setAddress(dp.getAddress()); dp.setPort(dp.getPort()); dp.setData(dp.getData(),0,dp.getLength()); ds.send(dp); } ときどきreceiveで例外発生します。
WIN32API使う時 もしかして、VC側でUNICODEプログラミングすれば JAVA側でテキストそのままつかえるの?
772 :
デフォルトの名無しさん :01/11/18 02:26
JavaでGUIのボタンを作って それを押すとMS-DOSプロンプトで「java ファイル名」や「run"ファイル名"」 のような命令を出すことは可能ですか?
言語を覚えていくのは一人じゃ大変そうだなと思ってるんだけど、自分と同じ 初心者(同志)と刺激しあい励ましあえば頑張れそうな気がするんだよね。 そこで、メル友をつくろうかと思います。 ただ、おれは基本的にメールが苦手。苦手というか、あまりおもしろくない ものだと思っている。途中で飽きちゃうし。 だから、自分の勝手で相手を裏切るのは嫌なんで、なるべく純粋じゃない人と メル友になりたいんだけど。(無礼なやつとか) とりあえずおれの考えに共感した人、とりあえずメル友になってみる?
774 :
デフォルトの名無しさん :01/11/18 04:26
775 :
デフォルトの名無しさん :01/11/18 04:36
776 :
デフォルトの名無しさん :01/11/18 04:43
777 :
デフォルトの名無しさん :01/11/18 05:11
>>774 レスありがとうございます。execを使えばいいということなんでしょうか?
読んでみたのですがいまいちやり方が分からないので
出来れば簡単なプログラムの例をあげてはもらえないでしょうか?
778 :
デフォルトの名無しさん :01/11/18 05:37
入門用の本は終わったけど、そのあとどう勉強進めていけばいいか・・・ 一応基本を押さえたあとのオススメの本、勉強方法あったら教えてください。
779 :
デフォルトの名無しさん :01/11/18 07:16
やはり実践あるのみだろう。 街で強そうな奴見かけたら挑戦して来い。
780 :
デフォルトの名無しさん :01/11/18 07:39
ああ、プログラムの勉強法として本を良く読むのは間違い。 本は必要最低限の文法とかだけ見て、とにかくプログラム組む。 組んでる途中で必要になったら、その都度資料から探す。 言語覚えるのは製品2−3個出してからでも遅くない。 覚えなくても良いが。
>780 この本は780的にはどう? 「プログラム学習のための実践的例題100問」 ISBN 4-8222-0560-6
782 :
デフォルトの名無しさん :01/11/18 10:27
>>780 文法もコンパイラが教えてくれるからとにかくトライトライでもいいかもね
783 :
デフォルトの名無しさん :01/11/18 10:38
<RUBY>
784 :
デフォルトの名無しさん :01/11/18 10:48
すみません質問です。 一般的なJavaアプレット実行環境(IEなど)で、フォント名を直接指定する方法ってあるんですか? 対象はWinだけでいいので、ど〜しても直接フォントを指定したいのですが。。 new Font("MS 明朝", ...)のようにしてもうまくいきませんが。。裏技のようなものは ありますか?
785 :
デフォルトの名無しさん :01/11/18 15:38
JMenuBar に Separator ってあるんですか?
786 :
デフォルトの名無しさん :01/11/18 16:07
>>784 font = Font.createFont();
とか調べた?
787 :
デフォルトの名無しさん :01/11/18 16:24
>>786 様
それをキーワードに調べてみます。ネタ心者なもので、そうやってキーワードを
教えてくれるだけでありがたいですm(_ _)m
>>785 javax.swing.JSeparator。
つうか、他人に質問する前にAPIライブラリ
ドキュメント検索せいよ。
790 :
デフォルトの名無しさん :01/11/18 16:56
>>781 プログラムしていけばいい といっても何していいのか わからない人はそういうの見てガシガシと
書いていくのがいいんじゃない?ただね、例題を解けたところで、本に書いてある答えと自分の答
えが同じになることは100%ない。その点がわかっていればいいんじゃない?
791 :
デフォルトの名無しさん :01/11/18 17:02
>>789 javax.swing.JSeparator で、JMenuBar に垂直セパレータを挟めるのかな?
>>789 セパレータを入れたときに広がらない方法ってありますか? Menu いっぱいに項目が広がって見苦しいんです。
>>793 SeparatorUIを継承したサブクラスをインストールせよ。
あとは自分で調べろ。
795 :
デフォルトの名無しさん :01/11/18 20:27
796 :
デフォルトの名無しさん :01/11/18 20:34
>>795 たぶん、最近知って粋がってるだけだろうな
UDP通信ってみんな使ったことないの? う〜んage
799 :
デフォルトの名無しさん :01/11/18 21:02
windowsのアプリ作ろうと思ってるんですけど、 実行ファイルってどうやってつくるんですか?
800 :
デフォルトの名無しさん :01/11/18 21:19
>>798 使ったことあるかという質問なんですか?使えなくて悩んでるんですか?
>>799 212から追ってください。
jar のヘルプを読んでわからないときは再度質問してください。
>>797 教える気がないなら出ていってください。
// 煽られて反応するほうがみっともないですよ。
801 :
デフォルトの名無しさん :01/11/18 21:48
伸ばしたり縮めたりが自由にできるようなbyte列を扱うクラスってあります? ByteArrayInputOutputStream なんつーのがあれば便利なのに・・・
>>802 しょうがないので、自分で長さ不定なバイト列を扱えるクラスを作りました。
勉強不足ですみません。
頭いいやつ多すぎてムカツクよな こんな競争社会なんぞに巻き込まれてほんと悲しいよ おれは生まれたくて生まれたわけじゃねーっつーの 何が1番むかつくって、弱者に知恵を貸さない強者だよ 弱者は自力でがんばるしか自分を救う手だてが無いんだ 人間なんて全員エゴイストなんだ 誰か助けてくれ
>>804 強者も昔は弱者で、自分で苦労して脱出したのさ。
そのプロセスで、効率的に知識を身につけるやり方
そのものを身に付けているのさ。(しかもそのうち
の多くが「嫌だけど生活の為に仕方なく」だぞ。)
強者が弱者に何も言わないのは、本人の為だよ。
自分でもがけ。頑張れ。
なんでも暗記で乗り切ろうとする人は プログラマには向いてないと思う。 本人はやる気もあって努力家なんだろうけど
知識>知恵ですから 知恵は知識の組み合わせですから まあ中身を全部覚える必要など無いですけどね 参考書の目次覚えてるとか、スペシャリストの人脈リスト持ってるとか 解決への手段をいくつも持っている人が一番強いです
>806 どういうことか詳しく聞かせてほしい 実務に必要なことを要領よく覚えることが重要ってこと?
809 :
デフォルトの名無しさん :01/11/19 03:45
>>807 勘違いしてるし。
それは寿命の短いPGのパターンだよ。
>>586 >>600 返事が大変遅くなりました。ありがとうございます。
ただうまくいきません。
もう一度だけ質問させてください。
JFrameをContainerで2つに分けて、
JPanelを継承したクラスのコンストラクタを上下に貼り付けてます。
上部がキーボードになってて、キーはJButtonを並べてます。
上部のキーを押すとActionListenerで下部分を表示するクラスに
押されたキーが渡され、
下部のJPanelにその押された文字が表示されるJButtonが現れるように
したいんですが、
自分のはキーボード部のボタンを押して、文字列渡して
setVisible(false)をおこなっているのですが無反応です。
下部のJPanelのボタンが見えない状態から現れる もしくは見えてる状態からみえなくなるようにしたいのです。
812 :
デフォルトの名無しさん :01/11/19 04:01
外部コマンド実行のプログラムを書いたのですが、コンパイルしようとしたら 「Gaibu.java:3: 例外 java.io.IOException は報告されません。スローするにはキャッチ または、スロー宣言をしなければなりません。」 ってエラーが出ました。どう直せばいいのでしょうか?教えてください。 class Gaibu { public static void main(String args[]) { Runtime.getRuntime().exec("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE"); } }
XPでJAVAプログラミングしてる人いるの? なんかMICROのVMとSUNのプラグインいれて んだけどJ2SDKがちゃんと動いてくんないのよ
自己解決しました。
>>808 脳細胞は有限だ無駄遣いするな
googleやgrepに訊け
覚える必要があるならメモしろ、
ファイルにかけ。
お気に入りに入れろ
ほんとに頻繁に必要なことなら付箋をディスプレイに貼っとけ(パスワード以外)
「ここはとりあえず呪文だと思ってこうしとけ」と言われて納得するな。
原理がわかっていれば使い方を「覚える」必要のあることなどほとんどない。
ライブラリなどのブラックボックスで中の動作が隠されてていても
そうしたものには必ず「モデル」がある。
#中にはタコなのもあるだろうが少なくともタコがタコであることは見抜け。
たとえばファイルだ。
普段実際に触れていて実在する物のように感じているだろうが
これはOSや入出力ライブラリが作り出した仮想概念だ。
#ATAPIやSCSIにファイルを扱うコマンドなどない。
しかしファイルがどんなものか知っているから
ファイルを扱うライブラリでなにができるかも想像がつく。
スレッド、タスク、ストリーム、GUI関連もろもろ、ネットワークいろいろ
オブジェクト指向関係、近頃はやりのデザインパターン関連、等々
理解するべきことはたくさんあるし
暗記でどうにかなるようなものでもない。
細かいつづりや引数の使い方なんぞはhelpやmanに訊け。
>815 言ってることがよくわからんよ 寝る
818 :
デフォルトの名無しさん :01/11/19 05:24
>817 つまりは日経パソコンを見ていなさいという こった。
819 :
デフォルトの名無しさん :01/11/19 06:41
すまんが、プロポティーと、インタフェーイスの概念教えて、 優しくね、打たれ弱いんで・・・
820 :
デフォルトの名無しさん :01/11/19 06:45
>>819 打たれ弱いなら、LYCOSとかのほうがよかないか、
821 :
デフォルトの名無しさん :01/11/19 07:06
>>805 お前がなにを言おうとお前は弱者だ。
結局人にものを教えるほどの知識がないのなだからな。
822 :
デフォルトの名無しさん :01/11/19 07:08
とりあえずさ、「オレは知識があるんだ! お前には教えねぇ」ってヤツはひっこんでくれ ここはネタ心者スレなんで邪魔なんだよ。
弱者どうし仲良くやれよ。
826 :
デフォルトの名無しさん :01/11/19 09:09
>>810 586でも600でもないけど。
>自分のはキーボード部のボタンを押して、文字列渡して
>setVisible(false)をおこなっているのですが無反応です。
普通、JButtonのインスタンスに対してsetVisibleすれば、
ちゃんと消えたり出たりするよ。
「文字列渡して」ってとこが気になるけど、その文字列をもらった
方のクラスは、その文字列から、対象となるJButtonのインスタンス
をちゃんと得ることができているのかな。
827 :
デフォルトの名無しさん :01/11/19 10:24
初心者なんでお手柔らかに。 5行10列でimg1とimg2の画像を交互に表示させるにはどうすればいいの? 以下のソースをちょっと蛙といいらしいいんですけど・・・わからん。 /** 画像ファイルを交互に表示するクラス */ public class rei5 extends Applet { Image imgs1,imgs2; /** 初期化メソッド */ public void init( ) { imgs1 = getImage(getDocumentBase(),"img2.gif"); imgs2 = getImage(getDocumentBase(),"img1.gif"); } /** ペイントメソッド */ public void paint( Graphics g ) { int i; for ( i=1; i<=10; i++ ) { if ( i%2 == 0 ) // 1 g.drawImage( imgs1, i*60, 10, this ); else g.drawImage( imgs2, i*60, 10, this );} } }
828 :
デフォルトの名無しさん :01/11/19 11:10
>>827 元のソースは、1行分の表示だね。
これを5回繰り返すんだけど、そのときに、1行進むごとに
i*60,10 ってやってる10をイメージの高さ分増やす必要がある。
あと、元のソースは繰り返しが偶数ならimgs1を、奇数ならimgs2を
表示しているから、2行目ではそれを逆にして、3行目では元にもどして
としないと、交互にはならないね。
では、頑張って。
素人のパンティはどこで見れますか?
832 :
デフォルトの名無しさん :01/11/19 12:42
厨房な質問ですいませんが キーボードで打ったストリングがそのままアプレットのキャンバス上に 表示されるのってどうやるんですか? 1文字1文字打ったのがそのままでるようにしたいのですが。
「厨房な質問ですいませんが」は免罪符か? 少しくらい自分の頭使おうぜ。
>>832 まずはアプレットで文字を表示できる apllet を開発する。
そこでキーボードのイベントを取得する方法を勉強する。
聞きたい事は BufferedReader()でキーボード入力取るわけでしょ? ユーザーがリターン押すまで、それまで入力した文字は取れないでしょ? "abc"とタイプして、リターン押すまえにも、そのままタイプされたまま "abc"とアプレット上にでてくる。そういうのはどうやるんですか?
KeyListenerでキー入力を取ります。
>>835 BufferedReader()でキーボード入力取るわけでしょ?
んなこたぁない
JDKをインストールしたんですがjavac.exeをクリックしてもフォームを作る画面が出ません。 詐欺ですか?
>>835 キーを1つ1つ KeyListener で拾って自分でバッファに納めよう。
画面出力部は、そのバッファ内容を出力していればいいのでは?
>838 無知なやつは騙されやすいから気をつけようね
842 :
デフォルトの名無しさん :01/11/19 22:15
appletviewerで「アプレットは初期化されていません」と表示されて 先に進めません。これまではアプレットを見れたんですが。 誰か教えてください。
843 :
デフォルトの名無しさん :01/11/19 22:33
String型の 末尾の一文字を削除したいのですが、 既存のクラスを一つ呼ぶだけ、とかでは不可能ですか? なにか良い方法ありますか?
>>843 String aho="ahoboke";
String ho=aho.substring(0,aho.length()-1);
じゃだめ?
なるほど ありがとうございました 感謝
>>842 Appletを見れていたこれまでの状況と
見れなくなった今の状況で「変えた」or「変わった」ところが原因だ。
原因が判明しても理由が理解できない、納得いかなかったら
もう一度ここでもっと具体的に質問してみれ。
ちなみに「なにもしていないのに」なんてここで言い訳しても動くようにはならんぞ。
>>829 ありがとう!、すんごく参考になった。
あんた、いい人だ!
JScrollPaneクラスなどで「インテリマウス機能」は使えるのでしょうか? もし使えるのだったらどのように付け足すのでしょうか?
1.4βならスクロールするよ
スクロールとは書いてないや(´д`;)すまんこ インテリマウス持ってないし
WINDOWS XPってAutoexec.batが無いの? JDKのパスが通せません。
>>851 XPにはゲイツによって、JDKを使いにくくする様々な罠が仕掛けられている。
糞ゲイツめ・・・。 調べてみたんですけど、XPのAutoexec.batってコントロールパネルの システムの詳細設定の環境変数ってとこなんですか? ここに新規で追加すればいいんですか? その場合、変数と値ってとこに 変数=set 値=path=%path%;c:\jdk1.3\bin って入れるのでしょうか? ご教授お願いします。
レベル低すぎ、PGやめた方がいい
プログラミングするのに今までWin9xを使ってたのか。 忍耐力ついたろうな。
今日 初めてプログラミングの本買ってきて読んでるんで 質問したんですけど、ここはネタONRYなんですか?
ONLY・・・。
>>856 真面目な質問もOKですが、必ずネタを絡めてください。
いーからはやくおしえやがれ ゴルァァ!
860 :
デフォルトの名無しさん :01/11/20 05:13
>>859 しかたないな
SETは環境変数を設定するコマンド
PATHは環境変数
%PATH%は環境変数PATHの現在の値
変数 path 値 c:\jdk1.31.\bin で通ったーー!^・^
863 :
デフォルトの名無しさん :01/11/20 05:22
864 :
デフォルトの名無しさん :01/11/20 05:23
PATHが空だったならいいが
操作可能なプログラムまたはバッチファイルとして認識してくんない・・。 ぐす・・。
パソコンなんてだいっきらいだぁぁぁぁあ!!!!!
意地でもXPでJAVA勉強してやるもんね! 今にみてろよ
>>867 別人だって、バレバレなんですけど(藁)
>>863 ,864
ユーザー環境変数のPATHはシステム環境変数のPATHに追加されるから
大丈夫みたいよ。
870 :
デフォルトの名無しさん :01/11/20 05:48
ソケットプログラムを書いています。 Swing送信ボタンからソケットを持つオブジェクトの 送信メソッドを実行したいのですが、 送信の間インターフェースが固まってしまいます。 新たにSwing内での無名内部クラスでスレッドを作成し、 スレッドからメソッドを呼び出すようしましたがやはり固まります。 アドバイスお願いします。 public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); //メッセージ送信処理 //スレッドを作成し送信終了を待つ。終了確認後ローカルに反映。 if (source == SendButton) { Thread t = new Thread() { public void run() { connection.send("aaaa"); } }; t.start(); } }
>>871 なるべく頼らない方がいいと思う。
いろいろなJDKバージョンを試すときは却って邪魔だし。
873 :
デフォルトの名無しさん :01/11/20 07:17
>>872 逆だ。できれば msconfig でいじった方が安定する。
>>873 そうすか?うーん
まあ、やり方が複数あるのは決して悪いことじゃないんで
各自やりやすい方法を選択しましょう、ということで
つうかwin2000にmsconfigあるのか?
876 :
デフォルトの名無しさん :01/11/20 08:22
>>875 win2000 はシステムプロパティで、システム環境変数を変更する。
ユーザー環境変数にしとけ。
>>875 質問する前に調べよう。持っていないのなら別ですが・・・
879 :
デフォルトの名無しさん :01/11/20 08:59
親のprivateなメソッドは子から呼べる?
呼べないみたいだね。 子供からは呼べるけど他人からは呼べない、 そんなメソッドはどうやって作ればいいかな?
protected
>>882 おお!
・・・でも同じパッケージ内だと呼べちゃうんだね。
884 :
デフォルトの名無しさん :01/11/20 10:23
>>879 昔
>>879 さんがほしがっている修飾子 private protected ってあったけれど。(protected privateかな?)
消えました。 protected で我慢しろってことか。
とりあえずprotectedで我慢します あとは気をつけてコード書けばいい話だし
887 :
デフォルトの名無しさん :01/11/20 15:51
分布図を表示するプログラムを作っていますが、 配列の処理をどうしてよいか分からず困っています。 下記のプログラムだとa[]とb[]の中身が空っぽのようです。 どなたかアドバイスをよろしくお願いします。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Test extends Applet implements ActionListener { int[] x = {10,30,50}; int[] y = {30,60,90}; Button b; public void init() { b = new Button("表示"); b.addActionListener(this); add(b); } public void actionPerformed(ActionEvent ae) { Frame f1 = new Frame(); GraphCanvas gc = new GraphCanvas(); for(int i=3;i<3;i++){ gc.a[i] = x[i]; gc.b[i] = y[i]; } gc.setSize(200, 200); f1.add(gc); f1.show(); f1.setSize(300, 300); } class GraphCanvas extends Canvas { int[] a = new int[3]; int[] b = new int[3]; public void paint(Graphics g) { Dimension d = getSize(); for(int i=0;i<3;i++){ g.drawString("●",d.width/2+a[i],d.height/2+b[i]); } } } }
またしても長すぎました。スマソ
>>888 x = {10,30,50};
y = {30,60,90};
をコンストラクタに入れるなりinitに入れるなりすればいいんじゃないの?
890 :
デフォルトの名無しさん :01/11/20 16:33
>>889 xとyを入力してから、表示したいのです。
値が毎回変わるので、どうやって渡してよいのか困っています。
イメージ的にはC言語のように関数を呼ぶときに引数として配列を
渡したいです。
初心者ですみません。
ただのケアレスミスじゃん。 こんなバグ取りを人にやらせるものではないよ。 System.out.printlnはさみながら どこまで自分の意図どおりに動いているか確認すれ
>>891 引数として配列を渡せばいいジャン
int[] x = {1,2,3};
foo( x );
--------
void foo( int [] arg_x ){
//hogehoge
}
>>826 さんありがとうございます。
-------------------------------------
public class JPanel1 extends JPanel{
JPanel2 JP2 = new JPanel2 ;
JButton JB1 = new JButton("1") ;
public JPanel1(){
JB1.addActionListener(new JB1Listener() ) ;
add(JB1) ;
}
class JB1Listener implements ActionListener{
public void actionPerformed(ActionEvent e){
JP2.InputKey(JB1.getText()) ;
}
}
}
-----------------------------------------
public class JPanel2 extends JPanel{
JButton JB2 = new JButton("") ;
public JPanel2(){
add(JB2) ;
JB2.setVisible(false) ;
}
public void InputKey(String input_key){
JB2.setText(input_key) ;
JB2.setVisible(true) ;
}
}
----------------------------------
こんな感じに作ってあります。
JPanel1のボタンを押すと
JPanel2のボタンにその文字列が表示され
隠れていたのが見えるようにしたいのですが。
895 :
デフォルトの名無しさん :01/11/20 17:40
もうね、アホかと。馬鹿かと。 そういえば昔 「うごかねえゴルア!」とバグ報告出してきた奴が ソースを丸ごと印刷して来やがって よくよく見ると if (i = 1) とかやってた時があった。
>>896 俺ね、今日ね。JavaScript が動かないって相談受けたんです。後輩に。
そいつが丸ごと印刷してきやがったコード見たら。
// カウンタ変数の初期化
intArpCount == 0
intDefCount == 0
ってかいてあったのよ。
もうね、アホかと。馬鹿かと。
小一時間問い詰めたい、っていう気持ちがはじめてわかったさ。
897 :
デフォルトの名無しさん :01/11/20 19:54
Javaでローマ字で日本語入力、漢字変換可能な ソフトウェアキーボードって作れます? もしくはすでにあります? 英語入力、ひらがな入力のやつはすぐにできたのですが、 まったくわかりません。 どうかよきアドバイスを。
898 :
デフォルトの名無しさん :01/11/20 20:17
JAVAで作ったエディタをUNIXで動かした場合、日本語入力をするには どうしたらいいのでしょう。 UNIXはSOLARISです。
>>898 どうしたらって、IMEで入力すればいいです。
canna
Wnn
Atok
903 :
マルチです :01/11/20 22:42
GridBagLayoutで質問です。 contraits.gridwidth = GridBagConstraints.RELATIVE; と contraits.gridwidth = GridBagConstraints.REMAINDER; の違いがわかりません。 RELATIVEは次の次のコンポネートで次の行へ。 REMAINDERは次のコンポネートで次の行ってことですか? //Label Practice constraits.gridwidth = GridBagConstraints.RELATIVE; ←@ label1 = new Label(""); gridbag.setConstraints(label1,constraints); add(label1); //Button constraits.gridwidth = GridBagConstraints.REMAINDER;←A button1 = new Button("Click here!!"); gridbag.setConstraints(button1,constraints); add(button1); 自分の解釈で合っているなら、@でもAの場合でも表示は同じになると思うんですが、 @だけの場合は横に並び、Aの場合は縦に並んでしまいます。 どういうわけなのか教えてください。
ていうかGridGag使わないほうがいいよ。 他のレイアウトの組み合わせで問題なし。
905 :
マルチです :01/11/20 22:54
>>904 そうなんですか?なんで?
理由が知りたいです。
あ、あと上にこれがついてます。
text1 = new TextField(20);
gridbag.setConstraints(text1,constraints);
add(text1);
constraints.gridwidth = GridBagConstraints.REMAINDER;
area1 = new TextArea("",10,20,TextArea.SCROLLBARS_VERTICAL_ONLY);
gridbag.setConstraints(area1,constraints);
add(area1);
1列目はREMAINDERでいいのに、なんで二列目はRELATIVEなんだろ・・・。
縦が行で、横が列ですね。
>>903 は逆に読んでください。
906 :
マルチです :01/11/20 22:58
あと上にこれがついてます。
text1 = new TextField(20);
gridbag.setConstraints(text1,constraints);
add(text1);
constraints.gridwidth = GridBagConstraints.REMAINDER;
area1 = new TextArea("",10,20,TextArea.SCROLLBARS_VERTICAL_ONLY);
gridbag.setConstraints(area1,constraints);
add(area1);
1列目はREMAINDERでいいのに、なんで二列目はRELATIVEなんだろ・・・。
縦が行で、横が列ですね。
>>101 は逆に読んでください。
907 :
マルチです :01/11/20 23:14
>>894 正直いってソースがいまいち理解できないけど、でも、JPanel1の中にJPanel2を
もっているのは、なぜなの。
パネルが表示されるためには、フレームなどにaddされないとだめだけど、JPanel1
をaddしたからって、そのフィールドであるJPanel2が見えるわけじゃないよ。
意図していることを実行するには、まず、Jpanel1の中にはJPanel2の参照だけを
持つようにする。つまり、JPanel1のコンストラクタに、JPanel2をパラメータとして
渡して、JPanel2にアクセスできるようにする。JPanel2は変えなくていい。
public class JPanel1 extends JPanel{
JPanel2 JP2 ;
JButton JB1 = new JButton("1") ;
public JPanel1(JPanel2 JP2){
this.JP2 = JP2;
JB1.addActionListener(new JB1Listener() ) ;
add(JB1) ;
}
以下略。
で、まずJPanel2のインスタンスjp2Objを作ってフレームにaddする。
次に、JPanel1のインスタンスをjp2Objを渡して作る。
new JPanel1(jp2Obj) これをフレームにaddする。
ま、そんな感じ。
375 名前:デフォルトの名無しさん 投稿日:01/11/21 10:11 素朴な疑問なんですが、JSPって、JAVAがかける人に便利な PHP みたいなものと考えていいですか? コンパイルして動作する Servlet と違ってそんなにメリットがあると思えないんですが。PHP で作るよりは 文法がJAVAに統一されて楽かなぁ?って思ったんだけど、JSPの良さってある?
>>909 テンプレート作ってコピペで済ますのに楽。
他に利点は、特に無い。
前から思っているんだが、最近は特にクライアントマシンの 能力が余ってる時代なのに、何でサーバーサイドに負荷かけ るんだ? ブロードバンド云々のこともあるし、これからはJavaなら AppletとかWebStartでクライアントアプリケーション配信 とか、そういうファットクライアントの構造のほうが流行る んじゃねえのか? いつまでもWebブラウザの貧弱な入出力インターフェイスで すむはずが無いと思うが。
わざわざ JSP のために鯖たてるのは資源の無駄。
914 :
デフォルトの名無しさん :01/11/21 10:45
>>911 クライアントがどのくらい対応するかですな!
>>914 単にJavaでアプリケーション書くだけだぞ。
なにをどう対応させる必要があるんだ?
ややこしいサーバ環境構築するより楽だぞ。
JavaでGUIアプリはソース量と実行サイズが馬鹿でかくなっちまうけど。
916 :
デフォルトの名無しさん :01/11/21 10:54
>>915 > 単にJavaでアプリケーション書くだけだぞ。
だれが?
> なにをどう対応させる必要があるんだ?
どこで、Appletとかアプリケーションを実行するの?
> ややこしいサーバ環境構築するより楽だぞ。
プログラマーはな
> ややこしいサーバ環境構築するより楽だぞ。 クライアント環境のほうがはるかにややこしいのはわかってるか、厨房。
いつもお世話になってます。 環境は、jsp、Beans、JDK1.3 などトムキャットとアパッチです。 セッションはIDとパスワードを記憶しています。 ログイン画面からセッションを発行し別のページに飛び入力後 セッションを開放し、ログインページに戻った後に、再度ログ インをすると、IEのインターネット一時情報ファイルを読んで しまい困ってます。 再ログインやログを飛ばす際または、セッション解放時に 必ずページをリロードさせる良い方法などありましたら お教えください。
919 :
デフォルトの名無しさん :01/11/21 12:53
919>> 有難うございます。それは、 「最初から、IEにキャッシュさせないようにログインさせる」 と言うことですか?
921 :
エッチマン :01/11/21 14:12
プロパンティの使い方が分からないです。 try{ ResourceBundle bundle = ResourceBundle.getBundle("ero"); System.out.println(bundle.getString("key1")); }catch(Exception e){e.printStackTrace();} こういうコードを書いて、ero.properties を key1=soap という一文で生成したのですが java.util.MissingResourceException: Can't find bundle for base name ero, locale ja_JP という例外が出てしまいます。 ロケールなんて正直どうでもいいのですが、どうすればよいですか?
パンティはかぶってよし!
923 :
エッチマン :01/11/21 15:22
>>921 つづき
ero.properties をclasspathのとおたっところにおいても
javaとかjavawとか置いてある所に置いてもだめでした
壊れてんのかな
924 :
デフォルトの名無しさん :01/11/21 16:47
基本的な質問でもうしわけありません。 イベントについての質問です JAVAではイベントの定義イベントハンドラの追加、イベントが起こったことの通知が できるようなのですがgoogleなどで粘ってしらべてみましたが、どうしても分かりません。 GUIのことではなくて、例えば通信プログラムにおいてパケットを受け取った ことをしらせパケットの種類によって イベントハンドラに適切なものを追加しイベントハンドラでパケットで処理する、 という事を考えています。どのような手順でイベントを作成すればいいのでしょう?
925 :
エッチマン :01/11/21 16:52
Stackクラスってスレッドセーフですか?
>>925 ,,v‐v-/l_ (⌒)プンプン
_「/ ̄ く /
lYノノ/_ノ l_ヽ))
<イ( l l )l> / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
<|)'|l、" o ノ|l < エッチなのはいけないと思います!
,(ヨリ<>o<>リ'] \______________
|ト‐!]- ム - i']l
ヽ_ノv_ _l/ ノ
. ノ[//‐─‐/_/、
( /ε|, (フl3 \
,-( εl___l3 )
└-\`^^^^^^´ノ
 ̄ ̄ ̄ ̄
セーフダケドネ
927 :
エッチマン :01/11/21 19:15
>>926 サンクスです。
PusherとPoperというふたつのスレッドを作って
Pusherがスタックに積んでいき Poperが取り出していく
というのを作ろうとしてるんだけど、むずかしいね。
コンストラクタで両方にStackを渡してやるとロックされちゃう?
こういうときは一般的にどう実装するんでそ
928 :
デフォルトの名無しさん :01/11/21 19:47
>>927 >コンストラクタで両方にStackを渡してやるとロックされちゃう?
ちと意味不明。PusherもPoperも、Stackへの参照がないとアクセス
できないから、当然、コンストラクタで渡していい。
Stackはいくらでもオブジェクトを入れられるから、Pusherはいつでも
pushできるけど、PoperはStackが空だとPopできない。
考えることは、そこをどうするかくらいだよね。
>>928 えーとすみません。解決しました。
試験プログラム作ったとき、スレッドを開始するつもりで
start() を呼ばずに run() を呼んでました。
ボクが全面的にバカでした。ごめんなさい。
Stackの方は、ちゃんと動きました。
empty()でチェックもできることを確認しました。
>>908 さん
マジでありがとうございました。参考にさせていただいて
プログラム動きました。
本当に助かりました。
931 :
デフォルトの名無しさん :01/11/22 02:09
システムのドライブ名を得たいのだけれど、 import javax.swing.filechooser.*; import java.io.*; public class Test1 { public static void main(String[] args) { Test1 t = new Test1(); } public Test1() { FileSystemView fsv = FileSystemView.getFileSystemView(); File[] f = fsv.getRoots(); for (int i = 0; i < f.length; i++) { System.out.println(i + ":" + f[i].toString()); } } } なぜか出てきたのは”0:デスクトップ”これひとつだけ・・・ なんで・・
932 :
デフォルトの名無しさん :01/11/22 02:32
動かしてみたけど、俺のは 0:A:\ 1:C:\ 2:D:\ と出たよ
Win98+JDK1.3だけどね。
934 :
デフォルトの名無しさん :01/11/22 02:40
環境のせいなのかな? Win2k+JDK1.4beta2です。 ちなみにドライブはAからJまであるはず。 とりあえず下でドライブ名取るのはできました。 ・・・良しとしよう! public Test1() { FileSystemView fsv = FileSystemView.getFileSystemView(); File f = fsv.getParentDirectory(new File("C:")); File[] str = f.listFiles(); for (int i = 0; i < str.length; i++) { System.out.println(str[i].toString()); } } ありがとうございました。
JDK1.4からはエクスプローラ表示にディレクトリ構成が合わせられてるのか コントロールパネルとか読めるのか?
936 :
デフォルトの名無しさん :01/11/22 05:28
プルダウンしたメニューがキャンバスの裏に隠れてしまいます。 これはswingとawtを混在して使っているため、と聞きましたが、canvasを 使わないわけにはいかないのですが、解決策は、Menuをawtを使って作る より他無いのでしょうか?
937 :
デフォルトの名無しさん :01/11/22 06:30
アプレットって何? コンパイルって? MD―DOSプロンプトは? 変数? 情報キボ−ン
941 :
デフォルトの名無しさん :01/11/22 08:31
>>937 > アプレットって何?
Apple Macintosh のアウトレットショップ。
> コンパイルって?
英語を日本語にするなどの翻訳のこと
> MD―DOSプロンプトは?
あるよ。
> 変数?
がなに?
942 :
デフォルトの名無しさん :01/11/22 10:47
javaでVBでいうLeftB関数を実現するにはどうしたらいいでしょうか? ご教授お願いします
>>942 LeftBの仕様を思い出せば自ずとアルゴリズムが出てくるだろう。
JDK1.3.1ダウンロードしました。 コンパイラにパスを通したいのですが、 Autoexec.batへの記述方法がよくわかりません。 どなたか教えてください。
ちなみに、現在のAutoexec.batの内容は下記の通りです loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys SET PATH=C:\PERL\BIN;"%PATH%"
>943 そんなこと言わず、ヒントだけでも教えてくださいよ。 getCharsとか使いますか?
947 :
デフォルトの名無しさん :01/11/22 12:01
JDKをインストールしたディレクトリを「JDK1.3.1」と 仮定すると、 SET PATH=C:\PERL\BIN;"%PATH%" の最後に追加して SET PATH=C:\PERL\BIN;"%PATH%;C:\JDK1.3.1\BIN にすればパスが通るはず。 JDK.1.3.1のところは実際にインストールしたディレクトリ名 に適時変えてくれ。
948 :
デフォルトの名無しさん :01/11/22 12:02
>>942 Java使いが全員VBの関数を知っている前提のチミが間違ってる。
まず、LeftB関数がどういう動作をするかを記述せよったら記述せよ。
949 :
デフォルトの名無しさん :01/11/22 12:04
>947 ありがとうございます。 さっそく試してみます。
ゴメソ、947にはウソがあったわ。 SET PATH=C:\PERL\BIN;"%PATH%;C:\JDK1.3.1\BIN じゃなくて SET PATH=C:\PERL\BIN;"%PATH%";C:\JDK1.3.1\BIN ね。ダブルクォーテーションが抜けとったがね。
>951 とおりました!ありがとうございました。 一応、最後のBINの後ろに;をつけたのですが、 いいんですよね?
953 :
デフォルトの名無しさん :01/11/22 12:27
>>952 おめでとう、頑張ってJavaを習得してください。
;をつけても問題ないっす。パス名を区切るためのものですから。
955 :
デフォルトの名無しさん :01/11/22 15:24
ここは使い切る?
過去の話題に関する事ならこのスレでやった方が良いけど、 新しい質問なら新スレへ行った方が良いと思うよ。 残り少ないし。
957 :
デフォルトの名無しさん :01/11/23 17:29
for文のinitialization sectionで変数宣言すると変数の有効範囲はforブロック内になるんですか? 本で勉強してたらいつの間にか使われてたんだけど..
ありがとうございます.
960 :
デフォルトの名無しさん :02/01/23 14:52
jdk1.3.1_01でアプレットを表示する際に画面がちらつくことがあるんですが 解消する方法が有れば教えて下さい。ちなみにフレームの上にパネルを置きその 上にボタンを置いてます(ボタンがちらつく)。ブラウザはネスケの4.5です。
sage
962 :
tk2000 :02/02/08 23:17
インストール方法の手順に従ってWIN2000に「j2re-1_3_1_02-win-i」をインストールしようとすると 「ファイルC:DOCUME~が見つかりません。パス名が正しいか、必要な・・・」っ出てしまいます。 どなたか対処方法をご存知の方いらっしゃいませんか?未熟者なので教えてください。