2016-04-01 11 views
1

Ich habe einen Tabs-Container in meinem Formular mit 2 Tabs. Die erste Registerkarte enthält eine Liste. Wenn auf ein Listenelement geklickt wird, wird auf der zweiten Registerkarte mit setSelectedIndex gescrollt. Die Registerkarten sind zunächst nicht scrollbar. Wenn jedoch der zweite Tab angetippt wird. Ich möchte, dass die Registerkarten scrollbar werden, damit der Benutzer mit der Wischgeste zurückgehen kann. Also setze ich swipeActivated zuerst auf false und dann, wenn das Listenelement angeklickt wird, versuche ich, "SwipeActivated" auf "true" zu setzen und dann das Formular erneut zu validieren, aber das aktiviert die Wischgeste nicht, wenn ich die App starte. Hier ist mein Code.Problem mit Registerkarten setSwipeActivated.

als App aufgerufen wird geöffnet:

public void setUpMainPage() { 
    mainForm = (Form) u.createContainer(theme, "MainPage"); 
    Tabs mainTabs = (Tabs) u.findByName("MainTabs", mainForm); 
    mainTabs.setAnimateTabSelection(false); 
    mainTabs.setSwipeActivated(false); 
    findContainer = (Container) u.findByName("GridContainer",  
mainForm); 

    setUpFindContainer(); 
    setUpMibrand(); 
    setUpVouchers(); 
    setUpHomePage(); 

    findTabs = (Tabs) u.findByName("FindTabs", mainForm); 
    findTabs.hideTabs(); 
    findTabs.setSwipeActivated(false); 

    insideTabs = (Tabs) u.findByName("InsideTabs", mainForm); 
    insideTabs.hideTabs(); 
    insideTabs.setSwipeActivated(false); 

    homeTabs = (Tabs) u.findByName("HomeTabs", mainForm); 
    homeTabs.hideTabs(); 
    homeTabs.setSwipeActivated(false); 

    mainForm.show(); 
} 

Die Action für die Listeneinträge:

class findActionListener implements ActionListener { 

    String[] categoryList = {"Shopping Malls", "Food & Dining", "Clothing & Accessories", "Grocery Stores", 
     "Nightlife & Drinks", "Electronics", "Fitness & Health", "Travel & Hotels", 
     "Activities & Events", "Sports Gear", "House & Home", "Baby & Kids", "Beauty & Spa", "Motoring", "Liquor Stores", "More"}; 

    int index; 
    Label categoryLabel; 
    public findActionListener(int i, Label catLabel) { 
     index = i; 
     categoryLabel = catLabel; 
    } 

    public void actionPerformed(ActionEvent evt) { 
     findTabs.setSelectedIndex(1, true); 
     //I set the swipe activated to true on click. Before I switch 
     //tabs 
     findTabs.setSwipeActivated(true); 
     categoryLabel.setText(categoryList[index]); 
     setUpFindList(categoryList[index]); 
     mainForm.revalidate(); 
    } 

} 

Gibt es etwas, was ich falsch mache oder was will ich nicht für möglich erreichen?

+0

Wenn Sie nicht swipeActivated schalten funktioniert es? Wenn Sie scrollbar sagen, beziehen Sie sich auf swipeable? Beachten Sie, dass Scrollen und Tab Swipe völlig separate Aktionen sind! Stellen Sie sicher, dass sich die Registerkarten in der Mitte eines Rahmenlayouts im übergeordneten Formular befinden, damit sie die richtige Größe in einem nicht scrollbaren übergeordneten Element einnehmen. –

+0

@ShaiAlmog Ich spreche davon, die Tabs wischbar zu machen. Wenn ich es in meinem setUpMainPage() umschalte, streicht es. Das Problem, das ich habe, ist zu verhindern, dass der Swipe anfänglich und nur aktivieren, sobald ein Listenelement angeklickt und der selectedIndex geändert wird. Also muss ich ständig SwipeActivated hin- und herschalten. – Kyri33

+0

@ShaiAlmog Komischerweise. Wenn ich einen Dialog öffne und diesen Dialog dann verlasse, können die Tabs wischen. Wenn ich also einfach tabs.setSwipeActivated (true) aufruft und das Formular erneut validiere, können die Tabs nicht wischen. Wenn ich jedoch setSwipeActivated aufrufen (true) und dann direkt darunter einen leeren Dialog zeige und ihn dann entsorge, können die Tabs plötzlich wischen. Was wird aufgerufen, wenn ich einen Dialog erstelle, zeige und verwerfe, der den Befehl setSwipeActivated auslöst. So kann ich das nennen, anstatt einen sinnlosen Dialog zu erstellen. Aus offensichtlichen Gründen. – Kyri33

Antwort

0

Überprüfen Sie, ob swipeActivated in der GUI-Builder-Benutzeroberfläche für die Registerkarten deaktiviert ist.

Stellen Sie außerdem sicher, dass jeder Code, auf den Sie setSwipeActivated true aufrufen, nicht erreicht wird.

+0

Es gibt kein swipeAktiviert-Kontrollkästchen im GUI-Builder. Redest du über scrollbares x? – Kyri33

+0

Scrollen von einem beliebigen Typ sollte für keines der Registerkarten oder eines seiner Eltern aktiviert werden. Hast du Breakpoints für deine Aufrufe von setSwipeActivated gesetzt? –

Verwandte Themen