读书人

一个GUI初始化的有关问题

发布时间: 2012-01-12 22:11:58 作者: rapoo

一个GUI初始化的问题

Java code
package org.gui;import java.awt.*;import java.awt.event.*;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class TestBiao extends Frame{    /**     * @param args     */    public TestBiao(){        this.setSize(400, 400);        this.setVisible(true);        this.addWindowListener(new WindowAdapter(){            public void windowClosing(WindowEvent e){                setVisible(false);                System.exit(0);            }        });        TestCanvas tc = new TestCanvas();        this.add(tc);    }    public static void main(String[] args) {        // TODO Auto-generated method stub        new TestBiao();    }}class TestCanvas extends Canvas{    long startTime = 0;    long endTime = 0;    Date dd,dn = null;    String show = "";    boolean bTrue =true;    SimpleDateFormat sf = null;    public TestCanvas(){        this.setVisible(true);        this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);        sf = new SimpleDateFormat("HH:mm:ss");        try {            dd = (Date)sf.parseObject("00:00:00");        } catch (ParseException e) {            e.printStackTrace();        }    }    public void paint(Graphics g){        System.out.println("进入paint方法..");        if(bTrue){            g.fill3DRect(0, 0, 80, 30, true);            g.setColor(Color.WHITE);            g.drawString("00:00:00", 20, 20);        }else{            g.fill3DRect(0, 0, 80, 30, true);            g.setColor(Color.WHITE);            g.drawString(show, 20, 20);        }    }    protected void processMouseEvent(MouseEvent e){        if(e.getID()==MouseEvent.MOUSE_PRESSED){            System.out.println("鼠标点击..");            bTrue = true;            startTime = System.currentTimeMillis();        }else if(e.getID()==MouseEvent.MOUSE_RELEASED){            System.out.println("鼠标释放..");            bTrue = false;        }    }}



我这个程序开始执行有时间能画出方块,有时候画不出来是怎么回事哈,谢谢??

[解决办法]
将this.setVisible(true)移到构造函数的最下方
[解决办法]
this.setVisible(true)

放主函数 new TestBiao();之后最好,一目了然

[解决办法]
我刚测试了下,每次时间的方格都是出来的呀?楼主你到底想要什么结果?
[解决办法]
像this.setVisible(true) ,setResized(true)之类的最好放在构造方法最后或者外面,这些方法放在构造方法最前面会出现lz说的情况。

读书人网 >J2SE开发

热点推荐