注册 登录
编程论坛 JAVA论坛

为什么我的paint方法好像不管用啊

梁伟 发布于 2015-11-15 20:59, 817 次点击
import java.awt.*;
//import javax.swing.*;
import java.awt.event.*;
public class Wenbenkuang extends Frame implements WindowListener,ActionListener,TextListener
{
    Label l1,l2,l3;
    TextField t1,t2,t3;
    int i;
    String str;
    float ft;
    public Wenbenkuang()
    {
        Frame ff=new Frame("我的窗口");
        ff.setSize(400, 800);
        ff.setLocation(400, 400);
        l1=new Label("请输入整数:");
        t1=new TextField("0",30);
        ff.add(l1);
        ff.add(t1);
        t1.addTextListener(this);
        l2=new Label("请输入字符串:");
        t2=new TextField(" ",30);
        ff.add(l2);
        ff.add(t2);
        t2.addTextListener(this);
        l3=new Label("请输入浮点数:");
        t3=new TextField(" ",30);
        ff.add(l3);
        ff.add(t3);
        t3.addTextListener(this);
        ff.addWindowListener(this);
        ff.setLayout(new FlowLayout());
        ff.setVisible(true);
    }
    public void windowClosing(WindowEvent e)
    {
        Window ww=(Window)e.getSource();
        ww.setVisible(false);
        ww.dispose();
    }
    public void actionPerformed(ActionEvent e)
    {
        i=Integer.parseInt(t1.getText());
        str=t2.getText();
        ft=(Float.valueOf(t3.getText())).floatValue();
        repaint();
    }
    public void paint(Graphics g)
    {
        g.drawString("整形数:"+this.i,20,120);
        g.drawString("字符串:"+this.str, 20, 150);
        g.drawString("浮点数: "+this.ft, 20, 180);        
    }
    public void textValueChanged(TextEvent t)
    {        
    }   
    public static void main(String[] args)
    {
        Wenbenkuang w1=new Wenbenkuang();
    }
    @Override
    public void windowActivated(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void windowClosed(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void windowIconified(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void windowOpened(WindowEvent e) {
        // TODO 自动生成的方法存根
        
    }
}
我只是想让三个文本框里的内容一块显示出来
1 回复
#2
林月儿2015-11-16 07:33
程序代码:
public class Wenbenkuang extends Panel implements TextListener
{
    /**
     *
     
*/
    private static final long serialVersionUID = 1L;
    static JFrame ff;
    static Label l1, l2,l3;
    static TextField t1,t2,t3;
    static int i;
    static String str;
    static float ft;
    public void test()
    {   
        l1=new Label("请输入整数:");
        t1=new TextField("");
        t1.addTextListener(this);
        ff.add(l1);ff.add(t1);
        l2=new Label("请输入字符串:");
        t2=new TextField("");
        t2.addTextListener(this);
        ff.add(l2);ff.add(t2);
        l3=new Label("请输入浮点数:");
        t3=new TextField("");
        t3.addTextListener(this);
        ff.add(l3);ff.add(t3);
    }
    @Override
    public void paint(Graphics g)
    {
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, 200, 200);
        g.setColor(Color.BLACK);
        g.drawString("整形数:"+Wenbenkuang.i,20,20);
        g.drawString("字符串:"+Wenbenkuang.str, 20, 40);
        g.drawString("浮点数: "+Wenbenkuang.ft, 20, 60);
    }
    @Override
    public void textValueChanged(TextEvent evt)
    {   
        try{            
            i=Integer.parseInt(t1.getText());
            str=t2.getText();
            ft=(Float.valueOf(t3.getText())).floatValue();
        }catch(NumberFormatException e){
        }
        repaint();
    }   
    public static void main(String[] args)
    {
         ff=new JFrame("我的窗口");
         ff.setLayout(new GridLayout(4, 2));
         Wenbenkuang wenben=new Wenbenkuang();
         wenben.test();
         ff.add(wenben);
         ff.setSize(400, 400);
         ff.setLocation(400, 200);
         ff.setVisible(true);
    }
}
1