<Swing Dev> [TEST CASE] 6219960 NullPointer on ToolTipManager.mouseEntered
Alexander Potochkin
Alexander.Potochkin at Sun.COM
Fri Mar 14 12:25:23 UTC 2008
Hello Jason
Your test case is really helpful, thank you very much
I reopened this bug and upgraded its priority
Thanks again
alexp
> Bug 6219960 has marked Closed, will not be fixed because the evaluator
> could not create a test case. Attached is a test case that will produce
> the null pointer without using custom components (JDK6u4). Hopefully
> this is enough proof that this is a real bug.
>
> Jason Mehrens
>
> ------------------------------------------------------------------------
> Climb to the top of the charts! Play the word scramble challenge with
> star power. Play now!
> <http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_jan>
>
>
> ------------------------------------------------------------------------
>
> import java.awt.*;
> import javax.swing.*;
> import javax.swing.table.*;
>
> public class SinglePixelTooltip implements Runnable {
>
> static volatile Robot robot;
>
> static JFrame frame;
> static JButton save;
> static JTable table;
>
> public static void main(String[] args) throws Exception {
> robot = new Robot();
> SwingUtilities.invokeAndWait(new SinglePixelTooltip());
> robot.waitForIdle();
> Thread.sleep(5L * 1000L);
> showModal("The tooltip should be showing. Press ok with mouse. And don't move it.");
> showModal("Now press ok and move the mouse inside the table (don't leave it).");
>
> Thread.sleep(5L * 1000L);
> showModal("Notice the error happens on mouse move.\n"+
> "Press ok and move the mouse over the "+
> "button to stop the errors.\n"+
> "When the tooltip is shown the 1x1 pixel is gone.");
> }
>
>
> public void run() {
> ToolTipManager.sharedInstance().setDismissDelay(10 * 60 * 1000);
> frame = new JFrame();
> frame.setLocation(20, 20);
> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
> JDesktopPane desk = new JDesktopPane();
> JInternalFrame iframe = new JInternalFrame();
> iframe.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
> desk.add(iframe);
> save = new JButton();
> save.setToolTipText("Wait for dialog to show.");
> save.setText("Wait for the tooltip to show.");
> JPanel panel = new JPanel(new GridLayout(1, 2));
> panel.add(save);
> table = createTable();
> panel.add(new JScrollPane(table));
> iframe.setContentPane(panel);
> frame.getContentPane().add(desk);
> frame.setSize(800, 600);
> iframe.setSize(640, 480);
> iframe.validate();
> iframe.setVisible(true);
> frame.validate();
> frame.setVisible(true);
> try {
> iframe.setSelected(true);
> }
> catch(Exception E) {
> throw new AssertionError(E);
> }
>
> Point pt = frame.getLocation();
> robot.mouseMove(pt.x + 100, pt.y + 100);
> }
>
> private static void showModal(final String msg) throws Exception {
> SwingUtilities.invokeAndWait(new Runnable() {
> public void run() {
> JOptionPane.showInternalMessageDialog(table, msg,
> Thread.currentThread().toString(),
> JOptionPane.PLAIN_MESSAGE);
> }
> });
> }
>
> private static JTable createTable() {
> DefaultTableModel model = new DefaultTableModel();
> JTable table = new JTable(model);
> table.setFillsViewportHeight(true);
> return table;
> }
> }
More information about the swing-dev
mailing list