Запуск JAVA-программы с помощью кнопки (GUI) - PullRequest
0 голосов
/ 26 февраля 2019

Я был озадачен этим весь день, несмотря на часы исследований.Ниже приведена основная идея моей программы.Он извлекает данные из ссылок и помещает их в электронную таблицу, и он может работать часами за раз.Мое намерение состоит в том, чтобы соединить это с GUI с индикатором выполнения.Я пытаюсь получить кнопку «Загрузить», а затем кнопку «Выполнить».

Для кнопки «Выполнить» я не могу понять, как подключить кнопку к запуску экземпляра нижеприведенной программы.

Я попытался поставить под действие

App obj= new App();
obj.main(null);

Выполнено безуспешно.Я получаю следующую ошибку:

Error:(31, 25) java: unreported exception java.lang.Exception; 
    must be caught or declared to be thrown

Теперь я понимаю, что мы не можем точно вызывать основные функции.Но в таком случае, как я могу заставить мою программу работать с графическим интерфейсом?Основная причина этого заключается в том, чтобы в будущем можно было создать для него веб-приложение, чтобы я мог получить к нему доступ в любом месте.

public class App {

private static final int[] URL_COLUMNS = { 0, 4, 9 }; // Columns A, E, J
public static void main(final String[] args) throws Exception {

    Workbook originalWorkbook = Workbook.getWorkbook(new File("C:/Users/Shadow/Desktop/original.xls"));
    WritableWorkbook workbook = Workbook.createWorkbook(new File("C:/Users/Shadow/Desktop/updated.xls"), originalWorkbook);
    originalWorkbook.close();
    WritableSheet sheet = workbook.getSheet(0);
    Cell cell;

    for (int i = 0; i < URL_COLUMNS.length; i++) {
        int currentRow = 1;
        while (!(cell = sheet.getCell(URL_COLUMNS[i], currentRow)).getType().equals(CellType.EMPTY)) {

            String url = cell.getContents();
            System.out.println("Checking URL: " + url);
            if (url.contains("scrapingsite1.com")) {
                String Price = ScrapingSite1(url);
                System.out.println("Scraping Site1's Price: " + Price);
                // save price into the next column
                Label cellWithPrice = new Label(URL_COLUMNS[i] + 1, currentRow, Price);
                sheet.addCell(cellWithPrice);
            }
            currentRow++;
        }
    }

    workbook.write();
    workbook.close();
}

private static String ScrapingSite1 (String url) throws IOException {
    Document doc = null;
    for (int i=1; i <= 6; i++) {
        try {
            doc = Jsoup.connect(url).userAgent("Mozilla/5.0").timeout(6000).validateTLSCertificates(false).get();
            break;
        } catch (IOException e) {
            System.out.println("Jsoup issue occurred " + i + " time(s).");
        }
    }
    if (doc == null){
        return null;
    }
    else{
        return doc.select("p.price").text();
    }
}
}

1 Ответ

0 голосов
/ 26 февраля 2019

В грубой догадке, я бы сказал, что компилятор предлагает вам изменить:

App obj= new App();
obj.main(null);

На одну из нескольких возможностей, основанную на «должен быть пойман» (try / catch):

try {
    App obj= new App();
    obj.main(null);
} catch(Exception e) {
    e.printStackTrace(); // good fall back if logging not implemented
}

Редактировать: Дополнительную информацию см. В уроке Исключения Учебного руководства по Java.

...