Снова. Снова этот repaint() - Java
Формулировка задачи:
Всем привет. Сколько дней уже пытаюсь, нечего не выходит. Метод repaint не срабатывает. Как я понимаю, ошибка появляется в методе redraw класса draw. Ниже приведу укороченный код программы.
Надеюсь кто-нибудь поможет мне. Заранее спасибо.
Самый главный файл:
Window:
Tick:
Draw:
Сейчас в консоль выводит:
Если бы работал repaint выводило бы что-то наподобие этого:
public class main { private static int star[][] = new int[50][2]; private static int colstar = 0; public static void main(String[] args) { new window().window(); new tick(star, colstar); } }
public class window extends JFrame{ public void window(){ setTitle("Mega Stars"); setBounds(100,100,500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setBackground(new Color(50,50,50)); JPanel panel = new draw(); add( panel ); setVisible(true); } }
public class tick{ private int[][] star; private int colstar; private Timer t; public tick(int[][] starIn, int colstarIn){ star = starIn; colstar = colstarIn; t = new Timer(1000, new timer()); t.start(); } void draw(){ new draw().redraw(star, colstar); } class timer implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { draw(); } } }
public class draw extends JPanel{ private int[][] draw; private int coldraw; private Thread call; private int i = 0; public void redraw(int star[][], int colstar){ draw = star; coldraw = colstar; repaint(); System.out.println("redraw"); } public void paintComponent(Graphics g){ super.paintComponent(g); g.clearRect(0, 0, 500, 500); g.setColor(new Color(255,255,255,200)); g.fillRect(i, 15, 3, 3); System.out.println("Paint"); } }
Paint Paint Paint redraw redraw redraw ...
Paint Paint Paint redraw Paint redraw Paint redraw Paint ...
Решение задачи: «Снова. Снова этот repaint()»
textual
Листинг программы
public class Trololo { private static int star[][] = new int[50][2]; private static int colstar = 0; public static void main(String[] args) { Window w = new Window(star, colstar); new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("timer tick"); w.repaint(); } }).start(); } } class Window extends JFrame { Window(int[][] starIn, int colstarIn) { setTitle("Mega Stars"); setBounds(100, 100, 500, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setBackground(new Color(50, 50, 50)); add(new MyCoolPanel(starIn, colstarIn)); setVisible(true); } } class MyCoolPanel extends JPanel { private int[][] starIn; private int colstarIn; private int i = 0; private final Color myColor = new Color(255, 255, 255, 200); MyCoolPanel(int[][] starIn, int colstarIn) { this.starIn = starIn; this.colstarIn = colstarIn; } public void paintComponent(Graphics g) { super.paintComponent(g); g.clearRect(0, 0, 500, 500); g.setColor(myColor); g.fillRect(i, 15, 3, 3); System.out.println("Paint"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д