Перерисовка окна в таймере - 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();
}
}