Why isn't the keylistener working after adding a component to the main JPanel

30 Views Asked by At

Please forgive my impatience and stress as this is my 7th day trying to figure this out. I have tried requestfocus everywhere to no avail. I've tried System.out.print'ing the keyPressed at the beginning and there is no response. As soon as I remove the JButton from the code, namely, jp.add(submit); it sstarts working again. Any thoughts?

package scrabbleracks;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;

import javax.imageio.ImageIO;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class Scrabble extends JPanel {

    public JFrame jf;
    public JButton submit;

    public Scrabble() {
        init();
        gui();
    }
    
public void gui() {
    jf = new JFrame();
    jf.setBounds(0, 0, 1000, 1200);
    jf.getContentPane().add(panelGUI());
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    KeyListenerTest kl = new KeyListenerTest();
    jf.addKeyListener(kl);
    
    MouseEvents me = new MouseEvents();
    jf.addMouseListener(me);
    jf.addMouseMotionListener(me);
}


public JPanel panelGUI() {
    JPanel jp = new JPanel() {
        @Override
        public void paintComponent(Graphics g) { 
            ...
        }

    }; 
    
    
        submit = new JButton("Submit");
            jp.add(submit);
            jp.setFocusable(true);
            jp.requestFocusInWindow();
            
    submit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent d){
            ...
        }
    });

    jp.setVisible(true);
    jp.setOpaque(true);
    return jp;

}

   
   

public class MouseEvents extends JFrame implements MouseListener, MouseMotionListener {

    @Override
    public void mousePressed(MouseEvent event) {

    }

    @Override
    public void mouseReleased(MouseEvent arg0) {

    }

    @Override
    public void mouseDragged(MouseEvent e) {

    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}


 public class KeyListenerTest extends JFrame implements KeyListener, ActionListener {

    public KeyListenerTest() {
         this.setFocusable(true);
             this.requestFocusInWindow();
    }
    
    @Override
    public void keyTyped(KeyEvent ke) {

        String f = "";
        System.out.println("cantilena");    
        if ((xxx < 15 && yyy < 15) && (xxx >= 0 && yyy >= 0)) {

        char cChar = ke.getKeyChar();
        String cStr = Character.toString(cChar).toUpperCase();
        System.out.println("bbb " + cStr);

                if (isLetter(cStr)) {
        if (isOnRack(cStr)) {
        

                System.out.println("LOL " + cStr);
                boardLetters2DArray[xxx][yyy] = cStr;
                jf.validate();
                jf.repaint();
                
                if (downRightOrNothing == 1) {
                        yyy += 1;
                    }

                    if (downRightOrNothing == 2) {
                        xxx += 1;
                    }
                    
                    jf.validate();
                    jf.repaint();
                }else {
            System.out.println("vdvvdvdvdvdvdvdvdvdvdvd");
            if (isOnRack("_")) {
                System.out.println("ccc");
                boardLetters2DArray[xxx][yyy] = "thisisablank" + cStr;
                if (downRightOrNothing == 1) {
                    yyy += 1;
                }
                if (downRightOrNothing == 2) {
                    xxx += 1;
                }
                jf.validate();
                jf.repaint();

            }
            }
            
        } 
    }
        
    }
    

    @Override
    public void keyPressed(KeyEvent ke) {
        if (ke.getKeyCode() == KeyEvent.VK_BACK_SPACE) {


        }
    }

    @Override
    public void keyReleased(KeyEvent ke) {

    }

    @Override
    public void actionPerformed(ActionEvent ae) {

    }

}
 
 }

I've tried requestFocusw, rewriting the code from scratch,

0

There are 0 best solutions below