Предыдущие компоненты вкладки видны при разборе данных json - cn1 - PullRequest
0 голосов
/ 13 декабря 2018

На экране есть пара вкладок.Каждая вкладка со своим соединениемRequest.Но когда выбрана какая-либо вкладка, компоненты предыдущей вкладки мигают, прежде чем новые компоненты вкладки видны.Как я могу решить это.Использование addShowListener в каждой вкладке имеет свою проблему.Это показывает пустой экран.Пожалуйста, посмотрите на видео здесь

Здесь, если вы перейдете с домашней вкладки на вкладку службы, будут видны компоненты вкладки службы, и она начнет анализировать данные json (виден загрузчик).Затем компоненты с домашнего экрана будут видны до того, как проанализированные данные будут показаны в компоненте вкладки услуги.

Tabs tabs = new Tabs(Component.BOTTOM);
tabs.addTab("Home", calendarIcon, homeContainer);
tabs.addTab("Book", calendarIcon3, quickBookingContainer);
tabs.addTab("Servicing", calendarIcon1, servicingContainer);
tabs.addTab("History", calendarIcon2, serviceHistoryContainer);

add(BorderLayout.CENTER, tabs);

tabs.addSelectionListener((int oldSelected, int newSelected) -> {
    if (newSelected == 0) {
        //connectionRequest for parsing json data
        homeContainerRequest(homeContainer, res);
    } else if (newSelected == 1) {
        quickBookingContainerRequest(quickBookingContainer, res);
    } else if (newSelected == 2) {
        serviceRequest(serviceContainer, res);
    } else if (newSelected == 3) {
        serviceHistoryRequest(serviceHistoryContainer, res);
    } 
});


public void homeContainerRequest(Container homeContainer, Resources res){
    ConnectionRequest con = new ConnectionRequest(url, false) {

        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser jp = new JSONParser();
            Map parser = jp.parseJSON(new InputStreamReader(input));
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
        }
    };
    con.setFailSilently(true);
    con.addRequestHeader("accept", "application/json");
    NetworkManager.getInstance().addToQueue(con);
}

public void quickBookingContainerRequest(Container quickBookingContainer, Resources res){
    ConnectionRequest con = new ConnectionRequest(url1, false) {

        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser jp = new JSONParser();
            Map parser = jp.parseJSON(new InputStreamReader(input));
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
        }
    };
    con.setFailSilently(true);
    con.addRequestHeader("accept", "application/json");
    NetworkManager.getInstance().addToQueue(con);
}

public void serviceHistoryRequest(Container serviceHistoryContainer, Resources res){
    ConnectionRequest con = new ConnectionRequest(url2, false) {

        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser jp = new JSONParser();
            Map parser = jp.parseJSON(new InputStreamReader(input));
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
            _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
        }
    };
    con.setFailSilently(true);
    con.addRequestHeader("accept", "application/json");
    NetworkManager.getInstance().addToQueue(con);
}

1 Ответ

0 голосов
/ 14 декабря 2018

Я предполагаю, что это связано с анимацией и чрезмерными вызовами перерисовки.Попробуйте использовать tabs.setAnimateTabSelection(false).

...