Метод рисования не называется - PullRequest
0 голосов
/ 10 апреля 2019

После создания экземпляра в предыдущем кадре я пытаюсь создать фоновое изображение в следующем кадре, но в результате я только что увидел отлаженный результат и обнаружил, что метод рисования не был вызван. Из того, что я знаю, метод paint наследуется классом JFrame, и с помощью этой логики я сделал его переопределенным. Как я полагаю, причина произошедшей логической ошибки в том, что я использовал обработчик событий и сделал экземпляр в EventHandlerClass.

    if(e.getActionCommand().equals(ButtonTo))       
        if(idString.equals("USER"))
                {                       
                    {
                        if("1234".equals(pwSt))     
                        {
                            System.out.println("Wellcome");
                            if(gs==null)
                            {
                                gs=new GameStart();
                            }
                        }
                    else
                    {
                         System.out.println("Confirm your password");
                    }               
                    }           
                }

Это код, который при выполнении действия создает экземпляр (gs). После этого я заметил, что экземпляр был использован для создания нового каркаса консоли.

class GameStart extends JFrame {
    private Image screenImage;
    private Graphics screenGraphic;
    private Image introBackgroundImage;
    private ImageIcon img;

    GameStart()
    {
        JFrame jf=new JFrame("Game Set");
        jf.setBounds(300, 300, 400, 200);
        jf.setLayout(new BorderLayout());

        JButton bt1=new JButton("Start");
        JButton bt2=new JButton("Exit");    
        JPanel panel1=new JPanel();
        panel1.add(bt1);panel1.add(bt2);

        setContentPane(panel1);

        jf.add(panel1, BorderLayout.SOUTH);
        bt1.addActionListener(new Choice());
        bt2.addActionListener(new Choice());
        jf.setVisible(true);    
        img=new ImageIcon("./Images/backGroundImage.jpg");
        System.out.println("1");
    }

    public void paint(Graphics g) {
        screenImage=createImage(200, 200);  
        screenGraphic=screenImage.getGraphics();
        screenDraw(screenGraphic);
        g.drawImage(screenImage, 0, 0, null);
        System.out.println("2");
    }

    public void screenDraw(Graphics g) 
    {   
        this.repaint();
        System.out.println("3");
    }

Теперь, с созданием рамки и некоторых кнопок, я ожидаю показать все числа (1, 2, 3), которые указывают на результат, но только что сделал номер 1.

1 Ответ

0 голосов
/ 10 апреля 2019

В вашем коде есть некоторые ошибки, которые я вижу на первый взгляд:

  1. Вы расширяете JFrame, но не добавляете в него никаких дополнительных функций,см .: Расширяет JFrame и создает его внутри программы .Вместо этого создайте свой графический интерфейс для использования JPanel s и переопределите их paintComponent(...) метод, а не paint(...).

  2. Вы разрываете цепочку краски: Послевыполняя вышеуказанный пункт, в paintComponent() позвоните super.paintComponent(...)

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

...