2015-11-21 11 views
5

Ekranımın altında bir durum çubuğu oluşturmaya çalışıyorum, ancak pencere 100 pikselden az olamaz. İşlem 3.0.1 üzerinde çalışıyorum.100 pikselden daha küçük pencereyi nasıl yapabilirim

Aşağıdaki kodu

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

void draw() { 
    background(128); 
} 

herhangi bir fikir kullanmak ??

Teşekkür ederiz tüm peşin:

J!

cevap

4

Eğer surface.setResizable(true); ifadeyi çıkarırsanız, tuval 300x20 olduğunu görebilirsiniz, ama pencere değil:

Processing 3.0 sketch window

İşleme 3.0 changes bir çok önceden dayanıyordu pencere kodu üstlenmeden dahil sahiptir Java'nın AWT paketinde. Geçerli kaynak kodu geçiyor

, şunları görebilirsiniz:

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

PSurface.java line 34 tanımlanan ve bu minimum pencere boyutlarını sağlamak için dışarı PSurfaceAWT.java içinden kullandı. Ben processing.awt.PSurfaceAWT$SmoothCanvas olarak listelenir ve (bir kamu sınıfının bir kamu yöntem olsa bile) ben umut verici görünüyor bir SmoothCanvas class with a getFrame() method görebilirsiniz, ama o erişilebilir olması görünmüyor yüzey en tuval ( println(surface.getNative());) erişmeye çalışıyor

.

Varsayılan olarak, şu anda varsayılan olarak, İşlem 3.x'de pencerenin 128x128'den daha küçük olması için yeniden boyutlandırılması gerektiğini söyleyebilirim.

Eğer 3.x ve daha küçük bir pencere işleniyorsa, kaynak kodunu kendiniz düzeltmek ve çekirdek kitaplığını yeniden derlemek mümkün olabilir, ancak bu işlem İşleme çekirdeğinin birden çok sürümüyle birden çok İşleme projesi olduğunda sizi daha sonra ısırtabilir kütüphane. Çekirdek kütüphanesi ile normal olarak tinkering tavsiye etmem. Eğer pencere boyutunu daha küçük 100 piksel hale projeniz için İşleme 2.x kullanabiliyorsa

ulaşılabilir olduğunu:

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

teşekkür ederiz! Seninle aynı düşüncelerim vardı. Öncelikle çekirdek kütüphanesini yeniden kurmayı planladım ama şimdi 2.x sürümüne geçmenin daha iyi olacağını düşünüyorum. Panelimi pencere çerçevesi olmadan yapmak için sürüm 3.x'te frame.setUndecorated (true) ile gelen başka bir sorun var. – Johntor

+1

Zaten görüntülenebilir olduğundan (çünkü '' IllegalComponentStateException'' '), mevcut İşleme çerçevesine '' setUndecorated (true) '' 'seçeneğini kullanamazsınız, ancak kendi ayrı oluşturabilirsiniz. '' java.awt.Frame''' frame örneğini '' 'SetUndecorate (true)' '' 'için' '' '' '' '' '' '' a, sonra da (İşlemenin mevcut çerçevesinden) için PApplet bileşenini ekleyin. Daha fazla ayrıntı için [bu cevap] 'a bakın (http://stackoverflow.com/questions/23260640/java-processing-2-0-using-eclipse-switching-from-window-to-fullscreen-and-ba/ 23297157 # 23297157). –

+0

Teşekkür ederiz! Bunu aklımda tutacağım! – Johntor