当前位置: 代码迷 >> Java相关 >> 这个代码为什么显示不出来…想得小弟我头都大了
  详细解决方案

这个代码为什么显示不出来…想得小弟我头都大了

热度:5944   发布时间:2013-02-25 21:51:13.0
这个代码为什么显示不出来…想得我头都大了
Java code
import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.lang.Math;public class TestSin extends JFrame{ private DisplayPanel dp;  public void TestSin(){ setLayout(new BorderLayout()); dp=new DisplayPanel(this); getContentPane().add(dp,"Center"); setLocation(200,200); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }  public static void main(String []args){ new TestSin();   } class DisplayPanel extends JPanel implements Runnable,MouseListener{  private TestSin ts;  Thread th;  double c=0.0;  double a=100.0;  boolean stopIt=false;  public DisplayPanel(TestSin tsi){      ts=tsi;    setBackground(Color.pink); // setCursor(Cursor.WAIT_CURSOR); 这里为什么不对啊??    setPreferredSize(new Dimension(300,700));    addMouseListener(this);    th=new Thread(this);    th.start();    }   public void paint(Graphics g){       Graphics2D g1=(Graphics2D)g;       ts.setTitle("C ="+c);       g1.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);       //也可以用super.paint();       g1.clearRect(0,0,getSize().width,getSize().height);       g1.setColor(Color.blue);       for(int i=0;i<getSize().width;i++){       g1.drawLine(i,(int)(Math.sin(i/a+c)*a+getSize().height/2),                   i+1,(int)(Math.sin(i+1/a+c)*a+getSize().height/2) );       }       }    public void run(){     while(!stopIt){     c+=0.1;     repaint();          if(c>=2*Math.PI*getSize().width)      {c=0.0;}     }     try{      th.sleep(1000);     }     catch(InterruptedException ex)     {ex.printStackTrace();}        }    public  void mouseClicked(MouseEvent e){}        public  void mousePressed(MouseEvent e){}        public  void mouseReleased(MouseEvent e){stopIt=!stopIt;}        public  void mouseEntered(MouseEvent e){}        public  void mouseExited(MouseEvent e){}      }   }

编译通过,就是结果显示不出来
本意是想输出一段动态的SIN曲线

------解决方案--------------------------------------------------------
Format了一下:
Java code
import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.lang.Math;public class TestSin extends JFrame {    private DisplayPanel dp;    public TestSin() {        setLayout(new BorderLayout());        dp = new DisplayPanel(this);        getContentPane().add(dp, "Center");        setLocation(200, 200);        pack();        setVisible(true);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }    public static void main(String[] args) {        new TestSin();    }    class DisplayPanel extends JPanel implements Runnable, MouseListener {        private TestSin ts;        Thread th;        double c = 0.0;        double a = 100.0;        boolean stopIt = false;        public DisplayPanel(TestSin tsi) {            ts = tsi;            setBackground(Color.pink);            setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));            setPreferredSize(new Dimension(300, 700));            addMouseListener(this);            th = new Thread(this);            th.start();        }        public void paint(Graphics g) {            Graphics2D g1 = (Graphics2D) g;            ts.setTitle("C =" + c);            g1.setRenderingHint(RenderingHints.KEY_ANTIALIASING,                    RenderingHints.VALUE_ANTIALIAS_ON);            // 也可以用super.paint();            g1.clearRect(0, 0, getSize().width, getSize().height);            g1.setColor(Color.blue);            for (int i = 0; i < getSize().width; i++) {                g1.drawLine(i, (int) (Math.sin(i / a + c) * a + getSize().height / 2),                        i + 1, (int) (Math.sin(i + 1 / a + c) * a + getSize().height / 2));            }        }        public void run() {            while (!stopIt) {                c += 0.1;                repaint();                if (c >= 2 * Math.PI * getSize().width) {                    c = 0.0;                }            }            try {                Thread.sleep(1000);            } catch (InterruptedException ex) {                ex.printStackTrace();            }        }        public void mouseClicked(MouseEvent e) {        }        public void mousePressed(MouseEvent e) {        }        public void mouseReleased(MouseEvent e) {            stopIt = !stopIt;        }        public void mouseEntered(MouseEvent e) {        }        public void mouseExited(MouseEvent e) {        }    }}
  相关解决方案