Java:使绘图程序全屏运行

Java:使绘图程序全屏运行,java,fullscreen,draw,stddraw,Java,Fullscreen,Draw,Stddraw,我使用的是一个小的图形程序。当前它在窗口中运行。我想使其可扩展和全屏。我怎样才能做到这一点?我查看了全屏独家模式,但不太确定如何使用它。我尝试将它添加到我的程序中,但我似乎无法将绘图窗口链接到全屏框架,这会导致一个窗口带有程序,并打开一个空白的全屏。除非有必要,否则我不想使用Draw类更改整个代码。关于如何使绘图窗口全屏显示有什么想法吗 下面是一个代码示例,尽管我认为它不会有多大帮助: Draw draw = new Draw("TapReact"); int canvasWidth = 135

我使用的是一个小的图形程序。当前它在窗口中运行。我想使其可扩展和全屏。我怎样才能做到这一点?我查看了全屏独家模式,但不太确定如何使用它。我尝试将它添加到我的程序中,但我似乎无法将绘图窗口链接到全屏框架,这会导致一个窗口带有程序,并打开一个空白的全屏。除非有必要,否则我不想使用Draw类更改整个代码。关于如何使绘图窗口全屏显示有什么想法吗

下面是一个代码示例,尽管我认为它不会有多大帮助:

Draw draw = new Draw("TapReact");
int canvasWidth = 1350;
int canvasHeight = 800;
draw.setCanvasSize(canvasWidth, canvasHeight);
以及具有全屏独占模式的全屏实现的示例:

GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();
Window myWindow = new Window(new Frame());
graphicsDevice.setFullScreenWindow(myWindow);   
如何链接
myWindow
绘制
,以便两者显示相同的内容

非常感谢您的帮助,谢谢


编辑:我已经尝试在
Draw.java
中实现
getFrame()
方法,并将该框架与
新窗口(Draw.getFrame())
一起使用。我还尝试在
Draw.java
中实现一个
setFullScreen()
方法,但也没有成功。

更新了2020-03-11

在Draw.java中:

    private boolean isFullscreen = false;

  /**
  *  Sets the undecorated fullscreen mode.
  */
  public void setFullscreen() {
      isFullscreen = true;
      frame.dispose();
      frame = new JFrame();
      frame.setUndecorated(true);
      frame.setResizable(false);
      frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
      frame.setVisible(true);
      width = frame.getWidth();
      height = frame.getHeight();
      init();
  }
  private void init() {
        if (frame != null) frame.setVisible(false);
        if (!isFullscreen) frame = new JFrame();  // This is the modified line
        offscreenImage = new BufferedImage(2*width, 2*height, BufferedImage.TYPE_INT_ARGB);
        onscreenImage  = new BufferedImage(2*width, 2*height, BufferedImage.TYPE_INT_ARGB);
        offscreen = offscreenImage.createGraphics();
        .........
此外,还需要修改Draw.java中的
init()
方法的第二行:

    private boolean isFullscreen = false;

  /**
  *  Sets the undecorated fullscreen mode.
  */
  public void setFullscreen() {
      isFullscreen = true;
      frame.dispose();
      frame = new JFrame();
      frame.setUndecorated(true);
      frame.setResizable(false);
      frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
      frame.setVisible(true);
      width = frame.getWidth();
      height = frame.getHeight();
      init();
  }
  private void init() {
        if (frame != null) frame.setVisible(false);
        if (!isFullscreen) frame = new JFrame();  // This is the modified line
        offscreenImage = new BufferedImage(2*width, 2*height, BufferedImage.TYPE_INT_ARGB);
        onscreenImage  = new BufferedImage(2*width, 2*height, BufferedImage.TYPE_INT_ARGB);
        offscreen = offscreenImage.createGraphics();
        .........
然后在你的测试课上:

    Draw draw = new Draw("TapReact");
    draw.setFullscreen();
    while (true) {
      if (draw.isMousePressed() &&
          draw.mouseX() > 0.4 &&
          draw.mouseX() < 0.6 &&
          draw.mouseY() > 0.4 &&
          draw.mouseY() < 0.6) {
        draw.setPenColor(Draw.RED);
      } else {
        draw.setPenColor(Draw.BLACK);
      }
      draw.filledSquare(0.5, 0.5, 0.1);
    }
Draw Draw=新绘制(“TapReact”);
draw.setFullscreen();
while(true){
if(draw.isMousePressed()&&
draw.mouseX()>0.4&&
draw.mouseX()<0.6&&
draw.mouseY()>0.4&&
draw.mouseY()<0.6){
draw.setPenColor(draw.RED);
}否则{
draw.setPenColor(draw.BLACK);
}
绘制填充正方形(0.5,0.5,0.1);
}

谢谢!这正是我下一步想要尝试的,但我的Draw.java类不再编译,即使我没有做任何更改。我甚至从普林斯顿大学网站上重新下载了它。在Draw.java中创建setFullScreenMode()也没有帮助。我现在只有一个屏幕,但没有显示任何内容。更新的答案也会导致一个空白屏幕(但没有在后台打开工作窗口)好的,添加` draw.getFrame().setExtendedState(JFrame.MAXIMIZED_两者);保持一个固定的画布大小(1350800)对于组合窗口和绘制对象都很有效——但是单击侦听器不再正常工作。此外,1350 x 800画布显示在全屏窗口内(您可以看到不同的白色阴影),感谢您的帮助!我下载了Draw.java,并设法让它在有或没有窗口装饰的情况下全屏显示。你需要窗户装饰吗?您能否提供一个无法使用单击侦听器的示例?