2015-11-21 18 views
5

Cerco di creare una barra di stato nella parte inferiore dello schermo, ma la finestra non può essere inferiore a 100 pixel. Sto lavorando su Processing 3.0.1.Come posso rendere la finestra più piccola di 100 pixel

Io uso il seguente codice

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

void draw() { 
    background(128); 
} 

tutte le idee ??

Grazie a tutti in anticipo

J!

risposta

4

Se si rimuove la dichiarazione surface.setResizable(true);, si può vedere la tela è 300x20, ma la finestra non è:

Processing 3.0 sketch window

Processing 3.0 ha un sacco di changes compreso il refactoring del codice a finestre, che in precedenza si basava sul pacchetto AWT di Java.

Attraversando il codice sorgente di corrente, si può vedere:

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

definita PSurface.java line 34 e utilizzato attraverso fuori PSurfaceAWT.java garantire queste dimensioni minime della finestra.

Cercando di accedere tela della superficie (println(surface.getNative());) posso che sia elencato come processing.awt.PSurfaceAWT$SmoothCanvas e posso vedere un SmoothCanvas class with a getFrame() method, che sembra essere molto promettente, ma che non sembra essere accessibile (anche se si tratta di un metodo pubblico di una classe pubblica) .

Quindi, per impostazione predefinita, in questo momento, direi che ridimensionare la finestra per essere inferiore a 128x128 in Processing 3.x è un no go.

Se l'elaborazione 3.xe una finestra più piccola è un must, potrebbe essere possibile modificare il codice sorgente da soli e ricompilare la libreria principale, ma questo potrebbe morderti in seguito quando si hanno più progetti di elaborazione con più versioni del nucleo di elaborazione biblioteca. Non consiglierei di armeggiare normalmente con la libreria di base.

Se è possibile utilizzare 2.x di elaborazione per il progetto, rendendo le dimensioni della finestra più piccola di 100 pixel è realizzabile:

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

Grazie! Ho avuto gli stessi pensieri con te. Per prima cosa ho pianificato di ricostruire la libreria principale, ma ora penso che sia meglio andare alla versione 2.x. C'è un altro problema con frame.setUndecorated (true) nella versione 3.x per rendere il mio pannello senza frame della finestra. – Johntor

+1

Non sarà possibile usare '' 'setUndecorated (true)' '' al frame di elaborazione esistente poiché è già visualizzabile (e getterà un '' 'IllegalComponentStateException'''), ma è possibile creare il proprio separato' L'istanza di frame '' java.awt.Frame''' si può '' 'setUndecorate (true)' '' a, quindi aggiungere il componente PApplet a quello (dal frame esistente di Processing). Per maggiori dettagli dare un'occhiata a [questa risposta] (http://stackoverflow.com/questions/23260640/java-processing-2-0-using-eclipse-switching-from-window-to-fullscreen-and-ba/ 23297157 # 23297157). –

+0

Grazie! Lo terrò a mente! – Johntor

Problemi correlati