-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
1.1.3, 1.1.8
-
generic, x86
-
solaris_2.6, windows_nt
Name: rlT66838 Date: 07/21/97
Java People,
After 8 hours of fiddling, I've reproduced a bug in the Java Bug fixes!
Specifically: 4032657. This email is to help anyone else with the problem and
maybe to help sun identify and fix the problem!
(If you've never looked:
http://java.sun.com/products/jdk/1.1/knownbugs/classes_awt.html
)
The bug is, I've created a frame with a Canvas on it. The canvas is a
keyListener. It prints out all the key events. (See code below).
By experimentation I've found:
A) a Frame with a Canvas works fine. All key events received.
B) a frame with a border layout, the Canvas in the center, and
a button to the North, works fine too. All key events received.
C) BUT IF YOU ADD A PANEL in the North, with the button in the panel,
the canvas DOES NOT RECEIVE any key events!
In fact. If you just add the panel, and not the button, it doesn't receive
either. But I can't prove the location without something showing me where the
edge is.
BTW. The mouse events are not a problem. They are always received correctly.
BTW 2. Adding a Panel between the canvas and the frame is no improvement.
This makes some of my work pretty useless. Can't do much here!
Regards,
Larry
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
public class TestCanvas extends Frame
implements KeyListener, MouseListener {
public TestCanvas(String s)
{
super(s);
this.setLayout(new BorderLayout(0,0));
// comment out the next 6 lines and the keytyped works
// fine. Let them stay and the canvas never gets the events. Nor
// does this Frame. But the button works! :-}
Panel p = new Panel();
p.addKeyListener(this);
p.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 15));
Button
wquit = new Button("Quit");
p.add(wquit);
this.add("North", p);
TestSubCanvas c=new TestSubCanvas();
this.add("Center", c);
c.addKeyListener(this);
c.addMouseListener(this);
}
public void keyTyped(KeyEvent _e)
{ println("TestCanvas.keyTyped"); }
public void keyPressed(KeyEvent _e)
{ println("TestCanvas.keyPressed"); }
public void keyReleased(KeyEvent _e)
{ println("TestCanvas.keyReleased");}
public void mouseClicked(MouseEvent _e)
{ println("TestCanvas.mouseClicked");}
public void mouseEntered(MouseEvent _e)
{ println("TestCanvas.mouseEntered"); }
public void mouseExited(MouseEvent _e)
{ println("TestCanvas.mouseExited");}
public void mousePressed(MouseEvent _e)
{ println("TestCanvas.mousePressed");}
public void mouseReleased(MouseEvent _e)
{ println("TestCanvas.mouseReleased");}
public static void main(String argv[])
{
Frame f = new TestCanvas("Test Canvas");
f.show();
}
public void println(String s)
{
System.out.println(s);
}
} // TestCanvas
class TestSubCanvas extends Canvas
implements KeyListener, MouseListener {
public TestSubCanvas()
{
super();
this.addKeyListener(this);
this.addMouseListener(this);
}
public void keyTyped(KeyEvent _e)
{ println("TestSubCanvas.keyTyped"); }
public void keyPressed(KeyEvent _e)
{ println("TestSubCanvas.keyPressed"); }
public void keyReleased(KeyEvent _e)
{ println("TestSubCanvas.keyReleased");}
public void mouseClicked(MouseEvent _e)
{ println("TestSubCanvas.mouseClicked");}
public void mouseEntered(MouseEvent _e)
{ println("TestSubCanvas.mouseEntered"); }
public void mouseExited(MouseEvent _e)
{ println("TestSubCanvas.mouseExited");}
public void mousePressed(MouseEvent _e)
{ println("TestSubCanvas.mousePressed");}
public void mouseReleased(MouseEvent _e)
{ println("TestSubCanvas.mouseReleased");}
public void println(String s)
{ System.out.println(s);
}
} // TestSubCanvas
======================================================================
- relates to
-
JDK-4177815 Canvas does not pass on KeyEvent's.
- Closed
-
JDK-4032657 The all key events can't be got on the panal of win32
- Closed