gpt4 book ai didi

java - JTable 中的 JButton 图标/动画在按下时改变

转载 作者:行者123 更新时间:2023-12-01 22:33:25 25 4
gpt4 key购买 nike

我真的不知道如何用语言来解释这个。所以我有一个带有 JButton 列的 JTable。我已经为此按钮设置了一个图标,但是当我按下或按住该按钮时,它会变成您在下面看到的图像。

enter image description here

如何禁用此效果?我尝试了以下无济于事:

  renderButton.setContentAreaFilled(false);
renderButton.setIcon(new ImageIcon(ButtonColumn.class
.getResource("/com/graphics/clear_left.png")));
renderButton.setRolloverIcon(new ImageIcon(ButtonColumn.class
.getResource("/com/graphics/clear_left.png")));
renderButton.setRolloverSelectedIcon(new ImageIcon(ButtonColumn.class
.getResource("/com/graphics/clear_left.png")));
renderButton.setPressedIcon(new ImageIcon(ButtonColumn.class
.getResource("/com/graphics/clear_left.png")));

最佳答案

根据您的代码,我认为您使用 Rob Camick 的 ButtonColumn获得按钮列装饰。该类同时实现了 TableCellRendererTableCellEditor接口(interface)以提供 JButton 作为您指定列中单元格的渲染器和编辑器,在您的例子中是最后一个。

您所做的是自定义渲染器按钮以显示您想要的图标,但现在您还必须自定义编辑器按钮以覆盖默认按钮的外观。

在这两种情况下,我都不会修改 source code直接但覆盖两个 getTableCellXxxComponent(...) 方法,就像任何其他自定义渲染器/编辑器一样。像这样的东西会成功:

JTable table = new JTable(tableModel);

Action action = new AbstractAction() {...};

ButtonColumn buttonColumn = new ButtonColumn(table, action, 5) {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JButton button = (JButton)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
button.setContentAreaFilled(false);
button.setBorder(BorderFactory.createEmptyBorder());
// Customize the icon and whatever you want here
return button;
}

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
JButton button = (JButton)super.getTableCellEditorComponent(table, value, isSelected, row, column);
button.setContentAreaFilled(false);
// Customize the icon and whatever you want here
return button;
}
};

注意事项

始终包含指向非标准库或类的链接。否则人们将无法帮助您学习他们不熟悉的类(class)。

正如@mKorbel 所指出的,用于呈现第 5 列的 JSpinner 不完整:如果选择了单元格,则应应用选择背景色(请参阅第一行)。

关于java - JTable 中的 JButton 图标/动画在按下时改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452282/

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