gpt4 book ai didi

java - 表格标题边框旧 uitable matlab

转载 作者:行者123 更新时间:2023-11-30 08:03:42 25 4
gpt4 key购买 nike

出于性能原因,我在 Matlab 中使用旧版本的 uitable。我正在尝试更改表格标题的单元格边框颜色。目前,两个列标题单元格彼此无法区分。我尝试了以下方法:

自定义列渲染器但仍然无法更改表格标题边框。以下似乎有效,但与整个标题而不是表格标题单元格接壤。

h_old=uitable('v0','data',magic(5),'position',[5,5,550,400]);
set(h_old,'Units','normalized');
% get the underlying java table
jtable=h_old.getTable;
% get table header
theader=jtable.getTableHeader;
% set intended color
color=java.awt.Color(9471874);
% create a line border
theaderborder=javax.swing.BorderFactory.createLineBorder(color);
% set it in table header
theader.setBorder(theaderborder);

这会在整个标题周围设置边框,但不会在单元格中设置边框。有人知道怎么做吗?

要更改 jtable 网格(表格单元格边框),我可以执行 jtable.setGridColor(color)。我正在寻找等效但表格标题单元格。

谢谢,阿米特

最佳答案

您需要进行一些 Java 编码。您需要通过扩展 DefaultTableCellRenderer 来实现自定义单元格渲染器。由于不能在Matlab中编写内联java代码,需要将此类打包成jar并添加到java路径中。

您需要的类应该如下所示:

public class CustomBorderCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;

private Color borderColor;

public CustomBorderCellRenderer(Color borderColor) {
this.borderColor = borderColor;
}

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JComponent component = (JComponent) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
((JLabel) component).setHorizontalAlignment(JLabel.CENTER);
component.setBorder(BorderFactory.createLineBorder(borderColor));
return component;
}
}

请注意,它会覆盖一些默认外观,因此除了设置边框颜色之外,您可能还想自定义背景颜色等。作为示例,我还将标题标签居中,否则它会显示在左侧。

打包并加载 jar 后,用法很简单:

javaaddpath('Path\to\YourJar.jar');
figure();
hTable = uitable('v0', 'data', magic(5), 'position', [5,5,550,400]);
set(hTable, 'Units', 'normalized');
borderColor = java.awt.Color(1,0,0);
renderer = CustomBorderCellRenderer(borderColor);
header = hTable.getTable().getTableHeader();
header.setDefaultRenderer(renderer);

您可能还需要触发表格重新绘制自身,例如使用 drawnow

enter image description here

关于java - 表格标题边框旧 uitable matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112069/

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