我的应用程序中有一个可调整大小的表头列
但在以下情况下,情况有所不同。在同一
有时,如果我在进行按钮操作后移动光标以调整大小表头,则光标图标不会更改为调整大小箭头,光标根本不会更改。
这是否可以视为Java Swing中的错误,还是有解决此问题的方法?
更新:附带示例代码。
JTable
。通常情况下,当我将光标移动到表头进行调整大小时,光标图标会改变为调整大小箭头,类似于<-->。但在以下情况下,情况有所不同。在同一
Frame
中有一个按钮操作,在执行操作期间,我正在使用Container.setCursor(Cursor cursor)
方法将光标设置为繁忙图标,并在操作完成后将其更改回默认光标。有时,如果我在进行按钮操作后移动光标以调整大小表头,则光标图标不会更改为调整大小箭头,光标根本不会更改。
这是否可以视为Java Swing中的错误,还是有解决此问题的方法?
更新:附带示例代码。
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ColumnResizeIconTest extends JFrame {
JScrollPane scrollPane;
JTable table;
JButton button;
public ColumnResizeIconTest() {
setLayout(new BorderLayout());
addComponents();
setSize(300,300);
}
private void addComponents() {
addButton();
addTable();
}
private void addButton() {
button = new JButton("Click Me");
button.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setWaitCursor();
for(int i=0; i<2000; i++) {
System.out.print(i);
}
setDefaultCursor();
}
});
add(button, BorderLayout.NORTH);
}
private void addTable() {
scrollPane = new JScrollPane(createTable());
add(scrollPane, BorderLayout.CENTER);
}
private JTable createTable() {
Object[][] cellData = { { "1-1", "1-2","1-3" }, { "2-1", "2-2", "2-3" }, { "3-1", "3-2", "3-3" } };
String[] columnNames = { "column1", "column2", "column3" };
table = new JTable(cellData, columnNames);
return table;
}
private void setWaitCursor() {
Container container = getContentPane();
setWaitCursor(container);
}
private void setWaitCursor(Container container) {
for(int iCount = 0; iCount < container.getComponentCount(); iCount++) {
Component child = (Component) container.getComponent(iCount);
if(child instanceof Container) {
setWaitCursor((Container) child);
} else {
child.setCursor(new Cursor(Cursor.WAIT_CURSOR));
}
}
container.setCursor(new Cursor(Cursor.WAIT_CURSOR));
}
private void setDefaultCursor() {
Container container = getContentPane();
setDefaultCursor(container);
}
private void setDefaultCursor(Container container) {
for(int iCount = 0; iCount < container.getComponentCount(); iCount++) {
Component child = (Component) container.getComponent(iCount);
if(child instanceof Container) {
setDefaultCursor((Container) child);
} else {
child.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
container.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public static void main(String[] argv) throws Exception {
ColumnResizeIconTest test = new ColumnResizeIconTest();
test.setVisible(true);
}
}
点击按钮几次并尝试调整表格列的大小。光标会被固定为默认光标。