Re: Wait Cursor stuck in Table Header, bug??
 
Here you go.  I believe the problem stems from the program running in
a separate thread.  When the mouse cursor crosses the separator in the
table header, the cursor will change to a left/right arrow while it's
in the separator.  When it does this (while it's in WAIT_CURSOR mode),
is what I believe is the problem.  Once the cursor changes in the
separator, it's forever stuck in WAIT_CURSOR mode after that.  Can you
verify this before I submit it as a bug?
Thanks,
Dennis
---------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class Main {
    /** Creates a new instance of Main */
    public Main() {
    }
    private static class RunThread implements Runnable {
        private javax.swing.JFrame mainFrame;
                    public RunThread(javax.swing.JFrame frame)
{ mainFrame = frame; }
                    public void run() {
                    try {
 
mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                        Thread.sleep(5000);
 
(mainFrame).setCursor(Cursor.getDefaultCursor());
                        System.out.println("Cursor Should have
Returned to Normal here");
                    }catch(Exception e){} ;
                 }
        }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        final JFrame mainFrame = new JFrame("Test Frame");
        mainFrame.setSize(500,500);
        Container c = mainFrame.getContentPane();
        c.setBackground(Color.GRAY);
        c.setLayout(new FlowLayout());
        // Add JTable
        Object[][] data = {{"row1","row2"}};
        String[] columnName = {"Press Here","Pause in Separator"};
        JTable table = new JTable(data,columnName);
        JTableHeader header = table.getTableHeader();
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                 mainFrame.dispose();
                 System.exit(0);
            }
         });
        header.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                new Thread(new RunThread(mainFrame)).start();
            }
        });
        c.setLayout(new BorderLayout());
        c.add(header,BorderLayout.NORTH);
        c.add(table,BorderLayout.CENTER);
        mainFrame.setVisible(true);
    }
}