-
Bug
-
Resolution: Unresolved
-
P4
-
6, 8, 9
-
generic
-
generic
Specification for
public int *getIndexAtPoint*(Point p) says:
Given a point in local coordinates, return the zero-based index of the
character under that Point. If the point is invalid, this method returns
-1. Note: the AbstractButton must have a valid size (e.g. have been
added to a parent container whose ancestor container is a valid
top-level window) for this method to be able to return a meaningful value.
But behaviour of this method for JButton and JLable seems to be strange.
Run the following code on b86:
public void test() {
final JFrame f = new JFrame();
final JButton but = new JButton();
but.setText("<html><body><p>Test</p></body></html>");
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
f.setSize(300, 300);
f.setVisible(true);
f.getContentPane().add(but);
} } );
AccessibleText c =
but.getAccessibleContext().getAccessibleText();
Point p;
for(int y = 0; y < 2; y++) {
for(int x = -5; x < 60; x++) {
p = new Point (x,y);
System.out.println("Point = " + p + "; " + c.getIndexAtPoint(p)) ;
}
}
} catch (Exception e) {
//todo
} finally {
f.dispose();
}
}
--output----------------------------------------------
Point = java.awt.Point[x=-5,y=0]; 1
Point = java.awt.Point[x=-4,y=0]; 1
Point = java.awt.Point[x=-3,y=0]; 1
Point = java.awt.Point[x=-2,y=0]; 1
Point = java.awt.Point[x=-1,y=0]; 1
Point = java.awt.Point[x=0,y=0]; 1
Point = java.awt.Point[x=1,y=0]; 1
Point = java.awt.Point[x=2,y=0]; 1
Point = java.awt.Point[x=3,y=0]; 1
Point = java.awt.Point[x=4,y=0]; 2
Point = java.awt.Point[x=5,y=0]; 2
Point = java.awt.Point[x=6,y=0]; 2
Point = java.awt.Point[x=7,y=0]; 2
Point = java.awt.Point[x=8,y=0]; 2
Point = java.awt.Point[x=9,y=0]; 2
Point = java.awt.Point[x=10,y=0]; 2
Point = java.awt.Point[x=11,y=0]; 3
Point = java.awt.Point[x=12,y=0]; 3
Point = java.awt.Point[x=13,y=0]; 3
Point = java.awt.Point[x=14,y=0]; 3
Point = java.awt.Point[x=15,y=0]; 3
Point = java.awt.Point[x=16,y=0]; 3
Point = java.awt.Point[x=17,y=0]; 3
Point = java.awt.Point[x=18,y=0]; 4
Point = java.awt.Point[x=19,y=0]; 4
Point = java.awt.Point[x=20,y=0]; 4
Point = java.awt.Point[x=21,y=0]; 4
Point = java.awt.Point[x=22,y=0]; 4
Point = java.awt.Point[x=23,y=0]; 4
Point = java.awt.Point[x=24,y=0]; 4
Point = java.awt.Point[x=25,y=0]; 5
Point = java.awt.Point[x=26,y=0]; 5
Point = java.awt.Point[x=27,y=0]; 5
Point = java.awt.Point[x=28,y=0]; 5
Point = java.awt.Point[x=29,y=0]; 5
Point = java.awt.Point[x=30,y=0]; 5
Point = java.awt.Point[x=31,y=0]; 5
Point = java.awt.Point[x=32,y=0]; 5
Point = java.awt.Point[x=33,y=0]; 5
Point = java.awt.Point[x=34,y=0]; 5
Point = java.awt.Point[x=35,y=0]; 5
Point = java.awt.Point[x=36,y=0]; 5
Point = java.awt.Point[x=37,y=0]; 5
Point = java.awt.Point[x=38,y=0]; 5
Point = java.awt.Point[x=39,y=0]; 5
Point = java.awt.Point[x=40,y=0]; 5
Point = java.awt.Point[x=41,y=0]; 5
Point = java.awt.Point[x=42,y=0]; 5
Point = java.awt.Point[x=43,y=0]; 5
Point = java.awt.Point[x=44,y=0]; 5
Point = java.awt.Point[x=45,y=0]; 5
Point = java.awt.Point[x=46,y=0]; 5
Point = java.awt.Point[x=47,y=0]; 5
Point = java.awt.Point[x=48,y=0]; 5
Point = java.awt.Point[x=49,y=0]; 5
Point = java.awt.Point[x=50,y=0]; 5
Point = java.awt.Point[x=51,y=0]; 5
Point = java.awt.Point[x=52,y=0]; 5
Point = java.awt.Point[x=53,y=0]; 5
Point = java.awt.Point[x=54,y=0]; 5
Point = java.awt.Point[x=55,y=0]; 5
Point = java.awt.Point[x=56,y=0]; 5
Point = java.awt.Point[x=57,y=0]; 5
Point = java.awt.Point[x=58,y=0]; 5
Point = java.awt.Point[x=59,y=0]; 5
Point = java.awt.Point[x=-5,y=1]; 5
Point = java.awt.Point[x=-4,y=1]; 5
Point = java.awt.Point[x=-3,y=1]; 5
Point = java.awt.Point[x=-2,y=1]; 5
Point = java.awt.Point[x=-1,y=1]; 5
Point = java.awt.Point[x=0,y=1]; 5
Point = java.awt.Point[x=1,y=1]; 5
Point = java.awt.Point[x=2,y=1]; 5
Point = java.awt.Point[x=3,y=1]; 5
Point = java.awt.Point[x=4,y=1]; 5
Point = java.awt.Point[x=5,y=1]; 5
Point = java.awt.Point[x=6,y=1]; 5
Point = java.awt.Point[x=7,y=1]; 5
Point = java.awt.Point[x=8,y=1]; 5
Point = java.awt.Point[x=9,y=1]; 5
Point = java.awt.Point[x=10,y=1]; 5
Point = java.awt.Point[x=11,y=1]; 5
Point = java.awt.Point[x=12,y=1]; 5
Point = java.awt.Point[x=13,y=1]; 5
Point = java.awt.Point[x=14,y=1]; 5
Point = java.awt.Point[x=15,y=1]; 5
Point = java.awt.Point[x=16,y=1]; 5
Point = java.awt.Point[x=17,y=1]; 5
Point = java.awt.Point[x=18,y=1]; 5
Point = java.awt.Point[x=19,y=1]; 5
Point = java.awt.Point[x=20,y=1]; 5
Point = java.awt.Point[x=21,y=1]; 5
Point = java.awt.Point[x=22,y=1]; 5
Point = java.awt.Point[x=23,y=1]; 5
Point = java.awt.Point[x=24,y=1]; 5
Point = java.awt.Point[x=25,y=1]; 5
Point = java.awt.Point[x=26,y=1]; 5
Point = java.awt.Point[x=27,y=1]; 5
Point = java.awt.Point[x=28,y=1]; 5
Point = java.awt.Point[x=29,y=1]; 5
Point = java.awt.Point[x=30,y=1]; 5
Point = java.awt.Point[x=31,y=1]; 5
Point = java.awt.Point[x=32,y=1]; 5
Point = java.awt.Point[x=33,y=1]; 5
Point = java.awt.Point[x=34,y=1]; 5
Point = java.awt.Point[x=35,y=1]; 5
Point = java.awt.Point[x=36,y=1]; 5
Point = java.awt.Point[x=37,y=1]; 5
Point = java.awt.Point[x=38,y=1]; 5
Point = java.awt.Point[x=39,y=1]; 5
Point = java.awt.Point[x=40,y=1]; 5
Point = java.awt.Point[x=41,y=1]; 5
Point = java.awt.Point[x=42,y=1]; 5
Point = java.awt.Point[x=43,y=1]; 5
Point = java.awt.Point[x=44,y=1]; 5
Point = java.awt.Point[x=45,y=1]; 5
Point = java.awt.Point[x=46,y=1]; 5
Point = java.awt.Point[x=47,y=1]; 5
Point = java.awt.Point[x=48,y=1]; 5
Point = java.awt.Point[x=49,y=1]; 5
Point = java.awt.Point[x=50,y=1]; 5
Point = java.awt.Point[x=51,y=1]; 5
Point = java.awt.Point[x=52,y=1]; 5
Point = java.awt.Point[x=53,y=1]; 5
Point = java.awt.Point[x=54,y=1]; 5
Point = java.awt.Point[x=55,y=1]; 5
Point = java.awt.Point[x=56,y=1]; 5
Point = java.awt.Point[x=57,y=1]; 5
Point = java.awt.Point[x=58,y=1]; 5
Point = java.awt.Point[x=59,y=1]; 5
If to run this test several times it is possible to get different results.
public int *getIndexAtPoint*(Point p) says:
Given a point in local coordinates, return the zero-based index of the
character under that Point. If the point is invalid, this method returns
-1. Note: the AbstractButton must have a valid size (e.g. have been
added to a parent container whose ancestor container is a valid
top-level window) for this method to be able to return a meaningful value.
But behaviour of this method for JButton and JLable seems to be strange.
Run the following code on b86:
public void test() {
final JFrame f = new JFrame();
final JButton but = new JButton();
but.setText("<html><body><p>Test</p></body></html>");
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
f.setSize(300, 300);
f.setVisible(true);
f.getContentPane().add(but);
} } );
AccessibleText c =
but.getAccessibleContext().getAccessibleText();
Point p;
for(int y = 0; y < 2; y++) {
for(int x = -5; x < 60; x++) {
p = new Point (x,y);
System.out.println("Point = " + p + "; " + c.getIndexAtPoint(p)) ;
}
}
} catch (Exception e) {
//todo
} finally {
f.dispose();
}
}
--output----------------------------------------------
Point = java.awt.Point[x=-5,y=0]; 1
Point = java.awt.Point[x=-4,y=0]; 1
Point = java.awt.Point[x=-3,y=0]; 1
Point = java.awt.Point[x=-2,y=0]; 1
Point = java.awt.Point[x=-1,y=0]; 1
Point = java.awt.Point[x=0,y=0]; 1
Point = java.awt.Point[x=1,y=0]; 1
Point = java.awt.Point[x=2,y=0]; 1
Point = java.awt.Point[x=3,y=0]; 1
Point = java.awt.Point[x=4,y=0]; 2
Point = java.awt.Point[x=5,y=0]; 2
Point = java.awt.Point[x=6,y=0]; 2
Point = java.awt.Point[x=7,y=0]; 2
Point = java.awt.Point[x=8,y=0]; 2
Point = java.awt.Point[x=9,y=0]; 2
Point = java.awt.Point[x=10,y=0]; 2
Point = java.awt.Point[x=11,y=0]; 3
Point = java.awt.Point[x=12,y=0]; 3
Point = java.awt.Point[x=13,y=0]; 3
Point = java.awt.Point[x=14,y=0]; 3
Point = java.awt.Point[x=15,y=0]; 3
Point = java.awt.Point[x=16,y=0]; 3
Point = java.awt.Point[x=17,y=0]; 3
Point = java.awt.Point[x=18,y=0]; 4
Point = java.awt.Point[x=19,y=0]; 4
Point = java.awt.Point[x=20,y=0]; 4
Point = java.awt.Point[x=21,y=0]; 4
Point = java.awt.Point[x=22,y=0]; 4
Point = java.awt.Point[x=23,y=0]; 4
Point = java.awt.Point[x=24,y=0]; 4
Point = java.awt.Point[x=25,y=0]; 5
Point = java.awt.Point[x=26,y=0]; 5
Point = java.awt.Point[x=27,y=0]; 5
Point = java.awt.Point[x=28,y=0]; 5
Point = java.awt.Point[x=29,y=0]; 5
Point = java.awt.Point[x=30,y=0]; 5
Point = java.awt.Point[x=31,y=0]; 5
Point = java.awt.Point[x=32,y=0]; 5
Point = java.awt.Point[x=33,y=0]; 5
Point = java.awt.Point[x=34,y=0]; 5
Point = java.awt.Point[x=35,y=0]; 5
Point = java.awt.Point[x=36,y=0]; 5
Point = java.awt.Point[x=37,y=0]; 5
Point = java.awt.Point[x=38,y=0]; 5
Point = java.awt.Point[x=39,y=0]; 5
Point = java.awt.Point[x=40,y=0]; 5
Point = java.awt.Point[x=41,y=0]; 5
Point = java.awt.Point[x=42,y=0]; 5
Point = java.awt.Point[x=43,y=0]; 5
Point = java.awt.Point[x=44,y=0]; 5
Point = java.awt.Point[x=45,y=0]; 5
Point = java.awt.Point[x=46,y=0]; 5
Point = java.awt.Point[x=47,y=0]; 5
Point = java.awt.Point[x=48,y=0]; 5
Point = java.awt.Point[x=49,y=0]; 5
Point = java.awt.Point[x=50,y=0]; 5
Point = java.awt.Point[x=51,y=0]; 5
Point = java.awt.Point[x=52,y=0]; 5
Point = java.awt.Point[x=53,y=0]; 5
Point = java.awt.Point[x=54,y=0]; 5
Point = java.awt.Point[x=55,y=0]; 5
Point = java.awt.Point[x=56,y=0]; 5
Point = java.awt.Point[x=57,y=0]; 5
Point = java.awt.Point[x=58,y=0]; 5
Point = java.awt.Point[x=59,y=0]; 5
Point = java.awt.Point[x=-5,y=1]; 5
Point = java.awt.Point[x=-4,y=1]; 5
Point = java.awt.Point[x=-3,y=1]; 5
Point = java.awt.Point[x=-2,y=1]; 5
Point = java.awt.Point[x=-1,y=1]; 5
Point = java.awt.Point[x=0,y=1]; 5
Point = java.awt.Point[x=1,y=1]; 5
Point = java.awt.Point[x=2,y=1]; 5
Point = java.awt.Point[x=3,y=1]; 5
Point = java.awt.Point[x=4,y=1]; 5
Point = java.awt.Point[x=5,y=1]; 5
Point = java.awt.Point[x=6,y=1]; 5
Point = java.awt.Point[x=7,y=1]; 5
Point = java.awt.Point[x=8,y=1]; 5
Point = java.awt.Point[x=9,y=1]; 5
Point = java.awt.Point[x=10,y=1]; 5
Point = java.awt.Point[x=11,y=1]; 5
Point = java.awt.Point[x=12,y=1]; 5
Point = java.awt.Point[x=13,y=1]; 5
Point = java.awt.Point[x=14,y=1]; 5
Point = java.awt.Point[x=15,y=1]; 5
Point = java.awt.Point[x=16,y=1]; 5
Point = java.awt.Point[x=17,y=1]; 5
Point = java.awt.Point[x=18,y=1]; 5
Point = java.awt.Point[x=19,y=1]; 5
Point = java.awt.Point[x=20,y=1]; 5
Point = java.awt.Point[x=21,y=1]; 5
Point = java.awt.Point[x=22,y=1]; 5
Point = java.awt.Point[x=23,y=1]; 5
Point = java.awt.Point[x=24,y=1]; 5
Point = java.awt.Point[x=25,y=1]; 5
Point = java.awt.Point[x=26,y=1]; 5
Point = java.awt.Point[x=27,y=1]; 5
Point = java.awt.Point[x=28,y=1]; 5
Point = java.awt.Point[x=29,y=1]; 5
Point = java.awt.Point[x=30,y=1]; 5
Point = java.awt.Point[x=31,y=1]; 5
Point = java.awt.Point[x=32,y=1]; 5
Point = java.awt.Point[x=33,y=1]; 5
Point = java.awt.Point[x=34,y=1]; 5
Point = java.awt.Point[x=35,y=1]; 5
Point = java.awt.Point[x=36,y=1]; 5
Point = java.awt.Point[x=37,y=1]; 5
Point = java.awt.Point[x=38,y=1]; 5
Point = java.awt.Point[x=39,y=1]; 5
Point = java.awt.Point[x=40,y=1]; 5
Point = java.awt.Point[x=41,y=1]; 5
Point = java.awt.Point[x=42,y=1]; 5
Point = java.awt.Point[x=43,y=1]; 5
Point = java.awt.Point[x=44,y=1]; 5
Point = java.awt.Point[x=45,y=1]; 5
Point = java.awt.Point[x=46,y=1]; 5
Point = java.awt.Point[x=47,y=1]; 5
Point = java.awt.Point[x=48,y=1]; 5
Point = java.awt.Point[x=49,y=1]; 5
Point = java.awt.Point[x=50,y=1]; 5
Point = java.awt.Point[x=51,y=1]; 5
Point = java.awt.Point[x=52,y=1]; 5
Point = java.awt.Point[x=53,y=1]; 5
Point = java.awt.Point[x=54,y=1]; 5
Point = java.awt.Point[x=55,y=1]; 5
Point = java.awt.Point[x=56,y=1]; 5
Point = java.awt.Point[x=57,y=1]; 5
Point = java.awt.Point[x=58,y=1]; 5
Point = java.awt.Point[x=59,y=1]; 5
If to run this test several times it is possible to get different results.