import java.awt.*; import java.awt.event.*; public class Yuki extends Frame implements ActionListener,MouseListener{ String message=""; Button button1, button2, button3; Checkbox check1, check2; TextField textField; int mx=200, my=200 ,state1=1, state2=1; public Yuki(String title){ super(title); addMouseListener(this); setLayout(new FlowLayout()); add(button1=new Button("Nose")); button1.addActionListener(this); add(button2=new Button("Eyes")); button2.addActionListener(this); add(textField=new TextField(10)); textField.addActionListener(this); add(button3=new Button("Quit")); button3.addActionListener(this); setSize(500,500); setVisible(true); addMouseListener(this); } public static void main(String args[]){ Yuki window=new Yuki("Yukidaruma"); } public void mousePressed(MouseEvent e){ mx=e.getX(); my=e.getY(); message=""; repaint(); } public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void actionPerformed(ActionEvent e){ System.out.println(e); Object source=e.getSource(); if(source instanceof Button){ String label=e.getActionCommand(); if(label.equals("Quit")){ System.exit(0); } else if(label.equals("Nose")){ state1=state1*(-1); message=""; } else{ state2=state2*(-1); message=""; } } else if(source instanceof TextField){ message="TextField"+(TextField)source; //ここをどうすればよいかわかりません } repaint(); } public void paint(Graphics g){ g.setColor(Color.gray); g.fillRect(0,60,500,500); g.setColor(Color.black); g.fillRect(0,60,500,150); g.setColor(Color.yellow); g.fillOval(330,70,50,50); g.setColor(Color.black); g.fillOval(330,70,25,25); g.setColor(Color.white); g.fillOval(mx,my,100,100); g.fillOval(mx-20,my+60,130,130); g.setColor(Color.black); if(state2==1){ g.fillOval(mx+50,my+30,8,16); g.fillOval(mx+70,my+30,8,16); } else{ g.drawLine(mx+50,my+38,mx+58,my+38); g.drawLine(mx+70,my+38,mx+78,my+38); } if(state1==1){ g.setColor(Color.orange); int[] xs={mx+60,mx+60,mx+100}; int[] ys={my+55,my+66,my+60}; g.fillPolygon(xs,ys,3); } else{ g.setColor(Color.orange); int[] xs={mx+60,mx+60,mx+80}; int[] ys={my+55,my+66,my+60}; g.fillPolygon(xs,ys,3); } if(message!=""){ g.setColor(Color.white); g.fillOval(mx+150,my+20,200,100); int[] xt={mx+170,mx+170,mx+120}; int[] yt={my+55,my+66,my+60}; g.fillPolygon(xt,yt,3); g.setColor(Color.black); g.drawString(message,mx+180,my+66); } } }
TextFieldから文字列を取り出すメソッドを, TextFieldクラス の説明から探せばよいのですが,「メソッドの概要」の中にはそれらしいものはたしかに見つかりません.ただ, TextFieldは親クラスの TextComponent からいろいろなメソッドを継承していて,その中のgetTextを使うと入力したテキストを得ることができます.
TextField textField=(TextField)source; message=textField.getText();とするか,あるいは
message=((TextField)source).getText();とすれば良いでしょう.
Button button=new Button(); add(button); button.addActionListener(this);など指定しているところでは、
button.addKeyListener(this);も加えるようにする。これは、Buttonがキーボードショートカットに対応するために、キー入力を横取りしてしまうのを取り返すためである。