Как сделать окно размером менее 100 пикселей

Я пытаюсь сделать строку состояния в нижней части экрана, но окно не может быть сделано менее 100 пикселей. Я работаю над обработкой 3.0.1.

Я использую следующий код

void setup() {
 surface.setResizable(true);
 surface.setSize(300, 20);
 surface.setLocation(displayWidth-300, displayHeight-50);
 }
void draw() {
 background(128);
}

любые идеи

Спасибо всем заранее

J!

1 ответ

Если вы удалите оператор surface.setResizable(true);, вы можете видеть, что холст 300x20, но в окне нет:

В обработке 3.0 есть много изменений, включая рефакторинг кода окна, который ранее полагался на пакет Java AWT.

Просматривая текущий исходный код, вы можете увидеть:

static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;

определенный в строка PSurface.java 34 и используется через PSurfaceAWT.java для обеспечения этих минимальных размеров окна.

Пытаясь получить доступ к холсту Surface (println(surface.getNative());), я могу его указать как processing.awt.PSurfaceAWT$SmoothCanvas, и я вижу класс SmoothCanvas с getFrame() метод, который выглядит многообещающим, но, похоже, он не доступен (хотя это общедоступный метод открытого класса).

Итак, по умолчанию, в настоящее время, я бы сказал, что изменение размера окна будет меньше 128х128 в обработке 3.x - это не выход.

Если обработка 3.x и меньшее окно является обязательным, возможно, вы можете настроить исходный код самостоятельно и перекомпилировать основную библиотеку, но это может укусить вас позже, когда у вас есть несколько проектов обработки с несколькими версиями основной библиотеки обработки, Я бы не рекомендовал обыскивать основную библиотеку.

Если вы можете использовать Обработку 2.x для своего проекта, можно сделать размер окна менее 100 пикселей:

import java.awt.Dimension;
int w = 300;
int h = 20;
int appBarHeight = 23;//this is on OSX, on Windows/Linux this may be different
void setup() {
 size(w, h);
 frame.setResizable(true);
}
void draw() {
 if (frame.getHeight() != h+appBarHeight){//wait for Processing to finish setting up it window dimensions (including minimum window dimensions)
 frame.setSize(w,h+appBarHeight);//set your dimensions
 }
 background(128);
}

licensed under cc by-sa 3.0 with attribution.