Why is the tab-order "backwards" when tabbing over Java components inside a JPanel?
4 views (last 30 days)
Show older comments
function testJavaFocus
% Illustration of tab-order focus problem.
% Run this and start hitting tab. Observe that tab-order goes "backwards"
% when traversing through the components in the JPanel. WHY!!!??!?!?!?
hfig = figure;
components = [];
%%Add JTextField
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
components{end+1} = text;
%%Add JTextField
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
components{end+1} = text;
%%Add JPanel - we will add 3 components to this panel to illustrate focus problem
panel = javaObjectEDT('javax.swing.JPanel');
panel.setBackground(java.awt.Color.GREEN);
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
panel.add(text);
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
panel.add(text);
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
panel.add(text);
components{end+1} = panel;
%%Add JTextField
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
components{end+1} = text;
%%Add JTextField
text = javaObjectEDT('javax.swing.JTextField',6);
text.setFocusable(true);
components{end+1} = text;
%%Add all components to the figure via javacomponent()
x = 10;
padding = 3;
for i = 1:length(components)
prefDim = components{i}.getPreferredSize();
widpos = [x,10,prefDim.width,prefDim.height];
[jh, hg] = javacomponent(components{i},widpos,hfig);
x = x + prefDim.width + padding;
end
end
0 Comments
Answers (1)
the cyclist
on 7 Aug 2013
I don't know much about MATLAB GUIs, much less Java-based ones, but maybe this page will shed some light?
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!