我刚刚开始在Processing中创建一个应用程序,当我使用BorderLayout.CENTER将PApplet对象放入JFrame时,我会遇到不可预测的行为。
PApplet的宽度比JFrame的宽度和高度小100。 在某些情况下,当我点击“运行”时,程序会填满屏幕并且运行非常顺利,但在其他运行中,PApplet从左上角开始,并在屏幕底部的100处留下间隙和左手边,并且相当迟钝。
如果我是诚实的,我不知道发生了什么。
以下是我使用的代码:
public class JCanvas extends PApplet {
/**
* PApplet method - performs all setup actions
*/
public void setup(){
size(1400,900,P3D);
background(80);
}
/**
* PApplet method - All drawing occurs here
*/
public void draw(){
background(80);
pushMatrix();
translate(mouseX,mouseY, -199);
fill(220,0,0);
box(120,500,90);
popMatrix();
}
}
public final class EuroViewer {
private final static int WIDTH = 1500;
private final static int HEIGHT = 1000;
private final static boolean RESIZABLE = false;
public static void main(String[] arguments){
final JFrame frame = new JFrame("Eurographics PApplet");
JCanvas sketchCanvas = new JCanvas();
frame.add( sketchCanvas );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setResizable(RESIZABLE);
frame.setLocationRelativeTo(null);
sketchCanvas.init();
frame.setVisible(true);
}
}
然后我尝试将 JFrame 替换为 awt.Frame ,因为Swing和awt之间存在一些稳定性问题(我之所以认为PApplet是建立的)在这个特殊情况下。
令人惊讶的是,Frame永远不会有任何延迟,这有点解决了这个问题。但是,我总是使用JFrame,任何GUI工作与容器等我总是使用Swing,所以我想知道是否有人可以分享他们的知识并解释发生了什么,以及是否有可能修理?这个问题。
感谢。
答案 0 :(得分:0)
不建议将Processing草图与Swing结合使用。很多次都报道了不可预知的行为。