ネタ心者歓迎!今更ながらにJavaを学ぼう! その弐

このエントリーをはてなブックマークに追加
>>900 Javaでも考え方は同じ
902デフォルトの名無しさん:01/11/02 13:42
>>897
意味不明。
書くときに座標の数値決めるのでは?
903デフォルトの名無しさん:01/11/02 18:55
>>899
>>901
mousePressedでフラグをonにしてmouseReleasedでoffにして、
paintメソッド内でフラグがonであれば押されたときの処理をする。
とやってみてもやっぱりダメでした。
マウスをキャプチャできないとメッセージが送られてこないわけだから、
イベント処理できないような・・・・。
904デフォルトの名無しさん:01/11/02 20:02
>>903 mousePressedとmouseReleasedのときに
フラグを変えるだけじゃなくて
表示クラスのrepaint()をちゃんと呼んでるか?

表示したいデータ(このばあいボタン押下フラグ)が変化したら
Viewに通知してやんないと
Viewが再描画できないだろ。
このへんMVCモデルの基本だからちゃんとやってみ?
905デフォルトの名無しさん:01/11/02 21:33
>904
はい。やっています。>repaint()
mousePressedはマウスが押された瞬間に一度だけ呼ばれるイベントですよね。
ということは1度だけ再描画されるだけのような気がします。
タイマー割り込みで定期的に呼び出すメソッドを作って、
そこでrepaintすれば上手くいく気がしますが、なんとなく不恰好のように思うしなぁ。
>>895
それ以外(ボタンを押したままでマウスが少しでも動く)は
イベント拾えるんだから、それで何とかできへん?

mouseMotionListener#mouseDragged
907895:01/11/02 21:43
>>906
すでに現状でその状態なんです。(w
ただマウスをぐりぐり動かさないと処理できないっていうのはスマートじゃないし、
タイマー割り込み入れるのもなんか力技な気がしたので、
他にもっとストレートな方法があるのかなーと思ったんです。
もう少し調べてみます。ありがとう。
908  :01/11/02 22:18
>>907
アプレットは作った事無いから良く分からんけど、
これじゃ駄目なの?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseTest extends JApplet {
boolean isPressed;

public MouseTest() {
addMouseListener(new TestListener());
}

public void paint(Graphics g) {
g.clearRect(0, 0, 100, 100);
Color c = Color.blue;
if(isPressed) c = Color.red;
g.setColor(c);
g.fillRect(0, 0, 100, 100);
}

private class TestListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
isPressed = true;
repaint();
}
public void mouseReleased(MouseEvent e) {
isPressed = false;
repaint();
}
}
}
909895:01/11/02 23:01
>>908
マウスが押された場合の処理というのが、
画面に表示されている画像をスクロールすることなんです。
書いて頂いた例では
押されている状態→赤
押されていない状態→青
となりますが、
押されている状態で表示する画像が静的なものではなく、
押されている間中ずっと変化するものだった場合には、
やはりイベント処理が必要だと思うんです。
(例えば
押されている状態 → 画面の色がくるくる変わる
押されていない状態 → 変わらない
といったもの)
タイマー割り込みを調べてそっちでやってみることにします。
どうもでした。
910897:01/11/02 23:22
>>902
マウスでCADで絵を描く感覚で、それを座標の数値に
変えるプログラムの作り方。
911908:01/11/02 23:24
>>909
じゃあ、これじゃ駄目?

//<Applet code="MouseTest.class" height=100 width=200></Applet>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseTest extends JApplet {
  private boolean isPressed;
  private Color c;
 
  public MouseTest() {
    addMouseListener(new TestListener());
    new TestThread().start();
  }
 
  public void paint(Graphics g) {
    g.setColor(c);
    g.fillRect(0, 0, 100, 100);
  }
 
  private class TestListener extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
      isPressed = true;
    }
    public void mouseReleased(MouseEvent e) {
      isPressed = false;
    }
  }
 
  private class TestThread extends Thread {
    private final Color[] colors = {
      Color.red, Color.yellow, Color.blue
    };
    public void run() {
      int i = 0;
      while(true) {
        if(isPressed) {
          int index = i % (colors.length);
          c = colors[index];
          i++;
          if (i == 3) i = 0;
          repaint();
          try {
            sleep(200);
          } catch (Exception e) {}
        }
      }
    }
  }
}
>>909
イベントハンドリングに対するスレッドの割り当ては
1個しかなされていないし、その部分の変更もできない。

だから、そういった処理を行うためにはどこをどうやっ
たところで、最低1個スレッドを新しく作ることにならざ
るを得ないだろうねえ。(イベントハンドラスレッドに
wait()かけるのは禁止行為。)
913908:01/11/02 23:30
>>911はsleepの場所をifの外にずらさんと、負荷が多くなる(汗
914895:01/11/02 23:37
>>911
>>912
Timer(swingじゃない方)を見てたんですけど、これもすんなり実装できそうにないですね。
アドバイスありがとうございます。
911を参考にさせていただいて、新しいスレッドで処理する方向でやってみます。
多謝多謝。
915デフォルトの名無しさん:01/11/03 00:19
>>913
>sleepの場所をifの外にずらさんと、負荷が多くなる
というより、sleepはそのまま描画時だけにして、
elseで(synchronizedして)wait()した方が負荷が少ないはず。
MouseTestクラスでスレッドの参照を保持して、mousePressedで
その参照で(synchronizedして)notify()する。
916180:01/11/03 01:21
(・∀・)コチコイYO!

http://pc.2ch.net/test/read.cgi/tech/1003569074/l50
ネタ心者歓迎! 今更ながらにJava相談室
917908:01/11/03 10:18
>>915
その通り!!
918デフォルトの名無しさん:01/11/03 13:10
>>910
>マウスでCADで絵を描く感覚で、それを座標の数値に
>変えるプログラムの作り方。
それは逆だよ。マウスで絵を描くには、座標の数値が必要なの。
マウスのクリックしたポイントの座標値は、プログラムで拾えるから
その座標値をもとに絵を描くんだよ。
919891:01/11/03 14:01
898さんどうもありがとう♪
920デフォルトの名無しさん:01/11/20 23:49
Javaを始めて1ヶ月にも満たない超ど素人です。
Win95のマシンにJDK1.3.1+Forteをインストールしたのですが、
JavaのVMがうまく起動できないようなのです。
Forteを起動したり、コンパネからJavaのPlug-Inの設定をしようとすると
必ずjavaw.exeのページ違反が起こってしまいます。
IMEの重複などは調べて対応したのですが、何が悪いのか分からず
戸惑っています。

javacやjavaなどのコマンドラインからプログラムを動かすことは
できるのですが、何がいけないのかわかりません。
何か解決のヒントをいただけたらと思います。
よろしくお願いします。

ちなみにIEは5.5SP2ですが関係あるかはまだよく分からないです。
921デフォルトの名無しさん:01/11/20 23:52
apacheとtomcatをwindowsMEに連携させてインストする方法
教えて下さい、説明してあるサイトをご存知でしたら教えて下さい。
お願いします。
>920
>Win95のマシンにJDK1.3.1+Forteをインストールしたのですが
今だにWin95を使っているところに問題があるのでは?
不具合の原因は知らんが、これを機会にOSをWin2000にでもしたら。
923初心者:01/11/21 00:01
本当にネットとわーどとえくせるしかPC利用のない初心者です。
JAVAで検索プログラムの作成は可能ですか?
自分の勉強した事に関する簡単な辞書を作りたいのですが…。
924920:01/11/21 00:02
そうしたいのはやまやまなのですが、会社のマシンということもあって
OSに関しては全く自由が利かないのです。(涙
925デフォルトの名無しさん:01/11/21 00:03
>>923

プログラミング言語ならPerlが向いていると思う。
926初心者:01/11/21 00:06
>925
ありがとうございます。早速情報を集めなおしてみます
927デフォルトの名無しさん:01/11/21 00:40
ボタンを上の方はgrid
下の方はflowみたいに
レイアウト2つ併用できますか。
928367:01/11/21 01:11
>>925
同意。

>>927
Panel使え
929デフォルトの名無しさん:01/11/21 22:41
>>921
Meでも9x系だから、95/98向けのサイトでも同じじゃない?
起動するbatの設定に気をつければNT系解説サイトでもいけるかもね。
930デフォルトの名無しさん:02/01/09 20:42
ms-dosプロンプトで
javac chinko.java
ってやるとエラーがいっぱい出て全部見えないで消えちゃうんですが
助けてください。
932Java初心者:02/02/04 20:53
Javaで「Hello World」(笑)
http://logos.jp/development/javahello/
933誰か教えて、、、:02/02/07 12:24
{10,5,7,22,25,13}
を小さい順に並べるプログラム。
ならべく簡単なものを教えてください。

int[] array = {5,7,10,13,22,25};
935誰か教えて、、、:02/02/07 12:41
、、、
かなりの初心者なんで、
おてすうですが、全部おしえてもらえたら、、、
始めから終わりまでを
宿題くらい自分で考えろボケ
これでもくらえ

int[] a = {10,5,7,22,25,13};
int[] b = new int[a.length];
b[0] = a[1];
b[1] = a[2];
b[2] = a[0];
b[3] = a[5];
b[4] = a[3];
b[5] = a[4];
937デフォルトの名無しさん:02/02/07 12:57
ByteArrayOutputStream bo なんてのを定義したら。
bo.write(int character); で文字を取得できるでしょう。
今度はboに入った内容をInputStreamとして使いたい。

つまりフィルタのようなプログラムを作りたいんだけど、
バイト配列出力ストリームを、入力用に転用できるか?
マジレススマソ

>>933
import java.util.Arrays;
//省略
int[] arr = {10, 5, 7, 22, 25, 13};
Arrays.sort(arr);


Arraysが何をしてるかについては自分で調べれ
http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html
939デフォルトの名無しさん:02/02/07 13:11
>>937
ByteArrayInputStreamを使えばOK
941デフォルトの名無しさん:02/02/07 13:13
>>939
もう少し詳しく教えてください。InputStreamReaderに載せたい
InputStreamReader in = new InputStreamReader(bo, "EUC_JP");
どこを修正すればいい?
942939:02/02/07 13:37
>>941
InputStreamReader in = new InputStreamReader(
  new ByteArrayInputSteram(bo.toByteArray()), "EUC_JP");
943ほげほげ:02/02/07 13:40
>>941
>InputStreamReader in = new InputStreamReader(bo, "EUC_JP");
937をみると"bo"はOutputStreamだから、それではコンパイルエラーになるでしょう。

boからtoByteArray()かtoString()でboの中身を取りだし、
それからInputStreamを生成してInputStreamReaderに渡せば良いでしょう。
944デフォルトの名無しさん:02/02/07 14:00
>>942-943
一回バイト配列に落としてしまうわけなんですね。
ファイルに落とすよりはマシだけど、
もう少し空中戦でできないものか?
945烏龍茶:02/02/07 14:12
>>944
空中戦やりたいなら >>940 のように PipedOutputStream/PipedInputStream
使って、出力側か読み出し側ストリームを別のスレッドに担当させれ。
946烏龍茶:02/02/07 14:32
ちょっと作った。長文失礼
-----------------------------
import java.io.*;

public class a{
  public static void main(String[] args) throws Exception{
    PipedOutputStream out = new PipedOutputStream();
    PipedInputStream in = new PipedInputStream(out);
    Thread t = new DataGenerator(out);
    t.start();
    while(true){
      int ch = in.read();
      if(ch < 0) break;
      System.out.write(ch);
    }
    return;
  }
}

class DataGenerator extends Thread{
  private PrintWriter out = null;
  public DataGenerator(OutputStream o){
    out = new PrintWriter(new OutputStreamWriter(o));
    return;
  }
  public void run(){
    for(int i=0; i<100; i++){
      out.println("hello, world: " + i);
    }
    out.close();
    return;
  }
}
----------[結果]-----------
hello, world: 0
hello, world: 1
hello, world: 2

hello, world: 99
947誰か教えて、、、:02/02/07 14:51
{10,5,7,22,25,13}
をifとforを使って小さい順に並べるプログラム。
ならべく簡単なものを教えてください。
全部、初心者なもんで、、、


948ほげほげ:02/02/07 15:18
>>947
貴方のパソコンのにSDKが入ってるなら
%JAVA_HOME%\demo\applets\SortDemoに、サンプルがあります。
いくらまで出せますか?
>>947
検索くらいしてから質問しましょう。
ttp://myhome.hananet.net/~crazyghost/ghost.htm
951デフォルトの名無しさん:02/02/10 22:12
>>947
>>950のURLにはアクセスしない方が賢明です。
もうアクセスしてしまったかもしれないが、念のため。

でも、「検索くらいしてから質問しましょう。」には同意。
初心者なら、まず本をきちんと読むとか、Yahoo!とかで検索してからに
しましょう。
あるいは>>949の言うように、金を払いましょう。
952ひみつの検疫さん:2024/08/16(金) 23:47:35 ID:MarkedRes
汚染を除去しました。
953あぼーん:あぼーん
あぼーん
954  :02/02/10 22:58
荒らしですか?
955デフォルトの名無しさん:02/02/11 11:43
嵐のせいかわからないが
このスレを2chブラウザで読み込むと、ノートンアンチウィルスがウィルス警告をだすね(w

ウィルス名:JS.Exception.Exploit
956デフォルトの名無しさん:02/02/11 12:26
ところでJAVAを覚えたら、自然とJavaScriptも使えるように
なったりしますか?まだどっちもやったこと無いんですが。
文法的に似てるけど挙動やお作法がかなり違うからなんとも…。
つうか JavaScript って名前やめてほすぃ。
Bluetteって開発終了したのかなぁ…
軽いから良かったのに…。
959デフォルトの名無しさん:02/02/13 01:39
スレッドで無限ループさせてて、
ボタンを押したらループから抜けるようにしたいんですけど
ボタンが押せなくなってるんですね。どうしたらボタン押せますか?
なぜ旧スレが上がってんだろ。
961のほほん名無しさん:02/02/13 02:13
このスレいやだよぅ
ノートン先生に怒られるよ。
datファイルにウイルス憑いてるって言われたよぅ…
953のをメモ帳にでもコピペして、保存したものをスキャンしたら
ウィルスはけーんになるよ(w
963烏龍茶:02/02/13 21:41
953 の削除依頼、失敗! (藁
ウイルス感染するわけでもないからね。
965エテ公:02/02/16 01:06
完璧なPC作ったから、メルボム・ウィリー送ってみて!チェック用大量にキボンヌ!
ac.jp ってなんだっけ?
大学・研究機関なんじゃネーノ?
といってみるテスト。
968どなたか教えてください:02/05/03 00:04
はじめまして。
私、プログラミング自体全くの初心者の者です。
最近、プログラミングとは、どういうものか体験したくて、Javaの本等でトライして
おります。

An EXCEPTION_ACCESS_VIOLATION exception has been detected in native code
outside the VM
Program counter=0x5f3b2fcd
というメッセージがでて、上手くいかなくなるケースが多いのですが、原因、対処方
法をご存知の方はいらっしゃいますでしょうか??

何卒、ご指導の程、よろしくお願い申し上げます。
>>959
スレッドを勉強しなさい
そうすればわかる
それがいやならSwingじゃなくてAWTにしときなさい
970デフォルトの名無しさん:02/05/03 00:41
>>968

Linux とか Windows2000 とかを使うとうまくいくかもよ。
971初心者です:02/05/06 01:59
私、初心者の者ですが、win98,JDK1.4,Tomcatの環境を構築をトライしております。

現在、Tomcatのインストールが終了し、Tomcatの起動を実施したところ、起動しません。
you must set JAVA_HOME to point at your java Development kit installation
となっております。

Autoexec.batの環境設定内容を
SET TOMCAT_HOME =C:\jakarta-tomcat-3.3.1
SET JAVA_HOME =C:\j2sdk1.4.0
としましたが、再起動後、なぜか、
SET TOMCAT_HOME =C:\jakarta-tomcat-3.3.1
SET JAVA_HOME =C:\j2sdk1.4.0
C:\essolo.com
となっておりましたが、この辺がおかしいのでしょうか??

何卒、よろしくお願いします。
972デフォルトの名無しさん:02/05/06 02:01
ネタ心者って何?
初心者を装った上級者?
>>971
糞スレをおあげにならないで
次スレ

初心者歓迎! Java相談室 その8
http://pc.2ch.net/test/read.cgi/tech/1020453823/
975デフォルトの名無しさん:02/05/10 23:20
もうすぐ1000か…
もう、終わったスレだから、思い出にふけるよ。

最近やっとJScrollPaneという存在を知ったんだ。
swingだと、スクロールバーがなんでねーんだ!と文句言うところだったよ。
ほんと、世の中だんだん便利になる。
もう少しで、地道にスクロールバーを作るところだった。
でも、スクロールバーって結構使うから、もっと簡単にさらっと出来て欲しかった…。

まあ、なんにでもつけられるからいいんだけど…。
さてと・・・続きを練るか・・・。
んじゃ。
>>933
いまさらレスするのもなんですが色々勉強になりました。
Javaでプログラミングの勉強を始めて半年の初心者なんですが
簡単にできそうに思って試してみるとわけ分からず
調べてみるとこれは昔からある古典的なアルゴリズムなんですね。
ひとりでできれば自慢できたのに......
ここで1000取りやっていいのか?
さくっと1000がほしいものだ。
985
986986:02/05/12 21:07

987デフォルトの名無しさん:02/05/12 23:25
Exception in thread "main" java.lang.NoSuchMethodError: main

とはどんなエラーですか?
mainなんてそんなメソッドないよーっていうエラーです。
2000 回は見た質問だな。
990!
991987:02/05/13 00:07
>>988->>989
超がいしゅつですかw
混乱してると初歩的なルールさえ忘れてしまうようですね
過去ログ読んで勉強してきます、レスthk!
992
1000!
999!
1000get!!
public class ArrayTest{
public static void main(String[]args){
int a[]=new int[10];
int min=0;
for(int i=0;i<a.length;i++){
a[i]=(int)(Math.random()*100);
System.out.print(a[i]+" ");
}
System.out.println();
for(int i=0;i<a.length-1;i++){
min=i;
for(int j=i+1;j<a.length;j++){
if(a[min]>a[j]){min=j;}
}
int temp=a[min];a[min]=a[i];a[i]=temp;
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}
996996:02/05/13 00:38

992!
999
999!!
10001000:02/05/13 00:42