У меня есть одна проблема, у меня есть индикатор выполнения, и теперь я хочу внедрить индикатор выполнения для работы с поиском. Я имею в виду, что хочу, чтобы индикатор загрузки загружался до тех пор, пока мои результаты не появятся в окне результатов поиска.У меня много проблем, и я делаю это в течение нескольких дней ... Я надеюсь, что кто-то отредактирует мой код или подскажет, как решить эту проблему.Мне очень грустно, потому что я должен беспокоить вас, но у меня нет другого решения.
Еще раз, мне нужно создать шаблонный метод для этого метода, чтобы легко реализовать его в других местах кода ... Пожалуйста, ребята, помогите мне, я не понимаю, как это нужно сделать.Спасибо еще раз.
Это код:
// 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));
}
});
}
});
}