【问题标题】:KeyListener in extends JPanel class扩展 JPanel 类中的 KeyListener
【发布时间】:2014-06-26 06:01:48
【问题描述】:

我正在尝试编写这个屏幕键盘,它会在用户按下键盘时做出反应。 我的问题是keyListener,我想把它写在JPanel类中,但我一直收到这个编译错误,关于在行中的“implements”这个词之后缺少“{”的东西: 公共类 MyKeyListener 实现 KeyListener()

有人可以帮我理解我做错了什么吗? 这是代码:

package Q2;
import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.TextField;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.util.EventListener;

public class MainPanel extends JPanel{

    private JButton[][] button;
    private JPanel[] panel;                                                     //Array of panels for each buttons line
    private JPanel parent;
    private static final String[][] key = {
        {"`","1","2","3","4","5","6","7","8","9","0","-","+","Backspace"},
        {"Tab","Q","W","E","R","T","Y","U","I","O","P","[","]"},
        {"Caps","A","S","D","F","G","H","J","K","L",";","'","\\","Enter"},
        {"Shif","Z","X","C","V","B","N","M",",",".","?","/"},
        {"                                                          ",",","<","v",">"}};

    //Constructor for main Panel
    public MainPanel(){
        super();
        setLayout(new BorderLayout());
        TextField textField = new TextField(20);
        Font font1 = new Font("david", Font.BOLD, 22);

        textField.setFont(font1);
        add(textField,BorderLayout.CENTER);

        //initialize the parent panel and array of 5 panels and the buttons array
        parent = new JPanel();
        parent.setLayout(new GridLayout(0,1));
        panel = new JPanel[5];
        button = new JButton[20][20];

        for (int row = 0; row<key.length; row++){
            panel[row] = new JPanel();
            for (int column = 0; column<key[row].length; column++){
                button[row][column] = new JButton(key[row][column]);
                button[row][column].setFont(new Font("Ariel",Font.PLAIN, 22));
                button[row][column].setMargin(new Insets(10, 20, 10, 20));
                button[row][column].putClientProperty("row", row);
                button[row][column].putClientProperty("column", column);
                button[row][column].putClientProperty("key", key[row][column]);
                panel[row].add(button[row][column]);
            }
            parent.add(panel[row]);
        }
        add(parent,BorderLayout.SOUTH);
    }

    public class MyKeyListener implements KeyListener(){


    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }
    }
}

【问题讨论】:

    标签: java swing keylistener


    【解决方案1】:

    问题出在这里:

    public class MyKeyListener implements KeyListener(){
    

    应该是

    public class MyKeyListener implements KeyListener {
    

    没有括号。

    【讨论】:

    • 括号告诉编译器(和 IDE)您正在尝试引用一个方法。接口不是方法,因此需要在没有 () 的情况下调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多