Java Mode version sketch for Processing 3 & 4: ![]()
/**
* Processing Java Mode Swing Demo (v1.0.2)
* GoToLoop (2024/Jun/03)
*
* https://Discourse.Processing.org/t/
* swing-components-in-default-processing-window-py5/9
*/
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.JSlider;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import processing.awt.PSurfaceAWT.SmoothCanvas;
static final String TITLE = "Choose color:", DIAM = "Diameter: ";
Color fill = Color.GREEN;
JSlider slider;
JLabel label;
int cx, cy;
void settings() {
size(600, 660);
noLoop();
}
void setup() {
fill(fill.getRGB());
cx = width >> 1;
cy = height >> 1;
slider = new JSlider(0, width - 60, cx);
slider.setBounds(180, 20, 200, 24);
slider.addChangeListener(slideChange);
slider.setToolTipText("circle diameter");
(label = new JLabel(DIAM + cx)).setBounds(75, 20, 80, 24);
final JButton btn = new JButton("Color");
btn.setBounds(400, 20, 80, 24);
btn.addActionListener(btnAction);
final PSurface window = getSurface();
window.setTitle("Processing Java Mode Swing Demo");
final SmoothCanvas canvas = (SmoothCanvas)window.getNative();
canvas.setBounds(0, 60, width, height - 60);
final Frame frame = canvas.getFrame();
frame.add(slider);
frame.add(label);
frame.add(btn);
slider.repaint();
label.repaint();
btn.repaint();
}
void draw() {
background(0320);
circle(cx, cy, slider.getValue());
}
void mouseWheel(final MouseEvent e) {
slider.setValue(slider.getValue() - e.getCount() * 10);
}
final ChangeListener slideChange = new ChangeListener() {
final void stateChanged(final ChangeEvent __) {
label.setText(DIAM + slider.getValue());
redraw();
}
};
final ActionListener btnAction = new ActionListener() {
final void actionPerformed(final ActionEvent __) {
final Color chosenColor = JColorChooser.showDialog(null, TITLE, fill);
if (chosenColor == null) return;
fill((fill = chosenColor).getRGB());
redraw();
}
};
P.S.: The sketch can be refactored to be less verbose for Processing 4.