2012-11-07 86 views
4

我有下面的代码:的Java KeyListener的改变JFrame的标签值

package testOpdracht1; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.io.InputStream; 

public class MainMenu extends JFrame implements KeyListener { 

    public MainMenu() { 
     initUI(); 
    } 

    public final void initUI() { 

     JLabel label1 = new JLabel("text1"); 
     add(label1); 

     addKeyListener(this); 

     setTitle("Bla"); 
     setPreferredSize(new Dimension(400,250)); 
     setMinimumSize(getPreferredSize()); 
     setResizable(true); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    public void keyPressed(KeyEvent e) { 

    } 
    public void keyReleased(KeyEvent e) { 

    } 
    public void keyTyped(KeyEvent e) { 

    } 


    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       MainMenu ex = new MainMenu(); 
       ex.setVisible(true); 
      } 
     }); 
    }  
} 

我想按下任意键来更改标签的文本。我怎样才能做到这一点? 我知道我可以从JFrame类中调用方法,因为我的MainMenu类扩展了它,但我无法找到引用标签元素以更改值的方式。

真诚,

卢克索

+0

需要的KeyListener申报desiredJComponent.setFocusable – mKorbel

回答

1

修改代码看起来像:

package testOpdracht1; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.io.InputStream; 

public class MainMenu extends JFrame implements KeyListener { 
    final JLabel label1 = new JLabel("text1"); 
    public MainMenu() { 
     initUI(); 
    } 

    public final void initUI() { 
     add(label1); 

     addKeyListener(this); 

     setTitle("Bla"); 
     setPreferredSize(new Dimension(400,250)); 
     setMinimumSize(getPreferredSize()); 
     setResizable(true); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    public void keyPressed(KeyEvent e) { 
      label1.setText("foo"); 
    } 

    public void keyReleased(KeyEvent e) { 

    } 
    public void keyTyped(KeyEvent e) { 

    } 


    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       MainMenu ex = new MainMenu(); 
       ex.setVisible(true); 
      } 
     }); 
    }  
} 
1

声明的JLabel作为一个全局变量,实例化它,你已经在initUI()。现在,当您处理事件时,在您的ActionListener方法中,您可以在那里更改标签的文本。

0

您必须将JLabel声明为全局变量,然后在keyXXX()方法的任何一种中,都可以使用JLabel类的setText()方法更改其文本。