Wenn Sie die surface.setResizable(true);
Anweisung entfernen, können Sie die Leinwand 300x20 ist zu sehen, aber das Fenster ist nicht:
Verarbeitung 3.0 viele changes hat einschließlich der Windowing-Code Refactoring, die zuvor verlassen auf Javas AWT-Paket.
der aktuellen Quellcode Wenn man durch, können Sie sehen:
static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;
in PSurface.java line 34 definiert und verwendet durch aus PSurfaceAWT.java diese Mindestfensterabmessungen zu gewährleisten.
Der Versuch, die Leinwand Surface zuzugreifen (println(surface.getNative());
) Ich kann es aufgeführt als processing.awt.PSurfaceAWT$SmoothCanvas
und ich kann ein SmoothCanvas class with a getFrame() method zu sehen, die vielversprechend aussieht, aber das scheint nicht zugänglich zu sein (auch wenn es sich um eine öffentliche Methode einer öffentlichen Klasse ist) .
Also standardmäßig, würde ich sagen, die Größe des Fensters kleiner als 128x128 in Verarbeitung 3.x ist ein Nein.
Wenn Verarbeitung 3.x und kleineres Fenster ein Muss ist, könnte es möglich sein, den Quellcode selbst zu optimieren und die Kernbibliothek neu zu kompilieren, aber das kann Sie später bei mehreren Verarbeitungsprojekten mit mehreren Versionen des Processing-Kerns beißen Bibliothek. Ich würde nicht empfehlen, normalerweise an der Core-Bibliothek herumzubasteln.
Wenn Sie Verarbeitung 2.x für Ihr Projekt verwenden können, so dass die Fenstergröße kleiner als 100 Pixel ist erreichbar:
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's window dimensions (including minimum window dimensions)
frame.setSize(w,h+appBarHeight);//set your dimensions
}
background(128);
}
Thank you! Ich hatte die gleichen Gedanken mit dir. Zuerst plante ich, die Kernbibliothek neu zu erstellen, aber jetzt denke ich, dass es besser ist, zur Version 2.x zu gehen. Es gibt ein anderes Problem, das mit frame.setUndcorated (true) in Version 3.x aufkam, um mein Panel ohne Fensterrahmen zu machen. – Johntor
Sie können '' 'setUndcorated (true)' '' nicht zum bestehenden Processing-Frame verwenden, da es bereits anzeigbar ist (und '' '' IllegalComponentStateException'''), aber Sie können Ihr eigenes separates 'erstellen '' java.awt.Frame''' Frame-Instanz können Sie '' 'setzenUndecorate (true)' '' auf, dann fügen Sie die PApplet-Komponente zu diesem (aus dem bestehenden Rahmen von Processing). Für weitere Details schauen Sie sich [diese Antwort] an (http://stackoverflow.com/questions/23260640/java-processing-2-0-using-eclips-switching-from-window-to-fullscreen-and-ba/ 23297157 # 23297157). –
Danke! Das werde ich mir merken! – Johntor