правильное использование событий и слушателей с помощью awt и setVisible () - PullRequest
0 голосов
/ 31 января 2011

Ниже у меня есть два события, которые должны происходить через определенные промежутки времени.но, как ни странно, это просто не происходит.

class MyFrame extends JFrame implements ActionListener
{
private ActionListener listener;
private Timer t1;

private ActionListener listener2;
private Timer t2;

private String recentUpdate = "NULL";
private String recentPrinted ="NULL";

public MyFrame()
{
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();// gets the maximum size of the screen 
    setSize(d.width,(d.height/100)*10);//sets it to max. need to change this

    // this shit find the max size of screen and puts it bottom left
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice defaultScreen = ge.getDefaultScreenDevice();
    Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds();
    int x = (int)rect.getMinX();
    int y = (int)rect.getMaxY()-getHeight();
    setLocation(x,y-30);
    setTitle("ALERT::OUTAGE");
    MyPanel panel = new MyPanel();
    add(panel);

    listener = this;            //I THINK THIS just says wait for the timer
    t1 = new Timer(50000,listener); // time for each repaint
    t1.start();                 //go

    listener2 = this;           
    t2 = new Timer(10000,listener2); //time to wait before setting visible again
    t2.start();         

    }

public void actionPerformed(ActionEvent event)
{
repaint();
}

public void newUpdate(ActionEvent q)
{
    // TODO Auto-generated method stub
    this.setVisible(true);
    System.out.println("Woopee!");
    //checkForNewUpdate();
}

По сути, у меня есть программа, которая берет текст с веб-страницы и отображает его в виде выделенного шрифта по всей странице.он перерисовывается и перемещается на 5 точек влево каждый раз, что позволяет ему выглядеть плавно в анимации.

Когда рамка закрыта, она скрыта на заднем плане.hide_on_close при запуске checkForUPdate, если есть обновление, страница снова появится.

Проблема, которую я имею сейчас, состоит в том, что я могу иметь 2 события и 2 таймера.но я уверен, что они работают.Как я могу установить его так, чтобы repaint срабатывал при событии и checkforUpdate () происходил в ActionEvent q

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

необходимо для определения слушателей.я не знал, как объединить таймеры с событиями

    listener = new ActionListener()
    {
        public void actionPerformed(ActionEvent event) 
        {
            checkForNewUpdate();
        }           
    };
    //I THINK THIS just says wait for the timer
    t1 = new Timer(3000,listener); // time for each repaint
    t1.start();                 //go



    listener2 = new ActionListener()
    {
          public void actionPerformed(ActionEvent q) 
          {repaint();}
    };
    t2 = new Timer(50,listener2); //time to wait before setting visible again
    t2.start();
}
public void actionPerformed(ActionEvent event)
{
    checkForNewUpdate();
    System.out.println("Woopee!");
    /**System.out.println(t2.getActionListeners().toString());*/ // just for testing
}
0 голосов
/ 31 января 2011

Оба таймера в итоге запускают один и тот же метод actionPerformed.В вашем коде нет ничего для вызова newUpdate.

...