gpt4 book ai didi

java - 禁用的 JTable 上的手形光标

转载 作者:行者123 更新时间:2023-11-29 05:15:18 25 4
gpt4 key购买 nike

我在 JScrollPane 中有一个 JTable,使用 enabled(false) 禁用了它,但是我仍然想换成手鼠标悬停。我试过简单地手动设置表格的光标:

table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

我已经尝试覆盖 JTable 的 getCursor() 方法:

JTable table = new JTable(tableModel){
@Override
public Cursor getCursor() {
return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); //DOESNT WORK
}
};

然而,这两种技术都不起作用。我必须使用的一种方法是向整个表添加一个mouseMotionListener,但是这个问题是在实际应用程序中按下驻留在表中的按钮会导致“JOptionpane”显示;如果用户继续将光标移出表格并关闭“JOptionPane”,则可能会出现错误。 “MouseMotionListener”肯定是过度的..?

我也研究过重写 JTable(以及随后的 Component)的 setEnabled 方法,但是我正在努力找出哪个代码防止显示手形光标。任何帮助将非常感激!代码如下:

import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class TableCursorTest {
public TableCursorTest(){
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
String[] headers = {"Items"};
Object[][] data = new Object[][]{{"item 1"},{"item 2"}};
DefaultTableModel tableModel = new DefaultTableModel(data, headers);

@SuppressWarnings("serial")
@Override
public Cursor getCursor() {
return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); //DOESNT WORK
}
};

JScrollPane scrollPane = new JScrollPane(table);
table.setEnabled(false);
table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //DOESNT WORK


constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 0;
constraints.weighty = 0;
panel.add(scrollPane, constraints);

frame.setContentPane(panel);
frame.setPreferredSize(new Dimension(500,500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args){
new TableCursorTest();
}

}

更新: 抱歉,问题缺少一些信息:表格并不总是填充滚动 Pane ,因此设置滚动 Pane 的手形光标会导致手形光标位于不存在的行上。如果可能,手形光标应仅出现在表格的行上方。

最佳答案

table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //DOESNT WORK

同时..

scrollPane.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //DOES WORK

关于java - 禁用的 JTable 上的手形光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com