Java-Как сделать шаблонный метод из примера? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть одна проблема, у меня есть индикатор выполнения, и теперь я хочу внедрить индикатор выполнения для работы с поиском. Я имею в виду, что хочу, чтобы индикатор загрузки загружался до тех пор, пока мои результаты не появятся в окне результатов поиска.У меня много проблем, и я делаю это в течение нескольких дней ... Я надеюсь, что кто-то отредактирует мой код или подскажет, как решить эту проблему.Мне очень грустно, потому что я должен беспокоить вас, но у меня нет другого решения.

Еще раз, мне нужно создать шаблонный метод для этого метода, чтобы легко реализовать его в других местах кода ... Пожалуйста, ребята, помогите мне, я не понимаю, как это нужно сделать.Спасибо еще раз.

Это код:

// but data will be stored in here...
hiddenResultValues = new HashMap < String, Vector < String >> ();

Vector < String > columnNames = field.getResultColumnNames();

final Vector < Vector < String >> tableContent = new Vector < Vector < String >> ();


int size = results.size();
final double stepSize = 100 / size;
//starts long running task off of EDT.
final Vector < QueryResult < Contact >> resultsFin = results;
final SearchField fieldFin = field;
EventQueue.invokeLater(new Runnable() {
    public void run() {
        JFrame frame = new JFrame("progress bar example");
        final JProgressBar progress = new JProgressBar();
        service.submit(new Runnable() {
            public void run() {
                int z = 0;
                for (QueryResult < Contact > q: resultsFin) {
                    z = (int)(z + stepSize);
                    final int j = z;
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    EventQueue.invokeLater(new Runnable() {
                        public void run() {

                            progress.setValue(j);
                        }
                    });
                    if (application.isAueTool() && ((q.getQueryResult().getBusinessCategory().contains("K-tronik") &&
                            !q.getQueryResult().getBusinessCategory().contains("AUE")) || (q.getQueryResult().getBusinessCategory().compareTo("Mitarbeiter") == 0) || (q.getQueryResult().getBusinessCategory().compareTo("Kandidat") == 0))) {
                        continue;
                    }

                    Vector < String > values = new Vector < String > ();

                    for (String s: fieldFin.getResultColumns()) {
                        values.add(q.getTableEntryForColumn(s));
                    }

                    tableContent.add(values);

                    contacts.add(q.getQueryResult());

                }
            }
        });
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add(progress);
        frame.pack();
        frame.setVisible(true);
    }
});
// store hidden results
for (String s: field.getHiddenResultColumns())
    hiddenResultValues.put(s, new Vector < String > ());

for (QueryResult < Contact > q: results) {
    for (String s: field.getHiddenResultColumns()) {
        hiddenResultValues.get(s).add(q.getTableEntryForColumn(s));
    }
}

resultsPanel.remove(resultsScrollPane);

searchResults = new SearchResultTable(tableContent, columnNames, contacts, false);
sorter = new TableSorter(searchResults.getModel());
Vector < Color > colors = new Vector < Color > ();
for (Contact tempCon: contacts) {
    colors.add(Color.white);
}
searchResults = new SearchResultTable(sorter, contacts, sorter, colors, 18, false);

sorter.addMouseListenerToHeaderInTable(searchResults);

searchResults.addKeyListener(this);
searchResults.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
searchResults.setSize(new Dimension(GUIConstants.LEFT_PANEL_WIDTH, GUIConstants.SEARCH_RESULTS_HEIGHT));
searchResults.setPreferredScrollableViewportSize(new Dimension(GUIConstants.LEFT_PANEL_WIDTH, GUIConstants.SEARCH_RESULTS_HEIGHT));
searchResults.getSelectionModel().setSelectionInterval(0, 0);
int rowIndex = 0;
for (Contact tempCon: contacts) {
    if (tempCon.getContactStatus().equals("Blocked") || tempCon.getContactStatus().equals("Inactive"))
        searchResults.updateColorOfRow(rowIndex, Color.red);
    if (tempCon.getContactStatus().equals("Frozen"))
        searchResults.updateColorOfRow(rowIndex, Color.orange);
    if (tempCon.getBusinessCategory().equals("Kandidat") && (application.getDSConsentDate(tempCon.getEntryKey()) == null))
        searchResults.updateColorOfRow(rowIndex, Color.orange);
    rowIndex++;
}
// set column widths
for (int i = 0; i < columnNames.size(); i++) {
    TableColumn column = searchResults.getColumnModel().getColumn(i);
    try {
        column.setPreferredWidth(field.getColumnWidths().get(i));
    } catch (Exception ex) {
        column.setPreferredWidth(GUIConstants.LEFT_PANEL_WIDTH / columnNames.size());
    }
}

resultsScrollPane = new JScrollPane(searchResults);
resultsScrollPane.setSize(new Dimension(GUIConstants.LEFT_PANEL_WIDTH, GUIConstants.SEARCH_RESULTS_HEIGHT));
resultsScrollPane.setMinimumSize(new Dimension(GUIConstants.LEFT_PANEL_WIDTH, GUIConstants.SEARCH_RESULTS_HEIGHT));

resultsPanel.add(resultsScrollPane);

numberOfResults.setText(tableContent.size() + " Treffer");

validate();
}
}
catch (Exception ex) {
    ex.printStackTrace();
    JOptionPane.showMessageDialog(application, "Während der Suche ist ein Fehler aufgetreten!" + "\n" + ex.getLocalizedMessage(), "Information", JOptionPane.WARNING_MESSAGE);
}
} else {
    JOptionPane.showMessageDialog(application, "Bitte geben Sie einen Suchbegriff ein", "Information", JOptionPane.INFORMATION_MESSAGE);
}

searchResults.requestFocus();
}

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER && e.getSource().equals(searchResults)) {
        showDetails();
    } else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
        performSearch();
    } else if (e.getKeyCode() == KeyEvent.VK_Q && e.getSource().equals(searchResults)) {
        showCandidateQuickOverview();
    }
}

Большое спасибо.

Редактировать: ps Я хочу взять оттуда индикатор выполнения и сделатьшаблонный метод, так что я могу легко реализовать его где-то еще.+15 респ, которые делают мне шаблонный метод из этого кода для индикатора выполнения.Это единственный способ узнать, как это сделать ...

РЕДАКТИРОВАТЬ 2: Это всего лишь штрих-код прогресса: я публикую гораздо больше кода, потому что я подумал, что вам тоже нужно взглянуть вниз.Также мой индикатор выполнения работает по результатам, когда он извлекает результаты из базы данных, индикатор выполнения загружается до 100%, когда прогресс достигает 100% или когда данные поступают из базы данных, он заполняется в окне результатов, и индикатор выполнения закрывается, потому что работаготово.

Вот код индикатора выполнения, пожалуйста, помогите мне сделать из него метод шаблона или укажите, как я могу это легко сделать ... Я новичок в Java и мне нужна ваша помощь, ребята ...Я надеюсь, что у меня будет шанс дать +15 кому-то

//required for activity search results. Activity key column 
will not be displayed
//but data will be stored in here...
hiddenResultValues = new HashMap<String, Vector<String>>();

final Vector<String> columnNames = 
field.getResultColumnNames();

final Vector<Vector<String>> tableContent = new Vector<Vector<String>>();

int size = results.size();
if (size > 0)
{
    final double stepSize = 100 / size;
    //starts long running task off of EDT.
    final Vector<QueryResult<Contact>> resultsFin = results;
    final SearchField fieldFin = field;
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            final JFrame frame = new JFrame("progress bar example");
            final JProgressBar progress = new JProgressBar();
            service.submit(new Runnable() {
                public void run() {
                    int z = 0;
                    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    frame.setLayout(new FlowLayout());
                    frame.add(progress);
                    frame.pack();
                    frame.setVisible(true);
                    for(QueryResult<Contact> q : resultsFin)
                    {
                        z = (int) (z + stepSize);
                        final int j = z;
                        progress.setValue(j);
                        EventQueue.invokeLater(new Runnable() {
                            public void run() {


                            }
                        });
                        if(application.isAueTool() && ((q.getQueryResult().getBusinessCategory().contains("K-tronik") 
                                && !q.getQueryResult().getBusinessCategory().contains("AUE")) || (q.getQueryResult().getBusinessCategory().compareTo("Mitarbeiter")==0) || (q.getQueryResult().getBusinessCategory().compareTo("Kandidat")==0)))
                        {
                            continue;
                        }

                        Vector<String> values = new Vector<String>();

                        for(String s : fieldFin.getResultColumns())
                        {
                            values.add(q.getTableEntryForColumn(s));
                        }

                        tableContent.add(values);

                        contacts.add(q.getQueryResult());

                    }

                    // store hidden results
                    for(String s : fieldFin.getHiddenResultColumns())
                        hiddenResultValues.put(s, new Vector<String>());

                    for(QueryResult<Contact> q : resultsFin)
                    {
                        for(String s : fieldFin.getHiddenResultColumns())
                        {
                            hiddenResultValues.get(s).add(q.getTableEntryForColumn(s));
                        }
                    }

                    createTable(tableContent, columnNames, fieldFin);
                    frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
                }
            });

        }
    });
}
...