Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 712637
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T04:52:13+00:00 2026-05-14T04:52:13+00:00

i have implemented keylistener interface and implemented all the needed methods but when i

  • 0

i have implemented keylistener interface and implemented all the needed methods but when i press the key nothing happens here, why?

package swing;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.GridLayout;
    import java.awt.Point;
    import java.awt.RenderingHints;
    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.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.image.BufferedImage;

    import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLayeredPane;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;



    class   Paper extends JPanel implements MouseListener,MouseMotionListener,ActionListener,KeyListener
        {
            static BufferedImage image;
            String shape;
            Color color=Color.black;
            Point start;
            Point end;
            Point mp;
            Button elipse=new Button("elipse");
            int x[]=new int[50];
            int y[]=new int[50];
            Button rectangle=new Button("rect");
            Button line=new Button("line");
            Button roundrect=new Button("roundrect");
            Button polygon=new Button("poly");
            Button text=new Button("text");
            ImageIcon erasericon=new ImageIcon("images/eraser.gif");
            JButton erase=new JButton(erasericon);
            JButton[] colourbutton=new JButton[9];
            String selected;
            Point label;
            String key;
            int ex,ey;//eraser
            //DatagramSocket dataSocket;
            JButton button = new JButton("test");
            JLayeredPane layerpane;
            Point p=new Point();
            int w,h;
            public Paper() 
            {        
                JFrame frame=new JFrame("Whiteboard");
             frame.setVisible(true);
             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             frame.setSize(640, 480);
             frame.setBackground(Color.black);



             layerpane=frame.getLayeredPane();

             setWidth(539,444);
            setBounds(69,0,555,444);



            layerpane.add(this,new Integer(2));
            layerpane.add(this.addButtons(),new Integer(0));

                setLayout(null);
                setOpaque(false);


                addMouseListener(this);
                addMouseMotionListener(this);

                setFocusable(true);
                addKeyListener(this);

                System.out.println(isFocusable());
                setBorder(BorderFactory.createLineBorder(Color.black));         
            }
               public  void paintComponent(Graphics g) 
               {
                try
                {
                    super.paintComponent(g);
                    g.drawImage(image, 0, 0, this);
                    Graphics2D g2 = (Graphics2D)g;
                    if(color!=null)
                    g2.setPaint(color);
                    if(start!=null && end!=null)
                    {
                        if(selected==("elipse"))
                            g2.drawOval(start.x, start.y,(end.x-start.x),(end.y-start.y));
                        else if(selected==("rect"))
                            g2.drawRect(start.x, start.y, (end.x-start.x),(end.y-start.y));
                        else if(selected==("rrect"))
                            g2.drawRoundRect(start.x, start.y, (end.x-start.x),(end.y-start.y),11,11);
                        else if(selected==("line"))
                            g2.drawLine(start.x,start.y,end.x,end.y);
                        else if(selected==("poly"))
                            g2.drawPolygon(x,y,2);
                    }
                }
                    catch(Exception e)
                    {}
            }
            //Function to draw the shape on image
            public  void draw()
            {       
                Graphics2D g2 = image.createGraphics();
                g2.setPaint(color);
                if(start!=null && end!=null)
                {
                    if(selected=="line")
                            g2.drawLine(start.x, start.y, end.x, end.y);
                    else if(selected=="elipse")
                            g2.drawOval(start.x, start.y, (end.x-start.x),(end.y-start.y));
                    else if(selected=="rect")
                            g2.drawRect(start.x, start.y, (end.x-start.x),(end.y-start.y));
                    else if(selected==("rrect"))
                        g2.drawRoundRect(start.x, start.y, (end.x-start.x),(end.y-start.y),11,11);
                    else if(selected==("poly"))
                        g2.drawPolygon(x,y,2);

                }
                if(label!=null)
                {
                    JTextArea textarea=new JTextArea();

                    if(selected==("text"))
                    {
                        textarea.setBounds(label.x, label.y, 50, 50);
                        textarea.setMaximumSize(new Dimension(100,100));
                        textarea.setBackground(new Color(237,237,237));

                        add(textarea);

                        g2.drawString("key",label.x,label.y);
                    }
                }
                start=null;
                repaint();
                g2.dispose();
            } 
            public void text()
            {
                System.out.println(label);

            }
            //Function which provides the erase functionality
            public  void erase() 
            {
                Graphics2D pic=(Graphics2D) image.getGraphics();
                Color erasecolor=new Color(237,237,237);
                pic.setPaint(erasecolor);
                if(start!=null)
                pic.fillRect(start.x, start.y, 10, 10);
            }
            //To set the size of the image
            public void setWidth(int x,int y)
            {
                System.out.println("("+x+","+y+")");
                w=x;
                h=y;
                image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
             }
            //Function to add buttons into the panel, calling this function returns a panel  
            public JPanel addButtons()
            {
                JPanel buttonpanel=new JPanel();
                buttonpanel.setMaximumSize(new Dimension(70,70));
                JPanel shape=new JPanel();
                JPanel colourbox=new JPanel();


                shape.setLayout(new GridLayout(4,2));
                shape.setMaximumSize(new Dimension(70,140));

                colourbox.setLayout(new GridLayout(3,3));
                colourbox.setMaximumSize(new Dimension(70,70));

                buttonpanel.setLayout(new BoxLayout(buttonpanel,BoxLayout.Y_AXIS));

                elipse.addActionListener(this);
                elipse.setToolTipText("Elipse");
                rectangle.addActionListener(this);
                rectangle.setToolTipText("Rectangle");
                line.addActionListener( this);
                line.setToolTipText("Line");
                erase.addActionListener(this);
                erase.setToolTipText("Eraser");
                roundrect.addActionListener(this);
                roundrect.setToolTipText("Round rect");
                polygon.addActionListener(this);
                polygon.setToolTipText("Polygon");
                text.addActionListener(this);
                text.setToolTipText("Text");
                shape.add(elipse);
                shape.add(rectangle);
                shape.add(line);
                shape.add(erase);
                shape.add(roundrect);
                shape.add(polygon);
                shape.add(text);
                buttonpanel.add(shape);

                for(int i=0;i<9;i++)
                {
                    colourbutton[i]=new JButton();
                    colourbox.add(colourbutton[i]);
                    if(i==0)
                        colourbutton[0].setBackground(Color.black);
                    else if(i==1)
                        colourbutton[1].setBackground(Color.white);
                    else if(i==2)
                        colourbutton[2].setBackground(Color.red);
                    else if(i==3)
                        colourbutton[3].setBackground(Color.orange);
                    else if(i==4)
                        colourbutton[4].setBackground(Color.blue);
                    else if(i==5)
                        colourbutton[5].setBackground(Color.green);
                    else if(i==6)
                        colourbutton[6].setBackground(Color.pink);
                    else if(i==7)
                        colourbutton[7].setBackground(Color.magenta);
                    else if(i==8)
                        colourbutton[8].setBackground(Color.cyan);
                    colourbutton[i].addActionListener(this);
                }
                buttonpanel.add(colourbox);
                buttonpanel.setBounds(0, 0, 70, 210);
                return buttonpanel;
            }

            public void mouseClicked(MouseEvent e) 
            {
                if(selected=="text")
                {
                    label=new Point();
                    label=e.getPoint();

                    draw();
                }
            }
            @Override
            public void mouseEntered(MouseEvent arg0) 
            {
            }
            public void mouseExited(MouseEvent arg0) {

            }
            public void mousePressed(MouseEvent e) 
            {
                    if(selected=="line"||selected=="erase"||selected=="text")
                    {
                        start=e.getPoint();

                    }
                    else if(selected=="elipse"||selected=="rect"||selected=="rrect")
                    {
                        mp = e.getPoint();

                    }
                    else if(selected=="poly")
                    {
                        x[0]=e.getX();
                        y[0]=e.getY();
                    }

            }
            public void mouseReleased(MouseEvent e) 
            {
                if(start!=null)
                {
                    if(selected=="line")
                    {
                        end=e.getPoint();           

                    }
                    else if(selected=="elipse"||selected=="rect"||selected=="rrect")
                    {
                        end.x = Math.max(mp.x,e.getX());
                        end.y = Math.max(mp.y,e.getY());

                    }
                    else if(selected=="poly")
                    {
                        x[1]=e.getX();
                        y[1]=e.getY();
                    }           
                    draw();
                }
            }
            public void mouseDragged(MouseEvent e) 
            {
                if(end==null)
                    end = new Point();

                if(start==null)
                        start = new Point();

                 if(selected=="line")
                 {
                    end=e.getPoint();

                 }
                else if(selected=="erase")
                {
                     start=e.getPoint();
                     erase();

                }
                else if(selected=="elipse"||selected=="rect"||selected=="rrect")
                {
                    start.x = Math.min(mp.x,e.getX());
                    start.y = Math.min(mp.y,e.getY());
                    end.x = Math.max(mp.x,e.getX());
                    end.y = Math.max(mp.y,e.getY());

                }
                else if(selected=="poly")
                {
                    x[1]=e.getX();
                    y[1]=e.getY();
                }

                repaint();
            }
            public void mouseMoved(MouseEvent arg0) {} 
            public void actionPerformed(ActionEvent e) 
            {
                if(e.getSource()==elipse)
                    selected="elipse";
                else if(e.getSource()==line)
                    selected="line";    
                else if(e.getSource()==rectangle)
                    selected="rect";
                else if(e.getSource()==erase)
                {
                    selected="erase";
                    System.out.println(selected);
                    erase();
                }
                else if(e.getSource()==roundrect)
                        selected="rrect";
                else if(e.getSource()==polygon)
                    selected="poly";
                else if(e.getSource()==text)
                    selected="text";


                if(e.getSource()==colourbutton[0])
                    color=Color.black;
                else if(e.getSource()==colourbutton[1])
                    color=Color.white;
                else if(e.getSource()==colourbutton[2])
                    color=Color.red;
                else if(e.getSource()==colourbutton[3])
                    color=Color.orange;
                else if(e.getSource()==colourbutton[4])
                    color=Color.blue;
                else if(e.getSource()==colourbutton[5])
                    color=Color.green;
                else if(e.getSource()==colourbutton[6])
                    color=Color.pink;
                else if(e.getSource()==colourbutton[7])
                    color=Color.magenta;
                else if(e.getSource()==colourbutton[8])
                    color=Color.cyan;

            }
            @Override
            public void keyPressed(KeyEvent e) 
            {
                System.out.println("pressed");
            }
            @Override
            public void keyReleased(KeyEvent e) 
            {
                System.out.println("key released");
            }
            @Override
            public void keyTyped(KeyEvent e) 
            {
                System.out.println("Typed");
            }
            public static void main(String[] a)
            {
                new Paper();
            }
        } 

        class Button extends JButton
        {
            String name;
            public Button(String name) 
            {
                this.name=name; 
            }
            public void paintComponent(Graphics g)
            {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D)g;
                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                //g2.setStroke(new BasicStroke(1.2f));
                if (name == "line")     g.drawLine(5,5,30,30);   
                if (name == "elipse") g.drawOval(5,7,25,20);
                if (name== "rect") g.drawRect(5,5,25,23);
                if (name== "roundrect") g.drawRoundRect(5,5,25,23,10,10);
                int a[]=new int[]{20,9,20,23,20};
                int b[]=new int[]{9,23,25,20,9};
                if (name== "poly") g.drawPolyline(a, b, 5);
                if (name== "text") g.drawString("Text",5, 22);
            }
        }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T04:52:13+00:00Added an answer on May 14, 2026 at 4:52 am

    Instead of addKeyListener(this) write frame.addKeyListener(this)

    Edit: For more information read here. And by the way, I don’t think that creating a JFrame inside a Panel is a good design, but that’s up to yours.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

No related questions found

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.