我尝试在屏幕底部制作状态栏,但窗口不能小于100像素.我正在处理Processing 3.0.1.
我使用以下代码
void setup() {
surface.setResizable(true);
surface.setSize(300, 20);
surface.setLocation(displayWidth-300, displayHeight-50);
}
void draw() {
background(128);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗??
谢谢大家
J 1
如果删除该surface.setResizable(true);语句,您可以看到画布是 300x20,但窗口不是:
Processing 3.0 有很多变化,包括重构窗口代码,该代码以前依赖于 Java 的 AWT 包。
浏览当前的源码,可以看到:
static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;
Run Code Online (Sandbox Code Playgroud)
在PSurface.java 第 34 行中定义并在PSurfaceAWT.java 中使用,以确保这些最小窗口尺寸。
尝试访问 Surface 的画布 ( println(surface.getNative());) 我可以将其列为,processing.awt.PSurfaceAWT$SmoothCanvas并且可以看到带有 getFrame() 方法的 SmoothCanvas 类,该方法看起来很有希望,但似乎无法访问(即使它是公共类的公共方法) )。
因此,默认情况下,此时,我认为在Processing 3.x 中将窗口大小调整为小于128x128 是不行的。
如果必须使用Processing 3.x 和更小的窗口,则可以自己调整源代码并重新编译核心库,但是当您拥有多个具有多个版本的处理核心库的处理项目时,这可能会在以后困扰您。我通常不建议修改核心库。
如果您可以在项目中使用Processing 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's window dimensions (including minimum window dimensions)
frame.setSize(w,h+appBarHeight);//set your dimensions
}
background(128);
}
Run Code Online (Sandbox Code Playgroud)