package com.feiji.rukou;
import java.awt.Color;import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Wdmb extends JPanel implements ActionListener{
String name=null;
int shengming=2;
int fenshu=0;
boolean isKaishi=false;//是否开始
JButton bt1;
JTextField tf1;

public void paint(Graphics g){//画组件
super.paint(g);
Image tp=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bjt.jpg"));
g.drawImage(tp,0,-10,500,800,this);
if(isKaishi){
g.setColor(Color.white);
g.setFont(new Font("宋体",Font.BOLD,16));
g.drawString("玩家:"+name, 8, 20);
g.drawString("生命:"+shengming,8,45);
g.drawString("分数:"+fenshu, 8, 70);
}else{
tf1=new JTextField(7);
this.add(tf1);
bt1=new JButton("确定");
this.add(bt1);
bt1.addActionListener(this);//添加按钮‘an1’监听
}
this.addMouseListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
name=tf1.getText();
System.out.println(name+"dd");
isKaishi=true;
repaint();
}
}

解决方案 »

  1.   

    tf1.getText();
    这样写获取不到输入框中的文字
      

  2.   

    把画组件的处理全都移到构造方法,否则只要发生repaint就会paint方法都重新又new一遍了
      

  3.   


    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.JTextField;public class Wdmb extends JPanel implements ActionListener {
    String name = null;
    int shengming = 2;
    int fenshu = 0;
    boolean isKaishi = false;// 是否开始
    JButton bt1;
    JTextField tf1; public Wdmb() {
    tf1 = new JTextField(7);
    this.add(tf1);

    bt1 = new JButton("确定");
    bt1.addActionListener(this);// 添加按钮‘an1’监听
    this.add(bt1); } public void paint(Graphics g) {// 画组件
    super.paint(g);
    Image tp = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bjt.jpg"));
    g.drawImage(tp, 0, -10, 500, 800, this);
    if (isKaishi) {
    g.setColor(Color.RED);
    g.setFont(new Font("宋体", Font.BOLD, 16));
    g.drawString("玩家:" + name, 8, 20);
    g.drawString("生命:" + shengming, 8, 45);
    g.drawString("分数:" + fenshu, 8, 70);
    }
    } @Override
    public void actionPerformed(ActionEvent e) {
    name = tf1.getText();
    System.out.println(name + "dd");
    remove(bt1);
    remove(tf1);
    isKaishi = true;
    repaint();
    }
    }
      

  4.   

    如果没有特殊需要的话,建议用JLabel来显示玩家、生命和分数,不要在paint()方法中绘制。
      

  5.   

    如果没有特殊需要的话,建议用JLabel来显示玩家、生命和分数,不要在paint()方法中绘制。