JFrame не отображает все изображения в полноэкранном режиме

Итак, я работаю над проектом, который требует переключения между изображениями. Изображения должны быть в полноэкранном режиме. Кажется, есть 2 проблемы, с которыми я сталкиваюсь. Во-первых, с переключением изображений. Когда я переключаюсь между изображениями, некоторые изображения выглядят нормально, когда я переключаюсь. Другие, кажется, не появляются на экране вообще. Я просто, кажется, получаю пустую рамку. Во-вторых, кажется, что правильный ключ работает каждый раз, но для здравого смысла я положил отпечатки системы. Системные выходы не отображаются на консоли, но переключают изображения в кадре (хотя иногда я получаю пустой кадр). Любые предложения / решения будут высоко оценены.

Примечание о коде: у меня есть отрисовочные строки для проверки координат. Я использую Eyetribe, так что просто чтобы показать, где я смотрю. Кажется, что шнурок работает отлично. Кроме того, я вызываю switchImage очень быстро, почти 22 раза в секунду. Может ли это быть проблемой? Хотя это заставляет меня задуматься, почему это работает для некоторых изображений, а не для других. ОБНОВЛЕНИЕ: проблема, кажется, в g.drawImage. Кажется, он не рисует некоторые изображения, но я не могу понять, почему это происходит. В настоящее время это мой код для полноэкранных изображений.

public void showFrame(){

    //jL -> JLabel
    //jF -> JFrame
    //jP -> Panel
    jF.setTitle("Test");
    jF.setUndecorated(true);
    jF.setResizable(false);
    jF.setVisible(true);

    Toolkit tk = Toolkit.getDefaultToolkit();
    int xsize = (int)tk.getScreenSize().getWidth();
    int ysize = (int)tk.getScreenSize().getHeight();
    jF.setSize(xsize, ysize);
    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    if(testImagesList != null){
        img = new ImageIcon(testImagesList.get(0));
    }
    Image imag = img.getImage();
    bi = new BufferedImage(1280, 800, BufferedImage.TYPE_INT_ARGB);
    Graphics g = bi.createGraphics();
    g.drawImage(imag, 0, 0, 1280, 800, null);

    ImageIcon newIcon = new ImageIcon(bi);
    jL.setIcon(newIcon);
    jF.add(jL);
    jP.add(jL);
    jF.add(jP);
    jF.validate();  
}

Для переключения между изображениями я использую ключевой слушатель. KeyListner вызывает код изображения коммутатора. Оба даны ниже.

public void switchImage(ImageIcon image, JFrame jF, JLabel jL, JPanel jP, GazeData gazeData){
    Image imag = image.getImage();

    BufferedImage bi = new BufferedImage(1280, 800, BufferedImage.TYPE_INT_ARGB);
    Graphics g = bi.getGraphics();

    g.drawImage(imag, 0, 0, 1280, 800, null);
    g.setColor(Color.black);
    int x = (int) gazeData.smoothedCoordinates.x;
    int y = (int) gazeData.smoothedCoordinates.y;
    Font font = new Font("Verdana", Font.BOLD, 16);
    g.setFont(font);


    String text = "hello(" + gazeData.smoothedCoordinates.x + gazeData.smoothedCoordinates.y + ")";
    g.drawString(text, x, y);
    g.drawString("Fixed Coordinate at (400, 500)", 400, 500);
    ImageIcon newIcon = new ImageIcon(bi);
    jL.setIcon(newIcon);
    jP.add(jL);
    jF.validate();  
}

@Override
public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if(e.getKeyCode() == KeyEvent.VK_RIGHT){
        //  j.switchImage(image, jF, jL, jP, gazeData);
        System.out.println("RightDetected");
        imageIndex++;

        ImageIcon newImage = new ImageIcon(imageList.get(imageIndex));

        if(newImage != null){
            this.currentImage = newImage;
            System.out.println("IMAGE SWITCHED!!!! Current Image="+imageList.get(imageIndex));
            j.switchImage(currentImage, j.jF, j.jL, j.jP, currentGazeData);


        }

    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос