Java 表格标题边框旧的uitable matlab
出于性能原因,我在Matlab中使用旧版本的uitable。我正在尝试更改表格标题的单元格边框颜色。目前,两个列标题单元格彼此无法区分。我尝试了以下方法: 自定义列渲染器,但仍无法更改表头边框。下面的操作似乎有效,但将整个标题而不是表格标题单元格作为边框Java 表格标题边框旧的uitable matlab,java,swing,matlab,uitableview,Java,Swing,Matlab,Uitableview,出于性能原因,我在Matlab中使用旧版本的uitable。我正在尝试更改表格标题的单元格边框颜色。目前,两个列标题单元格彼此无法区分。我尝试了以下方法: 自定义列渲染器,但仍无法更改表头边框。下面的操作似乎有效,但将整个标题而不是表格标题单元格作为边框 h_old=uitable('v0','data',magic(5),'position',[5,5,550,400]); set(h_old,'Units','normalized'); % get the underlying java t
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(颜色)。我正在寻找相同的,但表头单元格
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);
谢谢,
Amit您需要做一点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
谢谢你,涅盘。我想没有解决办法。我试图避免java编程,因为我没有java编程方面的背景,也没有这方面的编程背景。这是一个陡峭的学习曲线,我们已经开始努力了,还不算太陡。然而,学习它将为您在Matlab中打开无限的UI(而不仅仅是)可能性。在任何IDE中,打包一个jar只需点击几下鼠标,包括Eclipse这样的免费IDE。有很多文档描述了每一步。谢谢涅磐。我正在使用IntelliJ打包一个罐子。但当我在Matlab中使用它时,它无法识别“未定义的函数或变量”。打包jar时,我必须选择的主要类是什么?如果您已经添加了所有导入,并且没有未解决的错误,那么它应该可以工作。Jar只不过是一个zip存档文件——您可以使用
winrar
/7zip
打开它,并确保它有一个CustomBorderCellRenderer.class
文件。还有一个非常有用的函数,它提供了检查类是否已加载的最简单方法。Re coffee-抱歉,我很忙,现在没有太多时间做项目。尽管如此,请在这里自由提问。)