图片未显示全屏

时间:2017-01-06 12:05:47

标签: java image frame fullscreen

我正在使用Eyetribe开展一个项目,我需要将图像全屏显示才能使其有效运行。 我目前正在绘图。但由于某种原因,它只绘制了我之前绘制的图像,而不是在主程序中使用它。 在我的测试程序中,我刚刚制作了一个方法,我在绘制图像以查看它是否有效。它工作得很好。 然后我写了一个主要程序,我绘制图像,出于某种原因,它只显示我使用我的测试程序绘制的图像。之前我认为没有足够的时间来渲染,因为我在一秒钟内画了22次。但现在我只绘制一次,然后再不触及绘图方法。但它似乎仍然只显示我之前绘制的图像。此外,在我的主程序中,我使用Eyetribe,每秒更新至少22次。这可能是它不画画的原因吗?

更新:要解决上述问题,我现在正在使用paintComponent。我现在只是在图像之间切换问题。在方法下面,最初调用showFrame来绘制。然后我按下右箭头时使用switchImageTest来切换图像。在密钥监听器方法中,我基本上更新了图像索引并调用了switchImageTest。任何人都可以指出我正确的方向,为什么它不起作用?

我用来绘制的方法如下:

图像是我想要绘制的图像。

最初调用以构建框架/标签等的方法。

public void showFrame(int imageIndex) throws IOException{
    System.out.println("Does it come here");
    if(testImagesList != null){
        //img = new ImageIcon(testImagesList.get(0));
        //BufferedImage img1 = ImageIO.read(new File(testImagesList.get(0)));
    }
    jF.setUndecorated(true);
    //System.out.println(testImagesList.get(0));
    System.out.println(testImagesPath);
    System.out.println("AbsolutePath=");
    System.out.println(testImagesPath.get(0));
    //System.out.println(testImagesA);
    //jF.add(new PanelForImages((new File(testImagesAbsoluteFilePaths.get(imageIndex)))));
    jF.add(new Component() {
      //  BufferedImage img = ImageIO.read(file);

        //BufferedImage img1 = ImageIO.read(new File(testImagesPath.get(1)));



        BufferedImage img3 = ImageIO.read(new File(testImagesAbsoluteFilePaths.get(imageIndex))); 
        @Override
        public void paint(Graphics g) {
            super.paint(g);

            g.drawImage(img3, 0, 0, getWidth(), getHeight(), this);


        }
    });

    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice gs = ge.getDefaultScreenDevice();
    gs.setFullScreenWindow(jF);
    jF.validate();
}

我用来在图像之间切换的方法。我正在使用右箭头键切换,似乎工作正常。它只是我没有使用测试程序绘制的图像没有显示。

 public void switchImageTest(int imageIndex ) throws IOException{

    jF.add(new Component(){
        BufferedImage img = ImageIO.read(new File(testImagesAbsoluteFilePaths.get(imageIndex)));
        @Override
        public void paint(Graphics g){
            super.paint(g);
            g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
            repaint();
        }
    });
    //GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    //GraphicsDevice gs = ge.getDefaultScreenDevice();
    //gs.setFullScreenWindow(jF);
    //jF.repaint();
    jF.revalidate();
}

我希望这篇文章对每个人都有意义。如果有任何疑问,请告诉我,我会尽力解释一下。

更新:管理解决它,下面是更新的代码。

public class PanelForImages extends JPanel{

 private BufferedImage image;

 public PanelForImages(File image) throws IOException{
    //this.image = image;
    //URL resource = getClass().getResource("so2.jpg");
    this.image = ImageIO.read(image);

 }

 @Override
 public void paintComponent(Graphics g){
    //super.paint(g);
    //super.paintComponents(g);
    super.paintComponent(g);
    //g.drawImage(image, 3, 4, this);
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    g.drawString("HELLOOOOOOOOOOOOOOOOOOOOOOOO", 400, 400);
    //repaint();

 }
}

显示帧和切换图像的功能

public void showFrame(int imageIndex) throws IOException{
        System.out.println("Does it come here");
        if(testImagesList != null){
            //img = new ImageIcon(testImagesList.get(0));
            //BufferedImage img1 = ImageIO.read(new File(testImagesList.get(0)));
        }
        jF.setUndecorated(true);
        //System.out.println(testImagesList.get(0));
        System.out.println(testImagesPath);
        System.out.println("AbsolutePath=");
        System.out.println(testImagesPath.get(0));
        //System.out.println(testImagesA);
        //jF.add(new PanelForImages((new File(testImagesAbsoluteFilePaths.get(8)))));
        jF.add(panelForImages);


        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice gs = ge.getDefaultScreenDevice();
        gs.setFullScreenWindow(jF);
        jF.validate();
    }

public void switchImageTest(int imageIndex ) throws IOException{

     //jF.add(new PanelForImages(new      File(testImagesAbsoluteFilePaths.get(imageIndex))));
     jF.remove(panelForImages);
     panelForImages.removeAll();
     File currentImage = new   File(testImagesAbsoluteFilePaths.get(imageIndex));
     this.panelForImages = new PanelForImages(currentImage);
     jF.add(panelForImages);

     jF.validate();
}

0 个答案:

没有答案