java - 如何将Java swing黑色背景工具栏集成到polaxes中?

标签 java matlab swing matlab-figure polar-coordinates

我尝试集成 Altman 的 MATLAB 2013 极地雷达系统的缩短版本的代码 code进入 MATLAB 2016b Polarxes 实现,因为我希望工具栏具有黑色背景,并具有水平滚动条的缩放功能。 前面的代码基本上使用具有连续移动回调javax.swing.JSlider。 当前的错误来自 'StateChangedCallback',{@cbSlider,fp,imax}); 行,其中轴 imax 的行为不符合预期

close all; clear all; clc;    
% http://stackoverflow.com/q/40030096/54964
fp=figure('Name', 'Test', ...
    'Position',[200 200 851 404],'Resize','off'); % only half circle in polaraxes although warp can do eclipses
ThetaTicks = 0*pi:pi/10:1*pi;
pax = polaraxes( 'ThetaAxisUnits', 'radians', ...
    'ThetaLim',[min(ThetaTicks) max(ThetaTicks)],...
    'Color','none',...
    'GridAlpha',1,...
    'GridColor',[1 1 1],...
    'ThetaTick', ThetaTicks, ...
    'ThetaDir', 'counterclockwise', ...
    'Parent', fp);

af = figure('Name', 'Do Not Touch');

testImage = 'peppers.png';
imax = axes('Parent', fp, 'Visible', 'off');
I = imread(testImage);
angleRadians=-pi;
[x, y, z]=makePolar(I, angleRadians);
fp=figure(fp); 
imax.Children = warp(x, y, z, I);
set(imax,'view',[-180 -90],'Visible','off');
axis(imax,'tight')
pause(1);

%% Change toolbar bakcgrounds black like radar systems
% http://undocumentedmatlab.com/blog/customizing-figure-toolbar-background
[jSlider,hSlider] = javacomponent('javax.swing.JSlider',[0,0,.01,0.1],fp);
set(hSlider, 'Units','norm','pos',[.15,0,.7,.05]);
set(jSlider, 'Background',java.awt.Color.black, ...
    'Value',0, 'Maximum',duration, ...
    'StateChangedCallback',{@cbSlider,fp,imax});

hToolbar = findall(fp,'tag','FigureToolBar');

% required to programmatically alter the figure
delete(findall(hToolbar,'tag','Plottools.PlottoolsOn'))
delete(findall(hToolbar,'tag','Plottools.PlottoolsOff'))
delete(findall(hToolbar,'tag','Annotation.InsertColorbar'))
delete(findall(hToolbar,'tag','DataManager.Linking'))
delete(findall(hToolbar,'tag','Standard.EditPlot'))

% ensure the toolbar is visible onscreen
drawnow;

% Get the underlying JToolBar component
jToolbar = get(get(hToolbar,'JavaContainer'),'ComponentPeer');

% Set the bgcolor to black
color = java.awt.Color.black;
jToolbar.setBackground(color);
jToolbar.getParent.getParent.setBackground(color);

输出我不确定它是关于哪个数组的

Error using javahandle_withcallbacks.javax.swing.JSlider/set
Array must be numeric or logical.

Error in test_polar_radar_system (line 33)
set(jSlider, 'Background',java.awt.Color.black, ...

图。 1 水平滚动条工作但没有成功绑定(bind)到操作的当前输出, 图 2 预期输出 = Altman 输出的半圆,但测试图像和轴起点如图 1 所示,但其他一切都可以像 Altman 的

enter image description here enter image description here

尝试 2 失败

% https://se.mathworks.com/matlabcentral/newsreader/view_thread/164766
color = java.awt.Color.blue;
color = java.awt.Color(0,0,0.9); % alternative declaration
hToolbar=findall(gcf,'tag','FigureToolBar');
jToolbar=get(get(hToolbar,'JavaContainer'),'ComponentPeer');
jToolbar.setBackground(color)

输出

Struct contents reference from a non-struct array object.

Error in make_sample (line 822)
                jToolbar.setBackground(color)

MATLAB:2016b
操作系统:Debian 8.5 64位
硬件:华硕Zenbook UX303UA
Linux 内核:4.6 向后移植

最佳答案

您的错误可能不在于设置 StateChangedCallback但在设置 Maximum也就是说,您的 duration 中可能有其他内容,而不是提供一个简单的数字。多变的。因此整个set()命令失败并且 StateChangedCallback未分配。

关于java - 如何将Java swing黑色背景工具栏集成到polaxes中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086038/

相关文章:

Matlab-元胞矩阵中给定列的运算

java - 将文本粘贴到 JTextComponent 后获取操作 (Java)

java - 编译失败-静态变量示例

matlab - 在 Matlab 中定义全局常量

java - Spring REST Web 服务每天的第一个请求很慢

matlab - 在matlab中将矩阵的第一列和最后一列除以一个数字

java - 使用框布局在 jpanel 和同一行上添加多个 jlabel

java - JTextPane 中的突出显示和粗体文本

java - 使用 JTextField 和 JTextArea (JAVA) 输入特定数字/单词时如何打印一行文本

java - java中的字节数组到文件而不覆盖,