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);
}
}