Окно появляется "прозрачным" при попытке добавить строку текста - Java - PullRequest
1 голос
/ 19 июля 2010

Я пытаюсь добавить процент к текстовой области в Java. Он включает цикл, который определяет процент, а затем добавляет его в другой JFrame с текстовой областью в нем.

Класс "pro" просто имеет окно с JtextArea.

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

public void copy(File sourceLocation, File targetLocation) throws IOException {

  if (sourceLocation.isDirectory()) {
        if (!targetLocation.exists()) {
            targetLocation.mkdir();
        }

        String[] children = sourceLocation.list();
        for (int i=0; i<children.length; i++) {

            int length = children.length - 1;

            float percentage = (i/(float)length) *100;
            String d = percentage + "%" + " " + sourceLocation;
            System.out.println(percentage + "%" + " " + sourceLocation);

            pro.area.append(percentage + "\n");




            copy(new File(sourceLocation, children[i]),
                    new File(targetLocation, children[i]));
        }
    } else {

        InputStream in = new FileInputStream(sourceLocation);
        OutputStream out = new FileOutputStream(targetLocation);

        // Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        //pro.setVisible(false);
    }

}

1 Ответ

1 голос
/ 20 июля 2010

Графическая аномалия, вероятно, вызвана блокировкой потока отправки события .SwingWorker является предпочтительным подходом;но использование продолжений в качестве объектов является альтернативой, как показано здесь .

...