import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class stringmove extends JPanel
{
String s="hello java";
    int x=50,y=50;
public stringmove(){
addKeyListener(
new KeyAdapter(){
    public void keyTyed(KeyEvent e){
if (e.getKeyCode() == e.VK_DOWN)
                    y += 10;
                else if (e.getKeyCode() == e.VK_UP)
                    y -= 10;
                else if (e.getKeyCode() == e.VK_RIGHT)
                    x += 10;
                else if (e.getKeyCode() == e.VK_LEFT)
                    x -= 10;
repaint();
}
}
);
setSize(300,200);
setVisible(true);
}
public void paint(Graphics  g){
super.paint(g);
g.drawString(s,x,y);
}
public static void main(String[] args){
JFrame frame=new JFrame("stringmove");
Container cpane=frame.getContentPane();
StringPanel panel=new StringPanel();
cpane.add(panel,BorderLayout.CENTER);
        frame.setSize(400,300);
frame.setVisible(true);
}
}

解决方案 »

  1.   

    代码不全,把StringPanel 贴出来
      

  2.   

    真是对不起,代码发错了,应该是这个
    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    public class stringmove extends JPanel 

    String s="hello java"; 
        int x=50,y=50; 
    public stringmove(){ 
    addKeyListener( 
    new KeyAdapter(){ 
        public void keyTyed(KeyEvent e){ 
    if (e.getKeyCode() == e.VK_DOWN) 
                        y += 10; 
                    else if (e.getKeyCode() == e.VK_UP) 
                        y -= 10; 
                    else if (e.getKeyCode() == e.VK_RIGHT) 
                        x += 10; 
                    else if (e.getKeyCode() == e.VK_LEFT) 
                        x -= 10; 
    repaint(); 


    ); 
    setSize(300,200); 
    setVisible(true); 

    public void paint(Graphics  g){ 
    super.paint(g); 
    g.drawString(s,x,y); 

    public static void main(String[] args){ 
    JFrame frame=new JFrame("stringmove"); 
    Container cpane=frame.getContentPane(); 
    stringmove panel=new stringmove(); 
    cpane.add(panel,BorderLayout.CENTER); 
            frame.setSize(400,300); 
    frame.setVisible(true); 

    }
      

  3.   

    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    public class stringmove
    {  
       public static void main(String[] args)
       {  
          JFram sm = new JFram();
       } 
    }
    class JFram extends JFrame
    {
     int x,y,w,h;
     private JButton jb1;
       public JFram()
       {
           Container con = getContentPane();
           con.setLayout(null);
           jb1 = new JButton("按方向键移动");
           jb1.setBounds(120,120,50,50);
           x=y=120;
           w=h=50;
           jb1.addKeyListener( new KeyAdapter()
              { 
                 public void keyPressed(KeyEvent e)
                 { 
                    if (e.getKeyCode() == e.VK_DOWN)
                    { 
                           y += 10; 
                           jb1.setBounds(x,y,w,h);
                    }
                    else if (e.getKeyCode() == e.VK_UP) 
                    { 
                           y -= 10; 
                           jb1.setBounds(x,y,w,h);
                           System.out.println("key.up\n");
                    }
                    else if (e.getKeyCode() == e.VK_RIGHT) 
                    { 
                           x += 10;
                           jb1.setBounds(x,y,w,h);
                           System.out.println("key.right\n");
                    } 
                    else if (e.getKeyCode() == e.VK_LEFT)
                    { 
                           x -= 10; 
                           jb1.setBounds(x,y,w,h);
                           System.out.println("key.left\n");
                    }      
                 } 
              } 
          ); 
           con.add(jb1);
           setSize(400,300);
           show();
       }
    }
    这个可以实现JButton对象的移动...我觉得你移动的话应该获取焦点起吧...我测试了你那个事件方法keyTyed貌似没执行过,我现在改成keyPressed就可以了...个人见解...不知道能不能帮到LZ...
      

  4.   

    我不知道有么有别的方法可以实现你的想法! 我的解决方法是使用线程!我重写了你的类!你可以看看!也许会有帮助!package test;
    import java.awt.*;
    import java.awt.event.*; 
    import javax.swing.*;public class StrintMove extends KeyAdapter  implements Runnable
    {   
    //定义变量(在下面)-----------------------------------------------------
    private String s = "hello java";
    private int x = 50 , y = 50 ;

    //定义变量(结束)--------------------------------------------------------
    int mx=0;
    int my=0;
    boolean start=false;
        JFrame frame;
        Thread timerThread;    StrintMove()
        {  
    //构造初始(在下面)-----------------------------------------------------   
         //构造初始(结束)--------------------------------------------------------

    frame = new JFrame();
            frame.getContentPane().add(new Screen());
            frame.addKeyListener(this);   
            Container contentPane=frame.getContentPane();        //窗口大小  frame.setSize(宽, 高);
            frame.setSize(500,500);        frame.setVisible(true);
            frame.repaint();
        }    public void keyPressed(KeyEvent evt)
        {
    //键盘处理
            switch(evt.getKeyCode()) 
            {
    case KeyEvent.VK_ENTER:
    timerThread = new Thread(this);
    timerThread.start();
    start = true;
    break;
    case KeyEvent.VK_ESCAPE:
                    start = false;
    System.exit(1);
    break;
    case KeyEvent.VK_LEFT:
    //键盘左箭头处理(在下面)-----------------------------------------------------
      x -= 10;  //键盘左箭头处理(结束)--------------------------------------------------------
    break;
    case KeyEvent.VK_RIGHT:
    //键盘右箭头处理(在下面)-----------------------------------------------------
     x += 10;  //键盘右箭头处理(结束)--------------------------------------------------------
    break;
    case KeyEvent.VK_DOWN:
    //键盘下箭头处理(在下面)-----------------------------------------------------
     y += 10;  //键盘下箭头处理(结束)--------------------------------------------------------
    break;
    case KeyEvent.VK_UP:
    //键盘上箭头处理(在下面)-----------------------------------------------------
      y -= 10;  //键盘上箭头处理(结束)--------------------------------------------------------
    break;
            }        frame.repaint();
        }    public void run()
        {
            while(true)
            {
                try
                { 
    //定时时间间隔  timerThread.sleep(毫秒);
    timerThread.sleep(300);
                }
                catch (InterruptedException e)
                {  
    e.printStackTrace();
                }
                
                if(start==false)
                    return;
    //定时处理(在下面)-----------------------------------------------------
      //定时处理(结束)--------------------------------------------------------
                frame.repaint();
            }
        } class Screen extends JComponent
    {   
    public void paint(Graphics g)
    {
    Graphics2D g2d = (Graphics2D)g;
    //画图处理(在下面)-----------------------------------------------------
    g.drawString(s,x,y); 
    //画图处理(结束)--------------------------------------------------------
    }
    }    public static void main(String[] args)
        {
             new StrintMove();
        }
        
      }; 
      

  5.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;public class DString
    {
       public static void main(String[] args)
       {
          JF j = new JF();
       }
    }
    class JF extends JFrame
    {
     int x=100;
     int y=100;
       public JF()
       {
          addKeyListener(new KeyAdapter()
             {
               public void keyPressed(KeyEvent e) 
               {
                  if(e.getKeyCode()==e.VK_UP)
                     y-=10;
                  else if(e.getKeyCode()==e.VK_DOWN)
                     y+=10;
                  else if(e.getKeyCode()==e.VK_LEFT)
                     x-=10;
                  else if(e.getKeyCode()==e.VK_RIGHT)
                     x+=10;
                  repaint();
               }
             }
          );
          setSize(400,300);
          show();
       }
       public void paint(Graphics g)
       {
          super.paint(g); 
          g.drawString("hello jframe!!!",x,y);
       }
    }
    LZ试试这个吧...
      

  6.   

    虽然没有解决原来的问题,但对于刚接触java的我来说,在这已经学到不少东西了,谢谢各位