Перерисовка окна в таймере - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д