Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задержка выполнения действий 
:(
    Опции темы
Animator
Дата 20.4.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



Помогите реализовать задачу. Есть окошко внизу которого имеются строчки которые 
указывают род задач.

Алгоритм

Пишем: Загрузка файла: файл1.txt
ждём 2сек
загружаем
если не смогли загрузить Пишем: "Ошибка загрузки файла", выходим
если смогли Пишем: Загрузка файла: файл2.txt
ждём 2 сек
загружаем
если не смогли загрузить Пишем: "Ошибка загрузки файла", выходим
если смогли выполняем другие действия.
Выполнили -> пишем: Готов.

Вобщем задача реализовать задержку при выполнении задач разного рода.
Пробовал использовать timer но не смог применить к разным задачам.




PM MAIL ICQ   Вверх
powerOn
Дата 20.4.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Приостанавливай текущий поток через Thread.sleep(); если задержка нужна.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Animator
Дата 20.4.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



powerOn, а  как быть если всё происходит в дилоговом окне.
Он после метода  вообще перестаёт реагировать. smile 
А мне нужно в него ещё строчки писать.
 А код после setVisible(true) начинает выполнятся после закрытия JDialog.

Наверное предоставлю исходник.
Это окно аутентификации пользователя в которое я решил впихнуть ещё и статус загрузки файлов.
Сорри реально много левого кода для понимания проблемы. Просто некогда переделывать.

Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package infobase;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

/**
 *
 * @author AndrewJobs
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         
        globalLookAndFeelChange();
      ConnectionDialog dial = new ConnectionDialog(null);
     
    
              
      // dial.setDefaultCloseOperation(dial.DISPOSE_ON_CLOSE);
        
       
      
    }
    private static void globalLookAndFeelChange()
    {
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
           // SwingUtilities.updateComponentTreeUI(this); 
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

}
class ConnectionDialog extends JDialog
{
    public ConnectionDialog(JFrame owner)
    {
        super(owner);
        initComponents();
        
//        loadProps();
        setSize(normalSize);
        Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation(size.height / 2 - normalSize.height / 2, 
                size.width / 2 - normalSize.width / 2);
        setTitle(title);
        setModal(true);
        
        setAlwaysOnTop(true);
        setResizable(false);
        setVisible(true);
       
        doResouceOperations();
        
        
       
        
    }
   
    public void setLabel(boolean err, String label)
    {
        if(err)
        {
            errLabelColor = Color.RED;
            errLabel.setText("Ошибка: "+label);
        }
        else
        {
            errLabelColor = new Color(51, 102, 0);
            errLabel.setText("Загрузка файла: "+ label);
        }
        
        errLabel.setForeground(errLabelColor);
        
    }
    private void doResouceOperations()
    {
        Properties dBProp = new Properties();
        connDialLoad = new ResourceLoader(this,dBProp,"database");
        Properties infoProp = new Properties();
        connDialLoad = new ResourceLoader(this,infoProp,"info");
        
    }
    public void followError(Exception e)
    {
        errPanel.addMouseListener(new PanelMouseHandler());
        
        
        errText.setText("");
        errText.append("" + e);
        
        
    }
     private void sleep(int millis)
      {
          try{
         Thread.sleep(millis);}
         catch(InterruptedException ignore){}
      }
    
    private void initComponents()
    {
        errPanel = new javax.swing.JPanel();
        errLabel = new javax.swing.JLabel();
        managePanel = new javax.swing.JPanel();
        userLabel = new javax.swing.JLabel();
        OK = new javax.swing.JButton();
        Cancel = new javax.swing.JButton();
        passField = new javax.swing.JPasswordField();
        userName = new javax.swing.JTextField();
        passLabel = new javax.swing.JLabel();
        savePass = new javax.swing.JCheckBox();
        textScroll = new javax.swing.JScrollPane();
        errText = new javax.swing.JTextArea();
        
        normalSize = new Dimension(360,185);
        largeSize = new Dimension(360,300);

       
        setBounds(new java.awt.Rectangle(0, 0, 350, 290));

        errPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        errLabel.setFont(new java.awt.Font("Tahoma", 1, 11));
        errLabel.setForeground(new java.awt.Color(51, 102, 0));
        errLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        errLabel.setText("Готов");

        javax.swing.GroupLayout errPanelLayout = new javax.swing.GroupLayout(errPanel);
        errPanel.setLayout(errPanelLayout);
        errPanelLayout.setHorizontalGroup(
            errPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(errPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(errLabel)
                .addContainerGap(284, Short.MAX_VALUE))
        );
        errPanelLayout.setVerticalGroup(
            errPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(errLabel)
        );

        managePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Менеджер учётных записей", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11)));

        userLabel.setText("Имя пользователя:");

        OK.setText("ОК");
        

        Cancel.setText("Отмена");

        passLabel.setText("Пароль:");

        savePass.setText("Сохранить пароль");

        javax.swing.GroupLayout managePanelLayout = new javax.swing.GroupLayout(managePanel);
        managePanel.setLayout(managePanelLayout);
        managePanelLayout.setHorizontalGroup(
            managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(managePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(passLabel, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(userLabel, javax.swing.GroupLayout.Alignment.TRAILING))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, managePanelLayout.createSequentialGroup()
                        .addComponent(OK)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(Cancel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                    .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(passField, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(userName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)))
                .addContainerGap())
            .addGroup(managePanelLayout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addComponent(savePass)
                .addGap(209, 209, 209))
        );

        managePanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {Cancel, OK});

        managePanelLayout.setVerticalGroup(
            managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(managePanelLayout.createSequentialGroup()
                .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(userLabel)
                    .addComponent(userName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(managePanelLayout.createSequentialGroup()
                        .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(passLabel)
                            .addComponent(passField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(managePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(OK)
                            .addComponent(Cancel)))
                    .addComponent(savePass)))
        );

        errText.setColumns(20);
        errText.setRows(5);
        textScroll.setViewportView(errText);
        Font f = new Font("Serif",Font.PLAIN,14);
        errText.setFont(f);
        errText.setEditable(false);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(errPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(textScroll, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)
                    .addComponent(managePanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 332, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(managePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(errPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(textScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

    }

    private javax.swing.JButton Cancel;
    private javax.swing.JButton OK;
    private javax.swing.JLabel errLabel;
    private javax.swing.JPanel errPanel;
    private javax.swing.JTextArea errText;
    private javax.swing.JPanel managePanel;
    private javax.swing.JPasswordField passField;
    private javax.swing.JLabel passLabel;
    private javax.swing.JScrollPane textScroll;
    private javax.swing.JLabel userLabel;
    private javax.swing.JTextField userName;
    private javax.swing.JCheckBox savePass;
    
    
         
  
    private String title;
    private Color errLabelColor;
    private Dimension normalSize, largeSize;
    private ResourceLoader connDialLoad;
    
    private class PanelMouseHandler extends MouseAdapter
    {
        public void mousePressed(MouseEvent e)
        {
           
            cursPos = e.getPoint();
            if(errPanel.contains(cursPos))
               errPanel.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED));           
            
           
        }
        public void mouseReleased(MouseEvent e)
        {
            errPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
            
            if(getSize().equals(normalSize))
            {
               
                setSize(largeSize);
            }
            else
                setSize(normalSize);
        } 
        private Point cursPos;
    }
    
   
}
class ResourceLoader
{
    public ResourceLoader(ConnectionDialog connDial, Properties props, String filename)
    {
        
        IOException ex = loadProps(props, filename);
        if (ex == null) 
            connDial.setLabel(false, filename);
        else
        {
            connDial.setLabel(true,"Не могу открыть: " + filename);
            connDial.followError(ex);
        }
        System.out.println("1");
        try
        {
            Thread.sleep(2000);
        }
        catch(InterruptedException ignore){}
        System.out.println("2");
        
    }
    private IOException loadProps(Properties props, String filename)
    {
        try
        {
            FileInputStream in = new
                    FileInputStream(filename+".properties");
            props.load(in);
            in.close();
        }
        catch(IOException e)
        {
            return e;
        }
        return null;
    }
   

}



Кстати у Хорстмана пишется что методы компонентов Swing должны вызыватся только из потока 
доставки событий. А так как на практике организовать такой поток нереально, то он вызывает метод 
actionPerformed() таймера Swing который периодически опрашивает соответствующий поток и обновляет окошко.

В том то и вопрос, безопасно ли воспользоватся просто Thread.sleep(); ?
PM MAIL ICQ   Вверх
powerOn
Дата 20.4.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Много букф - а толку мало. Я вот так и не понял зачем тебе задержка нужна.

Цитата(Animator @  20.4.2008,  21:26 Найти цитируемый пост)
Кстати у Хорстмана пишется что методы компонентов Swing должны вызыватся только из потока доставки событий. А так как на практике организовать такой поток нереально, то он вызывает метод 
actionPerformed() таймера Swing который периодически опрашивает соответствующий поток и обновляет окошко.

Ниасилил поток мысли.  smile

Я ничего не понял из твоего поста. Без обид.




--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
math64
Дата 21.4.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Код

void updateLabel(final JLabel label, final String text) {
  SwingUtilities.invokeLater(new Runnable { void run() { label.setText(text)}});
}
 
PM   Вверх
Invisible
Дата 26.3.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 26.5.2005

Репутация: нет
Всего: нет



Прошу прощения что подымаю старую тему, у меня появилась похожая задача.

К примеру мне нужно вывести 2 сообщения в консоль с задержкой в 10 секунд.

System.out.printlnn("1");
//тут задержка в 10 секунд
System.out.println("2");

Скажите мне возможно ли это сделать впринцепе?? Каким образом, не используя потоков. Код должен быть максимально простым. В этой же теме что-то говориться о классе Timer, подойдет ли он для моей задачи?
PM MAIL   Вверх
NeoNYura
Дата 26.3.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Код

System.out.printlnn("1");
Thread.sleep(10000);
System.out.println("2");

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.