I downloaded Processing from https://processing.org/.
How can I use Processing in my Java application? I want to draw stuff depending on the logic in my Java application. To avoid the drawing in Java I want to use Processing instead.
I downloaded Processing from https://processing.org/.
How can I use Processing in my Java application? I want to draw stuff depending on the logic in my Java application. To avoid the drawing in Java I want to use Processing instead.
Piece of cake,
First,
In your IDE (eg Netbeans) first include the processing jar in your build, put it some place your program can find it. For example if you use maven just add the dependancy:
<dependency>
<groupId>org.processing</groupId>
<artifactId>org.processing.core</artifactId>
<version>2.1.1</version>
</dependency>
Second,
Add a main class to your program this can be very simple. You just need to reference the class where your code will be:
public class Application {
public static void main(String[] args) {
new Application();
}
public Application() {
init();
}
private void init() {
Visualization.main("me.qcarver.ballsack.Visualization");
}
}
Lastly,
Add your new class with the package name as you gave in quotes above. The only thing to remember is this class must (1) import processing.core.PApplet (2) extend PApplet (3) implement public void draw and public void setup
Eg:
package me.qcarver.ballsack
public class Visualization extends PApplet{
public void setup() {
size(500,400);
background(grayValue);
}
public void draw(){
elipse(200,200,50,50);
}
}
Snippets above are based on this example project which runs Processing.org code in a java application.
Visualization needs to be a toplevel class or static inner class (so that it has a no-args constructor -- this won't work if Visualization is a non-static inner class), and the correct syntax for calling the PApplet is Visualization.main(new String[]{Visualization.class.getName()});, i.e. it needs to be wrapped in new String[]{}. Also, (not directly related to the question, but) if calling size(xsize, ysize, PDF, filename), this will cause the PDF file to be written an infinite number of times -- you need to disable frame refresh when writing PDFs.If anyone has trouble with the earlier code example and the latest Processing libraries - I've updated for v3.2.1 and uploaded the working code:
https://github.com/thomasbratt/ProcessingInIntellij
package com.github.thomasbratt.processingtest;
import processing.core.PApplet;
public class Visualization extends PApplet {
public static void main(String[] args) {
PApplet.main("com.github.thomasbratt.processingtest.Visualization");
}
@Override
public void settings() {
size(640, 480);
}
@Override
public void setup() {
fill(120,50,240);
}
@Override
public void draw(){
ellipse(width/2,height/2,second(),second());
}
}
pom.xml:
<dependency>
<groupId>org.processing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
Turns out, when you download Processing in core/library there is Core.jar. If you add that to your class path you can do it. Here is a skeleton for you to use:
package com.company;
import processing.core.PApplet;
/* "Main" can be anything */
public class Main
// Enable Processing features here
extends PApplet {
public static void main(String[] args) {
// Run the app
PApplet.main("com.company.Main");
}
// This actualy would be setup() in Processing IDE
public void settings() {
size(500,400);
}
public void draw() {
// All Processing functions and constants can be used here
ellipse(200,200,50,50);
}
}
If you want to use Processing functions like mouseClicked, use this skeleton in the class:
public void RANDOM_PROCESSING_FUNCTION() {
// Stuff you want to do
}
I'd suggest you learn how to do your drawing in Java, see for example: http://docs.oracle.com/javase/tutorial/2d/ Using processing in java is not really going to make it simple.