import java.awt.event.*;import java.awt.*;import java.applet.*; class Obi { int haba2; int edamotox;int edamotoy;int edasakix;int edasakiy; boolean enryouiki; /*円領域かどうかの判定用フラグ*/ /*String sikibetubangou;識別番号*/ String buimeisyou;/*部位の名前(頭とか尾など)*/ } public class orio3 extends Applet implements MouseListener, MouseMotionListener, ActionListener{ int posx0;int posy0; int posx1;int posy1; int vposx0;int vposy0; int vposx1;int vposy1; //基本枝の平行移動時のベクトル Label lbel; int i;//上部文字表示用ラベル boolean sinki = true;//基本枝によって加えた帯が新規なら真 boolean hajinoten = true;//基本枝の棒の端の点を選択したなら真 boolean heikouidou = true;//基本枝の棒の平行移動をする状態なら真 int r=7;//基本枝構造の直線の両端の円の半径 //帯領域用変数の定義 int nobis; //帯領域の数 int activeobi; //活性な帯の番号 Obi obis[] = new Obi[500];//帯領域のインスタンス定義 //マウスボタンを押した場所の帯番号の取得 void obiBangouHantei(int bhx , int bhy){ sinki =true ; hajinoten = true; heikouidou = false; for (int bhi=1; bhi<=nobis; bhi++ ){ if( //平行移動を行うべきか判断 ((obis[bhi].edamotox-bhx)*(obis[bhi].edamotox-bhx)+(obis[bhi].edamotoy-bhy)*(obis[bhi].edamotoy-bhy) 円図"); KihonsiEnzuButton.addActionListener(this); pnl.add(KihonsiEnzuButton); add("South",pnl); nobis=1;addObi(150,120,150,220); activeobi=1;addObiatosyori() ; } public void destroy() {removeMouseListener(this);} //マウス操作(ボタンを離したとき) public void mouseReleased(MouseEvent e) { addObiatosyori() ;repaint(); } //マウス操作(ボタンを押したとき) public void mousePressed(MouseEvent e) { posx0=e.getX();posy0=e.getY(); posx1=e.getX();posy1=e.getY(); obiBangouHantei(posx0,posy0); repaint(); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) {} //マウス操作(ドラッグしたとき) public void mouseDragged(MouseEvent e) { if(!heikouidou){ obis[activeobi].edasakix =e.getX(); obis[activeobi].edasakiy =e.getY(); } if(heikouidou){ obis[activeobi].edamotox =e.getX()+vposx0; obis[activeobi].edamotoy =e.getY()+vposy0; obis[activeobi].edasakix =e.getX()+vposx1; obis[activeobi].edasakiy =e.getY()+vposy1; } repaint(); } public void mouseMoved(MouseEvent e) {} public void paint(Graphics g) { String c=new String(); lbel.setText(c.valueOf(activeobi)); /* lbel.setText(c.valueOf(posx1)); */ for (int obibangou=1; obibangou<=nobis; obibangou++ ){ g.drawLine( obis[obibangou].edamotox, obis[obibangou].edamotoy, obis[obibangou].edasakix, obis[obibangou].edasakiy); //直線 g.drawOval(obis[obibangou].edamotox-r/2,obis[obibangou].edamotoy-r/2,r,r); //円 g.drawOval(obis[obibangou].edasakix-r/2,obis[obibangou].edasakiy-r/2,r,r); //円 } } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("基本枝の入力")) { lbel.setText("きほんし から きほんし" ); } if(e.getActionCommand().equals("基本枝―>円図")){ lbel.setText("きほんし から えんず" ); } repaint(); } }