Перерисовка окна в таймере - Java

Узнай цену своей работы

Формулировка задачи:

Нужно сделать что бы окно перерисовывалось постоянно с определенным интервалом. Окно сделано с помощью JFrame(если не правильно выражаюсь поправьте, изучать java начал недавно) В основном классе в методе main создал таймер, создал таск для него Перерисовку окна делаю с помощью revalidate(), repaint() Программа запускается, окно создается но рисование не происходит Подскажите в чем проблема Первый файл
import java.util.*;
 
public class Main {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //GraphicsMain app = new GraphicsMain();
        
        Timer t = new Timer();
        TimerTask tt = new TimerTask(){
            GraphicsMain app = new GraphicsMain();
                        
            @Override
            public void run()
            {   
                app.revalidate();
                app.repaint();
            }           
        };
        t.schedule(tt, 0, 100);
    }
}
Второй файл
import java.awt.*;
import javax.swing.*;
import java.util.Random;
 
public class GraphicsMain extends JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    public GraphicsMain() {
        JFrame frame = new JFrame("simpleApp");
        frame.setSize(1024,768);
        frame.setVisible(true);
    }
 
    @Override
    public void paint(Graphics g) {
        Random r = new Random();
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.black);
        g2d.drawLine(r.nextInt(1024), r.nextInt(768), r.nextInt(1024)+400, r.nextInt(768)+400); 
    }      
 }

Решение задачи: «Перерисовка окна в таймере»

textual
Листинг программы
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.*;
 
import java.util.Random;
 
public class GraphicsMain extends JFrame {
    
    private static final long serialVersionUID = 1L;
    static JFrame frame = new JFrame("simpleApp");
    
    public GraphicsMain() {
        
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1024,768);
                          
        frame.setVisible(true);
     
    }
 
     
 } 
 
    class Panel extends JPanel {
 
 
        public void paintComponent(Graphics g) {
                    
            Random r = new Random();
                Graphics2D g2d = (Graphics2D) g;
                g2d.setColor(Color.black);
                g2d.drawLine(r.nextInt(1024), r.nextInt(768), r.nextInt(1024)+400, r.nextInt(768)+400); 
              
        }
            
        }
    
    class Action implements ActionListener {
 
        @Override
        public void actionPerformed(ActionEvent e) {
            
                Panel p = new Panel();
               GraphicsMain.frame.add(p);
               p.revalidate();
               p.repaint();
            
            
            
        } 
        
        
        
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5