2015-11-21 6 views
5

Ich versuche, eine Statusleiste am unteren Rand meines Bildschirms zu machen, aber das Fenster kann nicht weniger als 100 Pixel gemacht werden. Ich arbeite an der Verarbeitung von 3.0.1.Wie kann ich Fenster kleiner als 100 Pixel machen

Ich verwende den folgenden Code

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

void draw() { 
    background(128); 
} 

irgendwelche Ideen ??

Vielen Dank im Voraus

J!

Antwort

4

Wenn Sie die surface.setResizable(true); Anweisung entfernen, können Sie die Leinwand 300x20 ist zu sehen, aber das Fenster ist nicht:

Processing 3.0 sketch window

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:

PApplet resized window

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); 
} 
+0

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

+1

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). –

+0

Danke! Das werde ich mir merken! – Johntor

Verwandte Themen