2012-11-07 84 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()方法更改其文本。