import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class App_0622 extends JFrame
{ /**
 * @param args
 */private JLabel lbl;
 Container c=getContentPane();

 public App_0622()
 {
 super("Image");
 c.setLayout(new FlowLayout());
 lbl=new JLabel(new ImageIcon("2.png"));
 c.add(lbl);
 //setSize(460,650);
 c.addKeyListener(new hand());
 setVisible(true);  }
class hand extends KeyAdapter
 {
 public void keypressed(KeyEvent e)
 {
 if(e.getKeyChar()=='r')
 {
 for(int i=0;i<30;i++)
 {
 try
 {
 Thread.sleep(70);
 c.setSize(16*i,22*i);
 }
 catch(InterruptedException q)
         {
          
         }
 }
 }
 if(e.getKeyChar()=='p')
 {
 for( int i=29;i>0;i--)
 {
 try
 {
 Thread.sleep(70);
 c.setSize(16*i,22*i);
 }
 catch(InterruptedException q)
         {
          
         }
 }
 }
 }
 }
public static void main(String[] args) 
{
// TODO Auto-generated method stub
App_0622 App=new App_0622();
}}想实现程序运行后,按下r 窗口变大,按下p 变小,但是却没反应,哪里出错呢??

解决方案 »

  1.   


    import java.awt.*;
    import java.awt.event.KeyEvent;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class App_0622 extends JFrame
    {    /**
         * @param args
         */private JLabel lbl;
         Container c=getContentPane();
        
         public App_0622()
         {
             super("Image");
             c.setLayout(new FlowLayout());
             lbl=new JLabel(new ImageIcon("2.png"));
             c.add(lbl);
             //setSize(460,650);
             addKeyListener(new hand()); //这里应该是给JFrame加监听
             setVisible(true);     }
        class hand extends KeyAdapter
         {
             public void keyPressed(KeyEvent e) //这里写错了,你写成keypressed了
             {
                 if(e.getKeyChar()=='r')
                 {
                  System.out.println("r");
                     for(int i=0;i<30;i++)
                     {
                         try
                         {
                         Thread.sleep(70);
                         setSize(16*i,22*i); //这里应该是设置JFrame的大小
                         }
                         catch(InterruptedException q)
                         {
                          
                         }
                     }
                 }
                 if(e.getKeyChar()=='p')
                 {
                  System.out.println("p");
                     for( int i=29;i>0;i--)
                     {
                         try
                         {
                         Thread.sleep(70);
                         setSize(16*i,22*i); //这里应该是设置JFrame的大小
                         }
                         catch(InterruptedException q)
                         {
                          
                         }
                     }
                 }
             }
         }
        public static void main(String[] args) 
        {
            // TODO Auto-generated method stub
            App_0622 App=new App_0622();
        }}
      

  2.   

    正解,lz如果按你那种写法
    应该是
    public App_0622()
         {
             super("Image");
             c.setLayout(new FlowLayout());
             lbl=new JLabel(new ImageIcon("2.png"));
             c.add(lbl);
             //setSize(460,650);
             c.addKeyListener(new hand());
             add(c);   //不要忘了在Frame里添加c,否则当然看不到你要的效果
             setVisible(true);     }