Java: заставить Draw-программу работать в полноэкранном режиме - PullRequest
0 голосов
/ 09 марта 2020

Я использую класс Draw. java из библиотеки Принстона для небольшой графической программы. В настоящее время он работает в окне. Я хочу сделать его масштабируемым и полноэкранным. Как я могу этого достичь? Я посмотрел в полноэкранный эксклюзивный режим, но не совсем уверен, как его использовать. Я попытался добавить его в свою программу, но я не могу связать Draw-Window с полноэкранным фреймом, что приводит к одному окну с программой и пустому полноэкранному открытию. Я не хочу менять весь мой код, используя класс Draw, если это не необходимо. Любые идеи о том, как сделать Draw-Window полноэкранным?

Вот пример кода, хотя я не думаю, что это сильно поможет:

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, чтобы оба отображали одно и то же?

Справка будет очень признателен, спасибо.

Редактировать: Я уже пытался реализовать метод getFrame() в Draw.java и использовать этот кадр с new Window(draw.getFrame()). Я также попытался реализовать метод setFullScreen() в Draw.java, который также не работал.

1 Ответ

0 голосов
/ 09 марта 2020

ОБНОВЛЕНО 2020-03-11

В розыгрыше. 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();
  }

Также необходимо изменить вторую строку init() метод в Draw. java:

  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);
    }
...