2012-02-23 104 views
1

我正在使用这个键盘模拟器,但是我对GUI相对比较陌生,而且我被困在了尝试添加ActionListener来执行按钮功能的位置,这意味着我想让该字母出现输入区域,只要按下一个按钮。 在此先感谢!GUI键盘模拟器

import java.awt.BorderLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 

public class StockTicker extends JFrame implements ActionListener 
{ 
String firstRow[] = {"1","2","3","4","5","6","7","8","9","0"}; 
String secondRow[] = {"Q","W","E","R","T","Y","U","I","O","P","Del"}; 
String thirdRow[] = {"A","S","D","F","G","H","J","K","L","Return"}; 
String fourthRow[] = {"Z","X","C","V","B","N","M","."}; 


JButton first[]; 

JButton second[]; 

JButton third[]; 

JButton fourth[]; 





public StockTicker() 
{ 
    super ("A Simple Stock Market GUI"); 

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setResizable(false); 

    initWidgets(); 
} 


private void initWidgets() 
{ 


    JLabel jlOutput = new JLabel("Output: "); 
    JLabel jlInput = new JLabel("Intput: "); 
    final JLabel jtfOutput = new JLabel(""); 
    final JLabel jtfInput = new JLabel(); 

    JPanel bottomPanel = new JPanel(); 
     bottomPanel.setLayout(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridx = 1; 
     gbc.gridy = 0; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.weightx = 1.0; 
     gbc.weighty = 0.1; 
     gbc.anchor = GridBagConstraints.PAGE_START; 
     JLabel bottomLabel = new JLabel(" Input : ", JLabel.LEFT); 


    setLayout(new BorderLayout()); 
    JPanel jpNorth = new JPanel(); 
    JPanel jpCenter = new JPanel(); 
    JPanel jpKeyboard = new JPanel(); 

    add(jpNorth, BorderLayout.NORTH); 
    add(jpCenter, BorderLayout.CENTER); 
    add(jpKeyboard, BorderLayout.SOUTH); 


    jpNorth.setLayout(new BorderLayout()); 
    jpNorth.add(jlOutput, BorderLayout.WEST); 
    jpNorth.add(jtfOutput, BorderLayout.SOUTH); 

    jpCenter.setLayout(new BorderLayout()); 
    jpCenter.add(jlInput, BorderLayout.WEST); 
    jpCenter.add(jtfInput, BorderLayout.CENTER); 

    jpKeyboard.setLayout(new GridLayout(4,1)); 


    pack(); 


    first = new JButton[firstRow.length]; 

    JPanel p = new JPanel(new GridLayout(1, firstRow.length)); 

    for(int i = 0; i < firstRow.length; ++i) 
    { 

     first[i] = new JButton(firstRow[i]); 
     p.add(first[i]); 


    } 

    jpKeyboard.add(p); 



    second = new JButton[secondRow.length]; 

    p = new JPanel(new GridLayout(1, secondRow.length)); 

    for(int i = 0; i < secondRow.length; ++i) 
    { 

     second[i] = new JButton(secondRow[i]); 
     p.add(second[i]); 



    } 

    jpKeyboard.add(p); 

    third = new JButton[thirdRow.length]; 

    p = new JPanel(new GridLayout(1, thirdRow.length)); 
    for(int i = 0; i < thirdRow.length; ++i) 
    { 

     third[i] = new JButton(thirdRow[i]); 
     p.add(third[i]); 


    } 
    jpKeyboard.add(p); 

    fourth = new JButton[fourthRow.length]; 

    p = new JPanel(new GridLayout(1, fourthRow.length)); 
    for(int i = 0; i < fourthRow.length; ++i) 
    { 

     fourth[i] = new JButton(fourthRow[i]); 
     p.add(fourth[i]); 

    } 
    jpKeyboard.add(p); 

    }  
+2

什么是你的问题? – mre 2012-02-23 01:33:34

+0

我不知道如何将actionlistener添加到按钮并使其实际工作。 – lch 2012-02-23 17:02:39

回答

0

JButton.addActionListener(listener);

所以,你会做这样的事情

MyActionListener listener = new MyActionListener(); 

. 
. 
. 

first[i] = new JButton(firstRow[i]); 
first[i].setActionCommand(firstRow[i]); 
first[i].addActionListener(listener); 

. 
. 
. 

public class MyActionListener implements ActionListener { 

    public void actionPerformed(ActionEvent evt) { 

     String cmd = evt.getActionCommand(); 

     // append the cmd value to your out put... 

    } 

}