Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Frameとチェックボックス


Java初心者です。ぜひ力を貸して下さい。
Appletでcheckboxにチェックを入れたら別ウィンドに文字や写真などを出したいのです。Frameに配列のテキストを対応させたいのですが上手くいきません。
どこをいじればいいのでしょう。教えて下さい。
宜しくお願いします。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class FrameLesson extends Applet 
    implements 
ItemListener {

    Frame win0=new NewFrame("Frame1");
    Frame win1=new NewFrame("Frame2");
    Checkbox [] cb = new Checkbox [2];
    int chk[]= new int [2];

    public void init(){

    win0.resize(200,150);
    win0.move(300,100);
    win1.resize(200,150);
    win1.move(300,300);
     cb[0]  = new Checkbox("Frame1",false); 
     cb[0].addItemListener(this); 
     cb[1]  = new Checkbox("Frame2",false); 
     cb[1].addItemListener(this); 
     add(cb[0]); 
     add(cb[1]); 

     }

public void itemStateChanged(ItemEvent e) {

       if(cb[0].getState()) {
          chk[0] = 1;
          win0.show();
       }
       else {
          chk[0] = 0;
          win0.hide();
       }
       if(cb[1].getState()) {
          chk[1] = 1;
          win1.show();
       }
       else {
          chk[1] = 0;
          win1.hide();
       }

}

    class NewFrame extends Frame {

      NewFrame(String title) {
        super(title);

/* --- ここをいじってそれぞれ違うメッセージを入れたい-- */
      Label mesg=new Label("メッセージ",Label.CENTER);
       add("Center",mesg);
        add("South",new Button("Close"));
      }

      public boolean action(Event e, Object o){
        if(o.equals("Close")) this.hide();
    return true;
        }
    }

}

なお,htmlファイルは
<APPLET CODE="FrameLesson.class" WIDTH=500 HEIGHT=500></APPLET>

です。どうかよろしくお願いします。

14

回答

81313

閲覧

14件の回答

評価

0

AppletからFrameを使用、ってだけで、
こっちゃ萎え萎えなんだがな。

ターゲットになるコンポーネントが、
そのときになってから、どうやって指定すればいいのかわからないの?
ローカル変数じゃなく、メンバ変数に格納しとけばいいじゃん。

評価

0

>>不良社員さま

回答を有り難うございます。せっかく頂いたアドバイスなんですが,全くのシロウトなので良く意味が取れません。
AppletからFrameはかなりイレギュラーですか?それさえも分かりません。なんか答えがおまじないみたいで・・・。

>>ターゲットになるコンポーネントがそのときになって
から,どうやって指定するか分からない

多分そう言うことなのかも知れませんが,それさえも
理解出来ません。appletもあちこちのをつまんで書いた
ものなので,それも正しい使い方しているのか自信ありません。

>>ローカル変数じゃなくて,メンバ変数に格納しておけばいいじゃん。

どれをメンバ変数にすればいいんでしょう?
もう少し具体的に教えて頂けると嬉しいです。
どうかよろしくお願いします。

評価

0

>appletもあちこちのをつまんで書いた
>ものなので,それも正しい使い方しているのか自信ありません。

はっきり言っちゃうが、
こんなシロモノが、うっかりまとも(期待通り)に
動いたりしたら、かえって、スレ主さんのためにならんよ。

適当な入門書を一冊買ってきて、
Hello, World! を表示するところからやり直しな。

評価

0

確かに問題はあると思います。
でも卒業研究のappletの一部で,これをクリアーしないと全体の目的が達成出来ないんです。
締め切り近くて今からやり直しはとても時間が足りない。(ノヘ;)シクシク..

なんとかならないでしょうか?

評価

0

これが卒業研究て、今まで何してたのよ。

>なんとかならないでしょうか?

さあ、キョージュに相談してみては。
某一刀斉は、「税務署に脱税の相談に行くようなもの」と
表現していたが。

俺なんか4留で、最終年の4月には
「今年、卒業できなかったら、アンタ除籍ね」てな
お便りをもらったもんだがね。

考えてみれば、あんまり参考にならんね。

評価

0

・・・

ここでは専門家に教えて頂けると勘違いしてました。
ここは専門家がスキル向上のためのサロンなんですね。
シロウトはダメなんですね。

皆さんお仕事頑張って下さい。
先輩に泣きを入れて聞いてみることにします。
済みませんでした。

評価

0

ここは好きなことを楽しむために努力を惜しまない
人の集まるところです



評価

0

「素人がだめ」なんじゃなくて、「全然分からない、時間がない、だ
から答えを教えて」という人のための場所ではない、ということだ
な。
まあ、今のアナタには同じ意味に感じるかもしれんが。

質問に時間がないことを織り交ぜるのは、ネットでは全く意味を成さ
ない。
多くの場合間に合わなくても自業自得だし、そもそもそれが本当のこ
とだという保証もないし。

評価

0

私も素人です。
が、教えてくれましたよ。

要は聞き方だと思います。
1.時間がない(急いでいる)→知るかよ。
2.答えくれくれ君→ガイド見ろよ。
3.初心者です。→$氏

上記を口にした場合、回答は得れません。
それは過去ログを見てもわかると思いますよ。

質問の仕方を見極めましょう。

評価

0

>>y様,$様,orange様

ご回答有り難うございます。

済みません。確かにそうですね。
身勝手なお尋ねでしたね。
みなさんに近づけるよう頑張ります。
有り難うございました。

評価

0

なにも謝る必要ない。
そもそも不良社員らの考え方が「わからないなら自習しろ」が根底にあるからね。
一理あるが、それならこんな掲示板はそもそもいらない。
外国の掲示板とかだと比較的初心者の質問でも教えてやるのに、日本だとこんな人間が無駄に掲示板に張り付いて偉そうに高説垂れて悦に入るのが多いから仕方がない。スルーしないだけたち悪い。
ま、そういう人間は「スルーしないでいちいち自分で勉強しろって言ってる俺かっこいい!」とでも思ってるんだろうけど。

評価

0

その「外国の掲示板」とやらとの比較に、どんな意味があるんだか。
「外国の事情を知ってる俺かっこいい!」ってとこだな。

評価

0

その「外国の掲示板」とやらを紹介してやれよ。

本当に、つてを手繰って合格できるような
コードなりレポートなり仕立て上げられるんなら大したものだ。
社会に出てからも、そういうスキルのほうがよっぽど役に立つよ。

評価

0

先日は色々ご指導有り難うございました。
なんとか自分でappletで別ウィンドに文字と写真を表示することが出来ました。

以前はLabelを使いましが,今回はTextAreaで文字を表示することにしました。ただ別ウィンドを配列にすることが出来ません。更に多くのFrameを配列で扱うことは可能でしょうか? また,フレームの下に現れる「java applet window」という表示や,フレームの枠も消すことは出来ますか? 

もし良かったらいつでもかまいませんので教えて下さい。

今回の上手くいったソースを載せます。どうか宜しくお願いします。

-------------

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class Window extends Applet implements ItemListener{
    SubFrame subframe0,subframe1;
    Checkbox [] cb = new Checkbox [2];
    int chk[]= new int [2];
    String str;
    String str1="Javaのための数学\r\n 定価1200円 ";
    String str2="実践Java演習\r\n  定価1500円  ";
    TextArea ta;

    public void init(){
     cb[0]  = new Checkbox("Javamath",false); 
     cb[0].addItemListener(this); 
     cb[1]  = new Checkbox("Javaex",false); 
     cb[1].addItemListener(this); 
     add(cb[0]); 
     add(cb[1]); 
     subframe0 = new SubFrame(this,0);
     subframe1 = new SubFrame(this,1);
     subframe0.resize(300,200);
     subframe0.move(300,100);
     subframe1.resize(300,200);
     subframe1.move(300,300);
     setLayout(new BorderLayout());
//     

     
    }
    public void itemStateChanged(ItemEvent e) {
      for(int i=0;i<2;i++){
       if(cb[i].getState()) {
          chk[i] = 1;
          if(i==0){
           subframe0.show();
          }else if(i==1){
           subframe1.show();
           }
       }
       else {
          chk[i] = 0;
       }
      }
    }

class SubFrame extends Frame{
    Image image/*,dt_image*/;
    SubFrame(Applet parent,int k){
        if(k==0){
        setTitle("javamath");
        image = parent.getImage(parent.getDocumentBase(),"javamath.jpg");
//        dt_image = parent.getImage(parent.getDocumentBase(),"dt_physmath.jpg");
         ta=new TextArea(str1,4,20,TextArea.SCROLLBARS_NONE);
        ta.setText(str1);
        }else if(k==1){
        setTitle("javaex");
        image = parent.getImage(parent.getDocumentBase(),"javaex.jpg");
//        dt_image = parent.getImage(parent.getDocumentBase(),"dt_mathex.jpg");
         ta=new TextArea(str2,4,20,TextArea.SCROLLBARS_NONE);
        ta.setText(str2);
        }
        MediaTracker mt=new MediaTracker(this);
        mt.addImage(image,0);
//        mt.addImage(dt_image,0);
        add(ta, BorderLayout.EAST);
        try{
            mt.waitForID(0);
        }catch(InterruptedException ex){}
        resize(image.getWidth(this),image.getHeight(this)+50);
//        resize(dt_image.getWidth(this),dt_image.getHeight(this));
    }
    public void paint(Graphics g){
        if(image!=null){
            g.drawImage(image,0,50,this);
//            g.drawImage(dt_image,120,30,this);
        }
    }
    public boolean handleEvent(Event event){
        if (event.id == Event.WINDOW_DESTROY){
            hide();
            return true;
        }
        return super.handleEvent(event);
    } 
}

}



質問から6ヶ月以上経過しているので、回答を書き込むことはできません。