GUI键盘模拟器

时间:2012-02-23 00:29:58

标签: java swing user-interface keyboard simulator

我正在使用这个键盘模拟器,但是我对GUI比较陌生,我一直在试图添加ActionListener以执行按钮的功能,这意味着我希望每当有字母出现输入区域时按下a按钮。 提前谢谢!

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);

    }       

1 个答案:

答案 0 :(得分: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...

    }

}