找了半天,也只看到一个button

解决方案 »

  1.   

    对不起,发错了。^_^·请原谅。
    应为三个按钮,原程序为:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Frame4 extends JFrame
    {
      private JPanel jPanel1 = new JPanel();
      private JToggleButton jToggleButton1 = new JToggleButton();
      private ImagePanel jPanel=new ImagePanel();
      private drawPanel dPanel=new drawPanel();
      private JToggleButton jToggleButton2 = new JToggleButton();
      private Thread t=new Thread(dPanel);
      private Integer dump=new Integer(0);
      private JToggleButton jToggleButton3 = new JToggleButton();
      public Frame4() {
        setSize(800,600);
        setTitle("Thread");
        try {
          jbInit();
          this.addWindowListener(new WindowAdapter()
          {
            public void windowClosing(WindowEvent e)
            {
              if(e.getID()==WindowEvent.WINDOW_CLOSING)
                System.exit(0);
            //System.getProperties();
            }
          });
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      public static void main(String[] args) {
        Frame4 frame=new Frame4();
        frame.show();
      }
      private void jbInit() throws Exception {
        jToggleButton1.setText("start");
        jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jToggleButton1_actionPerformed(e);
          }
        });
        jToggleButton2.setText("suspend");
        jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jToggleButton2_actionPerformed(e);
          }
        });
        jToggleButton3.setText("resume");
        jToggleButton3.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jToggleButton3_actionPerformed(e);
          }
        });
        jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseReleased(MouseEvent e) {
            jPanel1_mouseReleased(e);
          }
        });
        this.getContentPane().add(jPanel1, BorderLayout.SOUTH);
        jPanel1.add(jToggleButton1, null);
        jPanel1.add(jToggleButton2, null);
        jPanel1.add(jToggleButton3, null);
        this.getContentPane().add(dPanel, BorderLayout.CENTER);
      }  void jToggleButton1_actionPerformed(ActionEvent e)
      {   // jPanel1.setVisible(false);
         t.start();  }  void jToggleButton2_actionPerformed(ActionEvent e)
      {
        try
         {     dPanel.checkSuspened();
         }
        catch(InterruptedException ev)
         {ev.printStackTrace();}   // t.start();
       // if(!(t.isInterrupted()))
         // System.out.println("ok");
      }  void jToggleButton3_actionPerformed(ActionEvent e) {
        if(t.isAlive())
         {
           dPanel.requestResume();     }  }  void jPanel1_mouseReleased(MouseEvent e) {
      jPanel1.setBackground(new Color(0,250,0));
      }
    }
    class drawPanel extends JPanel implements Runnable{
       int xCenter=150;
       MyChar[] str = new MyChar[20];
       int yStep = 0;
       boolean suspendRequested=true;
       public drawPanel()
       {
         for(int i=0;i<str.length;i++) {
                 str[i] = new MyChar(i,(char)(65+i));
             }
            setPos();   }
       public void run()
       {
         Thread t=Thread.currentThread();
         while(true)
         {
           setPos();
           this.repaint();
           try
           {
             t.sleep(300);
           }
           catch(Exception ev)
           {
            ev.printStackTrace();
           }     }   }
       synchronized void checkSuspened() throws InterruptedException
       {
       while(suspendRequested)
       {
       this.wait();
       }   }
       synchronized void requestResume()
       {
       suspendRequested=false;
       this.notifyAll();   }
       public void paint(Graphics g) {
         super.paint(g);
         g.setColor(Color.white);
         g.fillRect(0,0,400,500);
         g.setColor(Color.blue);
         for(int i=0;i<str.length;i++) {
           str[i].draw(g);
         }
            }
       public void setPos() {
           yStep+=3;
           for(int i=0;i<str.length;i++) {
               str[i].setPosition(300-(20-i*2+yStep));
           }
        }
       class MyChar {
            int x,y;
            char ch;
            int index = 0;
            boolean direct = false;        public MyChar(int index,char ch) {
                this.ch = ch;
                this.index = index;
            }        public void setPosition(int y) {
                if(direct) {
                    index++;
                    if(index == str.length)
                        direct = false;
                } else {
                    index--;
                    if(index == 0)
                        direct = true;
                }
                this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter;
                this.y = y;
            }        public void draw(Graphics g) {
                g.drawString(new String(new char[]{ch}),x,y);
            }
        }
    }
    请指点。谢谢!!
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class graphicFrame  extends JFrame implements Runnable {
        private JPanel contentPane;
        private BorderLayout borderLayout1 = new BorderLayout();
        private JButton jButton1 = new JButton();
        private MyPanel panel1 = new MyPanel();
        Thread myThread = null;
        MyChar[] str = new MyChar[20];
        int yStep = 0;
        int xCenter = 150;
        boolean flag;    //Construct the frame
        public graphicFrame() {
            enableEvents(AWTEvent.WINDOW_EVENT_MASK);
            try {
                jbInit();
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
        //Component initialization
        private void jbInit() throws Exception  {
           
            contentPane = (JPanel) this.getContentPane();
            jButton1.setText("开始");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jButton1_actionPerformed(e);
                }
            });
            contentPane.setLayout(borderLayout1);
            this.setSize(new Dimension(400, 423));
            this.setTitle("Frame Title");
            contentPane.add(jButton1, BorderLayout.SOUTH);
            contentPane.add(panel1, BorderLayout.CENTER);        //initial
            for(int i=0;i<str.length;i++) {
                str[i] = new MyChar(i,(char)(65+i));
            }
            setPos();
        }
        //Overridden so we can exit when window is closed
        protected void processWindowEvent(WindowEvent e) {
          super.processWindowEvent(e);
          if (e.getID() == WindowEvent.WINDOW_CLOSING)
          {
            System.exit(0);
          }
        }    public void run() {
            Thread theThread = Thread.currentThread();        while(flag) {
                setPos();
                panel1.repaint();
                try {
                    theThread.sleep(300);
                } catch(InterruptedException ie) {
                    ie.printStackTrace();
                }
            }
        }    public void setPos() {
            yStep+=3;
            for(int i=0;i<str.length;i++) {
                str[i].setPosition(300-(20-i*2+yStep));
            }
        }    void jButton1_actionPerformed(ActionEvent e) {
            if(myThread == null) {
             flag=true;
                myThread = new Thread(this);
                myThread.start();
            }else{
             flag=false;
             myThread=null;
            }
        }    class MyChar {
            int x,y;
            char ch;
            int index = 0;
            boolean direct = false;        public MyChar(int index,char ch) {
                this.ch = ch;
                this.index = index;
            }        public void setPosition(int y) {
                if(direct) {
                    index++;
                    if(index == str.length)
                        direct = false;
                } else {
                    index--;
                    if(index == 0)
                        direct = true;
                }
                this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter;
                this.y = y;
            }        public void draw(Graphics g) {
                g.drawString(new String(new char[]{ch}),x,y);
            }
        }    class MyPanel extends JPanel {
            public MyPanel() {
            }        public void paint(Graphics g) {
                g.setColor(Color.white);
                g.fillRect(0,0,400,500);
                g.setColor(Color.blue);
                for(int i=0;i<str.length;i++) {
                    str[i].draw(g);
                }
            }
        }    public static void main(String[] args) {
            graphicFrame frame = new graphicFrame();
            frame.validate();
            frame.setVisible(true);
        }
    }//记着给点分,我正努力加分呢