Java Swing метод Paint не вызывается - PullRequest
0 голосов
/ 13 ноября 2018

Я настроил этот действительно простой класс View, чтобы протестировать метод Paint из java swing. Однако я заметил, что, хотя я создаю экземпляр представления из другого класса и продолжаю вызывать метод обновления ниже, метод рисования никогда не выполняется. РЕДАКТИРОВАТЬ: я добавил код из основного и контроллера.

import java.awt.*;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class View extends JPanel {

    //Attributes
    private static int frameWidth = 500;
    private static int frameHeight = 500;
    private JFrame frame; // the frame
    private JPanel menu;
    private JPanel game;
    private JPanel summary;


    //Constructor
    public View(ControlListener controlListener) {
        this.frame = new JFrame();
        frame.setLayout(new GridLayout(3,1));
        frame.addKeyListener(controlListener);
        frame.setTitle("MyFrame");
        frame.setBackground(Color.blue);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(frameWidth, frameHeight);
        frame.getContentPane().setBackground(Color.blue);
        frame.setVisible(true);

    }

    //Methods
    public JFrame getFrame() {
        return frame;
    }

    public static int getFrameWidth() {
        return frameWidth;
    }

    public static int getFrameHeight() {
        return frameHeight;
    }

    //frame updater
    public void update() {
        frame.repaint();

    }

    @Override
    public void paint(Graphics g) {
        System.out.println("test");
    }

Отрывок из основного:

public static void main(String[] args) {
    Controller v = new Controller();
    v.start();
}

Фрагмент из контроллера:

public class Controller {

    //Attributes
    private Model model;
    private View view;


    //Constructor
    public Controller(){
        view = new View(controlListener);

    }

    //run 
    public void start(){
        run();
    }

    public void run(){

        while(true){
            view.update();
    }
}

1 Ответ

0 голосов
/ 13 ноября 2018

В JFrame никогда не добавляется экземпляр View, поэтому у Swing нет причин рисовать невидимый компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...