-
Bug
-
Resolution: Fixed
-
P3
-
5.0, 5.0u17-crev, 6
-
b47
-
x86, sparc, itanium
-
linux, solaris_1, windows_2000, windows_xp, windows_vista
Name: rmT116609 Date: 07/28/2004
FULL PRODUCT VERSION :
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)
java version "1.5.0-beta2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta2-b51)
Java HotSpot(TM) Client VM (build 1.5.0-beta2-b51, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
When using a JDialog, setting a cusor on one if its child components (say a label added to it) - the cursor is ignored. This works fine with JFrame however.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
When hovering the mouse over a central component (a JLabel in the BorderLayout.CENTER position), the mouse cursor should change from the pointer to a hand.
ACTUAL -
The cursor stay the same (e.g. a pointer) when the JDialog is used, but it works fine when a JFrame is used.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
import junit.framework.TestCase;
/**
* Test case to demonstrate problem/difference between JDialog and JFrame
* cursor.
*/
public class JDialogCursor_TestCase extends TestCase
{
public void testJDialogCursor()
throws Exception
{
JDialog dialog = new JDialog();
dialog.setTitle("JDialog cursor test (fails)");
dialog.setLayout(new BorderLayout());
dialog.add(new JLabel("Close this dialog when ready to continue"), BorderLayout.NORTH);
JLabel centerLabel = new JLabel("Cursor should be a hand in this label area");
centerLabel.setBorder(new LineBorder(Color.BLACK));
centerLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
dialog.add(centerLabel, BorderLayout.CENTER);
dialog.setSize(400, 200);
dialog.setVisible(true);
while (dialog.isVisible())
{
Thread.sleep(1000);
}
dialog.dispose();
}
public void testJFrameCursor()
throws Exception
{
JFrame frame = new JFrame();
frame.setTitle("JFrame cursor test (works)");
frame.setLayout(new BorderLayout());
frame.add(new JLabel("Close this frame when ready to continue"), BorderLayout.NORTH);
JLabel centerLabel = new JLabel("Cursor should be a hand in this label area");
centerLabel.setBorder(new LineBorder(Color.BLACK));
centerLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
frame.add(centerLabel, BorderLayout.CENTER);
frame.setSize(400, 200);
frame.setVisible(true);
while (frame.isVisible())
{
Thread.sleep(1000);
}
frame.dispose();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use JFrame instead of JDialog. However, JFrame does not have the modality control like a JDialog does.
(Incident Review ID: 277202)
======================================================================
FULL PRODUCT VERSION :
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)
java version "1.5.0-beta2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta2-b51)
Java HotSpot(TM) Client VM (build 1.5.0-beta2-b51, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
When using a JDialog, setting a cusor on one if its child components (say a label added to it) - the cursor is ignored. This works fine with JFrame however.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
When hovering the mouse over a central component (a JLabel in the BorderLayout.CENTER position), the mouse cursor should change from the pointer to a hand.
ACTUAL -
The cursor stay the same (e.g. a pointer) when the JDialog is used, but it works fine when a JFrame is used.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
import junit.framework.TestCase;
/**
* Test case to demonstrate problem/difference between JDialog and JFrame
* cursor.
*/
public class JDialogCursor_TestCase extends TestCase
{
public void testJDialogCursor()
throws Exception
{
JDialog dialog = new JDialog();
dialog.setTitle("JDialog cursor test (fails)");
dialog.setLayout(new BorderLayout());
dialog.add(new JLabel("Close this dialog when ready to continue"), BorderLayout.NORTH);
JLabel centerLabel = new JLabel("Cursor should be a hand in this label area");
centerLabel.setBorder(new LineBorder(Color.BLACK));
centerLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
dialog.add(centerLabel, BorderLayout.CENTER);
dialog.setSize(400, 200);
dialog.setVisible(true);
while (dialog.isVisible())
{
Thread.sleep(1000);
}
dialog.dispose();
}
public void testJFrameCursor()
throws Exception
{
JFrame frame = new JFrame();
frame.setTitle("JFrame cursor test (works)");
frame.setLayout(new BorderLayout());
frame.add(new JLabel("Close this frame when ready to continue"), BorderLayout.NORTH);
JLabel centerLabel = new JLabel("Cursor should be a hand in this label area");
centerLabel.setBorder(new LineBorder(Color.BLACK));
centerLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
frame.add(centerLabel, BorderLayout.CENTER);
frame.setSize(400, 200);
frame.setVisible(true);
while (frame.isVisible())
{
Thread.sleep(1000);
}
frame.dispose();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use JFrame instead of JDialog. However, JFrame does not have the modality control like a JDialog does.
(Incident Review ID: 277202)
======================================================================
- duplicates
-
JDK-6253850 REGRESSION: The setCursor(Cursor) doesn't work on 1.5.0
-
- Closed
-
-
JDK-6254133 Setting cursor to not-default does not work in Dialog
-
- Closed
-
-
JDK-6294063 REGRESSION: JDialog with glasspane does not shows the assigned cursor
-
- Closed
-
-
JDK-6957180 Mouse cursor does not become TEXT_CURSOR on text field on JDialog created with parent=null
-
- Closed
-
-
JDK-6435308 JTable Resize Cursor not set when using JDialog
-
- Closed
-