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