处理具有不可预测的行为

时间:2012-01-19 19:55:04

标签: java applet jframe processing

我刚刚开始在Processing中创建一个应用程序,当我使用BorderLayout.CENTER将PApplet对象放入JFrame时,我会遇到不可预测的行为。

PApplet的宽度比JFrame的宽度和高度小100。 在某些情况下,当我点击“运行”时,程序会填满屏幕并且运行非常顺利,但在其他运行中,PApplet从左上角开始,并在屏幕底部的100处留下间隙和左手边,并且相当迟钝。

如果我是诚实的,我不知道发生了什么。

这是顺利运行的结果:

Wanted behvaiour

这是不可预知的:

Unwanted behaviour

以下是我使用的代码:

PApplet子类

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,所以我想知道是否有人可以分享他们的知识并解释发生了什么,以及是否有可能修理?这个问题。

感谢。

1 个答案:

答案 0 :(得分:0)

不建议将Processing草图与Swing结合使用。很多次都报道了不可预知的行为。