gpt4 book ai didi

java - 更改调整 JTable 标题光标的大小

转载 作者:行者123 更新时间:2023-11-30 07:52:19 25 4
gpt4 key购买 nike

所以我知道您可以使用以下命令更改 jtable 标题的光标:

jTable.getTableHeader().setCursor(MyClient.greenResizeHorizontal);

如何更改列标题之间的水平调整大小光标?

--编辑--

根据@MadProgrammer,我尝试使用 UI delegate 来搞乱,并且能够以与上面相同的方式更改光标。仍然不知道如何更改调整大小部分。有人有什么想法吗?

jtable.getTableHeader().setUI(new BasicTableHeaderUI(){
JTableHeader header;

public void installUI(JComponent c) {
header = (JTableHeader) c;
header.setCursor(MyClient.greenResizeHorizontal);

super.installUI(c);
}
});

最佳答案

不幸的是,没有“好的”方法来修改这个光标。BasicTableHeaderUI 使用默认的调整大小光标,并且它包含名为 "resizeCursor" 的私有(private)静态字段。此外,Swing UIManager 不提供任何允许更改光标的属性(请参阅 http://thebadprogrammer.com/swing-uimanager-keys/ )。

我发现的唯一方法是通过反射修改该字段的值(我使用的是手形光标,任何其他都可以在这里):

table.getTableHeader().setUI(new BasicTableHeaderUI(){
public void installUI(JComponent c) {
try {
final Field f = getClass().getSuperclass().getDeclaredField("resizeCursor");
f.setAccessible(true);
f.set(null, Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
} catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) {
e.printStackTrace();
}
super.installUI(c);
}
});

但这很hacky,并且 - 因为它使用私有(private)内容 - 它可能会停止与任何 Java 更新一起使用,并且 - AFAIR - 如果您的应用程序的 jar 已签名( https://docs.oracle.com/javase/tutorial/deployment/jar/signing.html ),则它将无法工作。

关于java - 更改调整 JTable 标题光标的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182773/

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