If you are experiencing an issue please mention the full platform your issue applies to:
IDE: NetBeans/Eclipse/IDEA Netbeans 11
Desktop OS Windows 10 Pro
Simulator Latest
Device PC, IOS
Recent build (last 10 days approx) has produced an unusual horizontal with TABS component display.
See attached pic.
Purpose of this overriding TABS class is to provide multi line text support
It appears that the SpanButton class is the problem as I see similar behavior placing this component in a table container.
Here is a simple re-producible case
Form hi = new Form("Custom Tabs", new BorderLayout());
Tabs tb = new Tabs(Component.TOP) {
@Override
protected Component createTab(String title, Image icon) {
SpanButton custom = new SpanButton(title);
custom.setName("SpanButton");
custom.setIcon(icon);
custom.setUIID("Container");
custom.setTextUIID("mpiTabMetalUnSelected");
custom.setIconPosition(BorderLayout.NORTH);
return custom;
}
@Override
public String getTabTitle(Component tab) {
return ((SpanButton) tab).getText();
}
@Override
public String getTabTitle(int index) {
String TabTitle = "";
try {
for (int a = 0; a < getComponentCount(); a++) {
Container cnt = (Container) getComponentAt(a);
for (int b = 0; b < cnt.getComponentCount(); b++) {
if (cnt.getComponentAt(b).getName() != null && cnt.getComponentAt(b).getName().compareToIgnoreCase("SpanButton") == 0 && index == b) {
return getTabTitle(cnt.getComponentAt(b));
}
}
}
} catch (Exception g) {
g.printStackTrace();
}
return TabTitle;
}
@Override
public void setTabTitle(String title, Image icon, int index) {
try {
for (int a = 0; a < getComponentCount(); a++) {
Container cnt = (Container) getComponentAt(a);
for (int b = 0; b < cnt.getComponentCount(); b++) {
if (cnt.getComponentAt(b).getName() != null && cnt.getComponentAt(b).getName().compareToIgnoreCase("SpanButton") == 0 && index == b) {
SpanButton custom = (SpanButton) cnt.getComponentAt(b);
custom.setText(title);
return;
}
}
}
} catch (Exception g) {
g.printStackTrace();
}
}
@Override
protected void setTabSelectedIcon(Component tab, Image icon) {
((SpanButton) tab).setPressedIcon(icon);
}
protected void selectTab(Component tab) {
for (int a = 0; a < this.getComponentCount(); a++) {
Container cmp1 = (Container) this.getComponentAt(a);
int selIndex = this.getSelectedIndex();
for (int b = 0; b < cmp1.getComponentCount(); b++) {
if (cmp1.getComponentAt(b).getName() != null && cmp1.getComponentAt(b).getName().startsWith("SpanButton") == true) {
if (selIndex == b) {
((SpanButton) tab).setTextUIID("mpiTabMetalSelected");
} else {
((SpanButton) cmp1.getComponentAt(b)).setTextUIID("mpiTabMetalUnSelected");
}
}
}
}
}
@Override
protected void bindTabActionListener(Component tab, ActionListener l) {
((SpanButton) tab).addActionListener(l);
}
};
tb.addSelectionListener(new SelectionListener() {
@Override
public void selectionChanged(int oldSelected, int newSelected) {
}
});
tb.setTabUIID(null);
Button btn = new Button("Any Button Action");
tb.addTab("Tab 1", btn);
tb.addTab("Really long\ntext in tab", new Label("T2"));
tb.addTab("Tab 3", new Label("T3"));
tb.addTab("Tab 4", new Label("T4"));
hi.add(BorderLayout.CENTER, tb);
hi.show();
Regards